Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Me rritjen e përvojës në IT, fillon të vëresh se sistemet kanë karakterin e tyre. Ato mund të jenë të qeta, të heshtura, të çmendura, të ashpra. Ato mund të tërheqin ose të largojnë. Në një mënyrë apo tjetrën, duhet të "kesh biseda" me to, të manovrosh midis "kërcënimeve" dhe të ndërtojnë lidhjet e tyre të bashkëpunimit.

Kështu që na është dhënë nderi të ndërtojmë një platformë cloud, dhe për këtë na duhej të "bindim" disa nën-sisteme që të punonin me ne. Fatmirësisht, ne kemi "gjuhën API", duar të drejta dhe një mori entuziazmi.

Në këtë artikull nuk do të kemi të bëjmë me ashpërsinë teknike, por do të përshkruajmë problemet me të cilat u përballëm gjatë ndërtimit të cloud-it. Kam vendosur ta përshkruaj rrugën tonë në formën e një fantazie teknike të lehtë mbi mënyrën se si kërkuam gjuhën e përbashkët me sistemet dhe çfarë dolën prej saj.

Mirë se vini nën artikull.

Fillimi i rrugës

Disa kohĂ« mĂ« parĂ«, ekipi ynĂ« u ngarkua me detyrĂ«n — tĂ« nisĂ« njĂ« platformĂ« cloud pĂ«r klientĂ«t tanĂ«. NĂ« dispozicion ishim mbĂ«shtetje nga drejtuesit, burime, njĂ« grumbull hardware dhe liri nĂ« zgjedhjen e teknologjive pĂ«r realizimin e pjesĂ«s softuerike tĂ« shĂ«rbimit.

Ishte gjithashtu një sërë kërkesash:

  • shĂ«rbimi iu nevojitet njĂ« panel i lehtĂ« pĂ«r t'u pĂ«rdorur;
  • platforma duhet tĂ« integrohet nĂ« sistemin ekzistues tĂ« faturimit;
  • pjesa software-hardware: OpenStack + Tungsten Fabric (Open Contrail), tĂ« cilat inxhinierĂ«t tanĂ« mĂ«suan tĂ« "gatuajnĂ«" mjaft mirĂ«.

Për mënyrën se si u mblodh ekipi, u zhvillua ndërfaqja e përdoruesit dhe u morën vendime dizajni, do të flasim herën tjetër, nëse komuniteti i Habrës do të ketë interes.
Instrumentet që vendosëm të përdorim:

  • Python + Flask + Swagger + SQLAlchemy — njĂ« grup standard Python;
  • Vue.js pĂ«r frontend-in;
  • ndĂ«rveprimin midis komponentĂ«ve dhe shĂ«rbimeve vendosĂ«m ta bĂ«jmĂ« me Celery mbi AMQP.

Për të parashikuar pyetjet rreth zgjedhjes së Python, shpjegoj. Gjuha ka marrë një pozitë në kompaninë tonë dhe rreth saj është ndërtuar një kulturë e vogël, por megjithatë e rëndësishme. Prandaj, u vendos të fillonim ndërtimin e shërbimit pikërisht në të. Veçanërisht, sepse shpejtësia e zhvillimit në këto detyra shpesh është vendimtare.

Pra, le të fillojmë njohjen tonë.

Bill i heshtur — faturimi

Me kĂ«tĂ« djalĂ« ishim njohur prej kohĂ«sh. Ai gjithmonĂ« qĂ«ndronte afĂ«r dhe numĂ«ronte diçka nĂ« heshtje. NdonjĂ«herĂ« na dĂ«rgonte kĂ«rkesat e pĂ«rdoruesve, lĂ«shonte faturat e klientĂ«ve, menaxhonte shĂ«rbimet. NjĂ« djalĂ« i zakonshĂ«m punĂ«tor. MegjithatĂ«, kishte vĂ«shtirĂ«si. Ai Ă«shtĂ« i heshtur, ndonjĂ«herĂ« i menduar dhe shpesh — nĂ« mendimet e tij.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Faturimi është sistemi i parë me të cilin u përpoqëm të bëjmë miqësi. Dhe vështirësia e parë na u paraqit gjatë përpunimit të shërbimeve.

Për shembull, kur krijohet ose fshihet, detyra shkon në radhën e brendshme të faturimit. Kjo është mënyra se si realizohet sistemi i punës asinkrone me shërbimet. Për të përpunuar tipet tona të shërbimeve, na duhej të "ngjitim" detyrat tona në këtë radhë. Dhe këtu u përballëm me problemin: mungesa e dokumentacionit.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Sipas përshkrimit të API-së software, zgjidhja e këtij problemi është e mundur, por nuk kishim kohë të merremi me inxhinierinë e zëvendësimit, prandaj e nxorrëm logjikën jashtë dhe organizuam një radhë detyrash mbi RabbitMQ. Operacioni mbi shërbimin inicohet nga klienti nga paneli i tij personal, i mbështjellë në një "detyrë" Celery në backend dhe ekzekutohet në anën e faturimit dhe OpenStack-it. Celery lejon menaxhimin mjaft të rehatshëm të detyrave, organizimin e ripërsëritjeve dhe ndjekjen e gjendjes. Më shumë mbi "selarin" mund të lexoni, për shembull, këtu.

Gjithashtu, faturimi nuk e ndalonte projektin, në të cilin kishin mbaruar fondet. Duke biseduar me zhvilluesit, zbuluam se gjatë llogaritjeve të statistikave (dhe na duhet të realizojmë pikërisht një logjikë të tillë) ka një lidhje të komplikuar rregullash ndalimi. Por këto modele nuk përputhen mirë me realitetin tonë. Po ashtu, e realizuam përmes detyrave në Celery, duke marrë në anën e backend-it logjikën e menaxhimit të shërbimeve.

Të dy problemet e mësipërme çuan në atë që kodi u fry më tepër dhe ne në të ardhmen do të na duhet të merremi me rrethin e tij, për të nxjerrë logjikën e punës me detyrat në një shërbim të veçantë. Ne gjithashtu duhet të ruajmë një pjesë të informacionit rreth përdoruesve dhe shërbimeve të tyre në tabelat tona, për të mbështetur këtë logjikë.

Një tjetër problem është heshtja.

Për disa kërkesa në API, Bill heshtur përgjigjet "Ok". Kështu ka ndodhur, kur ne bëmë regjistrimet e pagesave të premtuara gjatë testit (për të cilin do të flasim më vonë). Kërkesat u ekzekutuan saktë dhe ne nuk pamë gabime.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Na duhej të studionim logët, duke punuar me sistemin përmes UI. Doli se faturimi vetë kryen kërkesa të tilla, duke ndryshuar skopin për një përdorues të caktuar, për shembull, admin, duke e kaluar atë në parametrin su.

Në përgjithësi, megjithëse ka disa mungesa në dokumentacion dhe disa gabime të vogla në API, gjithçka ka shkuar mjaft mirë. Loget mund të lexohen edhe nën ngarkesë të madhe, për sa kohë që kupton si janë strukturuar dhe çfarë duhet të kërkosh. Struktura e bazës së të dhënave është e ndërlikuar, por mjaft logjike dhe në disa aspekte mjaft të tërheqëse.

Pra, përmbledhjeve, problemet kryesore që na kanë dalë përpara gjatë fazës së ndërveprimit lidhen me veçoritë e implementimit të sistemit të caktuar:

  • veçori tĂ« pa dokumentuara, tĂ« cilat na ndikonin nĂ« mĂ«nyrĂ« tĂ« ndryshme;
  • kodet e mbyllura (blloku Ă«shtĂ« shkruar nĂ« C++), si pasojĂ« — pamundĂ«sia pĂ«r tĂ« zgjidhur problemin 1 nĂ« asnjĂ« mĂ«nyrĂ« tjetĂ«r veç 'metodĂ«s sĂ« provave dhe gabimeve'.

Fatmirësisht, produkti ka një API mjaft të gjerë dhe ne integrojmë në panelin tonë personal sistemet e mëposhtme:

  • moduli i mbĂ«shtetjes teknik — kĂ«rkesat nga paneli personal ‘prokurohen’ nĂ« bllokimin e faturave nĂ« mĂ«nyrĂ« tĂ« dukshme pĂ«r klientĂ«t e shĂ«rbimit;
  • moduli financiar — lejon lĂ«shimin e faturave pĂ«r klientĂ«t aktualĂ«, tĂ« bĂ«jĂ« shkarkime dhe tĂ« formojĂ« dokumente pagese;
  • moduli i menaxhimit tĂ« shĂ«rbimeve — pĂ«r tĂ«, na duhej tĂ« implementonim njĂ« trajtues tĂ« ri. ZgjerueshmĂ«ria e sistemit na ndihmoi dhe ne ‘mĂ«suam’ Billie pĂ«r njĂ« lloj tĂ« ri shĂ«rbimesh.
    Na duhej tĂ« punonim, por nĂ« njĂ« farĂ« mĂ«nyre, mendoj se me Billie do t’i biem nĂ« pĂ«rputhje.

ShĂ«titjet nĂ« fushat tungsten — Tungsten Fabric

Fushat tungsten, tĂ« mbushura me qindra kabuj qĂ« kalojnĂ« mijĂ«ra bit-e informacioni. Informacioni mbledhĂ«t nĂ« ‘paketa’, analizohet, duke ndĂ«rtuar rrugĂ« tĂ« ndĂ«rlikuara, si me magji.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Kjo Ă«shtĂ« mbretĂ«ria e sistemit tĂ« dytĂ«, me tĂ« cilin duhej tĂ« bashkĂ«punonim — Tungsten Fabric (TF), i njohur mĂ« parĂ« si OpenContrail. Detyra e tij Ă«shtĂ« tĂ« menaxhojĂ« pajisjet rrjetĂ«rore, duke ofruar njĂ« abstraksion softuerik pĂ«r ne, si pĂ«rdorues. TF Ă«shtĂ« SDN, inkorporon logjikĂ«n e ndĂ«rlikuar tĂ« punĂ«s me pajisjet rrjetĂ«rore. PĂ«r teknologjinĂ« vetĂ« ka njĂ« artikull tĂ« mirĂ«, pĂ«r shembull, kĂ«tu.

Sistemi është i integruar me OpenStack (për të do të flasim më poshtë) përmes një plani të Neutron.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk
Ndërveprimi i shërbimeve OpenStack.

Këtë sistem na e prezantuan djemtë nga departamenti i operacioneve. Ne përdorim API-në e sistemit për të menaxhuar rrjetin tonë të shërbimeve. Nuk kemi pasur probleme të mëdha ose shqetësime këtu (nuk do marr përsipër të flas për djemtë nga OE), megjithatë ka pasur disa situata komike gjatë ndërveprimit.

E para dukej kĂ«shtu: komandat qĂ« kĂ«rkonin tĂ« nxirrnin njĂ« sasi tĂ« madhe tĂ« dhĂ«nash nĂ« konsolĂ«n e instancĂ«s gjatĂ« lidhjes pĂ«rmes SSH thjesht ‘bllokonin’ lidhjen, ndĂ«rkohĂ« qĂ« pĂ«rmes VNC gjithçka funksiononte normalisht.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

PĂ«r ata qĂ« nuk e njohin problemin, kjo duket mjaft qesharake: ls /root funksionon siç duhet, ndonĂ«se, pĂ«r shembull, top ‘ngrihet’ deri nĂ« bllokim. FatmirĂ«sisht, ne kishim hasur nĂ« probleme tĂ« ngjashme mĂ« parĂ«. Kjo u zgjidh me tunimin e MTU-sĂ« nĂ« rrugĂ«n nga nodet e llogaritjes deri te ruterat. PĂ«r ta thĂ«nĂ« ndryshe, kjo nuk ishte as njĂ« problem pĂ«r TF.

Problemi tjetĂ«r na priste pas kthesĂ«s. NĂ« njĂ« moment ‘tĂ« mrekullueshĂ«m’ magia e rrugĂ«zimit kishte zhdukur, aq thjesht. TF ndali menaxhimin e rrugĂ«zimit nĂ« pajisjet.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Ne punuam me OpenStack nga niveli admin dhe mĂ« pas kaluam nĂ« nivelin e pĂ«rdoruesit tĂ« nevojshĂ«m. SDN, duket se ‘kap’ skopin e pĂ«rdoruesit me tĂ« cilin veprohet. Çështja Ă«shtĂ« se ky llogari admini pĂ«rdoret pĂ«r lidhjen mes TF dhe OpenStack. NĂ« hapin e kalimit tek pĂ«rdoruesi ‘magjia’ humbiste. U zgjidh tĂ« hapim njĂ« llogari tĂ« veçantĂ« pĂ«r punĂ« me sistemin. Kjo lehtĂ«soi punĂ«n, pa prishur funksionalitetin e integrimit.

Forma tĂ« silikonit — OpenStack

Një krijesë silikoni në formën e çuditshme jeton afër fushave tungsten. Më shumë duket si një fëmijë gjigant që me një gjest mund të na shkatërrojë, por nuk lëshon asnjë agresivitet të dukshëm. Nuk shfaq frikë, por përmasat e tij ngjallin shqetësim. Ashtu si edhe kompleksiteti i asaj që ndodh rreth tij.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

OpenStack është thelbi i platformës sonë.

OpenStack ka disa nĂ«n-sisteme, nga tĂ« cilat ne pĂ«r momentin pĂ«rdorim mĂ« aktivisht Nova, Glance dhe Cinder. Çdo njĂ«ra prej tyre ka API tĂ« saj. Nova pĂ«rgjigjet pĂ«r burimet e llogaritjes dhe krijimin e instancave, Cinder — pĂ«r menaxhimin e volumĂ«ve dhe imazheve tĂ« tyre, Glance — shĂ«rbimi i imazheve, i cili menaxhon shabllonet e OS dhe metainformacionin pĂ«r to.

Çdo shĂ«rbim aktivizohet nĂ« njĂ« kontenier, dhe brokeri i mesazheve Ă«shtĂ« ‘krolja e bardhë’ — RabbitMQ.

Ky sistem na ka sjellë më shumë shqetësime të papritura.

Dhe problemi i parë nuk vonoi të shfaqej, kur përpiqeshim të lidhnim një volum shtesë me serverin. API i Cinder refuzonte kategorikisht të realizonte këtë detyrë. Më saktë, nëse besojmë OpenStack, lidhja vendoset, megjithatë brenda serverit virtual pajisja e diskut mungon.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

Ne vendosëm t'i shkojmë një rruge tjetër dhe kërkuam të njëjtin veprim nga Nova API. Rezultati - pajisja lidhet siç duhet dhe është e aksesueshme brenda serverit. Duket se problemi ndodh kur block-storage nuk përgjigjet Cinder-it.

Një sfidë tjetër na priste gjatë punës me diskët. Volume sistemik nuk arrinte të shkëputej nga serveri.

Gjithashtu, vetë OpenStack 'premton' se ka shkatërruar lidhjen dhe tani është e mundur të punosh me volume-n veçmas. Por API refuzonte kategorikisht të kryente operacione mbi diskun.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

KĂ«tu vendosĂ«m tĂ« mos luftojmĂ« shumĂ«, por tĂ« ndryshojmĂ« pikĂ«pamjen mbi logjikĂ«n e funksionimit tĂ« shĂ«rbimit. NĂ«se ka njĂ« instance, duhet tĂ« ketĂ« edhe njĂ« volume sistemik. Prandaj pĂ«rdoruesi pĂ«r momentin nuk mund tĂ« fshijĂ« ose tĂ« shkĂ«putĂ« disku ‘sistemik’ pa fshirĂ« ‘serverin’.

OpenStack është një kompleks sistemesh mjaft i komplikuar me logjikën e tij të ndërveprimit dhe API të ndërlikuar. Dokumentacioni mjaft i detajuar na ndihmon, dhe sigurisht, metoda e provave dhe gabimeve (ku ta di) është e nevojshme.

Testim fillestar

Testimi fillestar e bëmë në dhjetor të vitit të kaluar. Qëllimi kryesor ishte të kontrollonim në mënyrë operative projektin tonë nga ana teknike dhe nga ana e UX. Audienca u ftuar në mënyrë selektive dhe testimi ishte i mbyllur. Megjithatë, ne gjithashtu lanë mundësinë për të kërkuar akses për testim në faqen tonë.

Testi, natyrisht, nuk kaloi pa momente kurioze, pasi aventura jonë sapo kishte filluar.

Së pari, ne vlerësuam disi pasaktë interesin për projektin dhe na duhej të shtojmë node compute pikërisht në kohë gjatë testit. Një rast normal për klaster, megjithatë kishte edhe këtu nuanca. Në dokumentacionin për versionin specifik të TF, është e caktuar një version i veçantë i kernelit, mbi të cilin ishte testuar funksionimi me vRouter. Ne vendosëm të fillojmë node me kernela më të rinj. Si pasojë - TF nuk mori rrugët nga node. Duhej të rikthenim urgjentisht kernelin.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

NjĂ« tjetĂ«r incident Ă«shtĂ« lidhur me funksionalitetin e butonit ‘ndrysho fjalĂ«kalimin’ nĂ« panelin personal.

VendosĂ«m tĂ« pĂ«rdorim JWT pĂ«r tĂ« organizuar aksesin nĂ« panelin personal, pĂ«r tĂ« mos punuar me sesionet. PĂ«rderisa sistemet janĂ« shumĂ« tĂ« larmishme dhe tĂ« shpĂ«rndara, ne menaxhojmĂ« token-in tonĂ«, nĂ« tĂ« cilin ‘ndĂ«rtojmë’ sesionet nga faturimi dhe token nga OpenStack. Kur ndryshohet fjalĂ«kalimi, token-i, sigurisht, ‘skadon’, pasi tĂ« dhĂ«nat e pĂ«rdoruesit tashmĂ« nuk janĂ« tĂ« vlefshme dhe duhet tĂ« ri-lĂ«shohet.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk

E humbëm këtë moment nga vëmendja, dhe nuk kishim burime për të shkruar shpejt këtë pjesë. Na duhej të hiqnim funksionalitetin pikërisht para se të fillonim testin.
Në këtë moment, ne kryejmë logout për përdoruesin, nëse është ndryshuar fjalëkalimi.

Pavarësisht këtyre nuancave, testimi kaloi mirë. Gjatë disa javëve rreth 300 njerëz na vizituan. Na arriti të shihnim produktin nga këndvështrimi i përdoruesve, ta testonim në betejë dhe të mbledhim feedback të dobishëm.

Vazhdon

PĂ«r shumicĂ«n nga ne, ky Ă«shtĂ« projekti i parĂ« i kĂ«tij pĂ«rmasash. Ne nxorĂ«m disa mĂ«sime tĂ« vlefshme rreth mĂ«nyrĂ«s se si tĂ« punojmĂ« nĂ« ekip, tĂ« marrim vendime arkitekturore dhe dizajnuese. Si tĂ« integrojmĂ« sisteme tĂ« komplikuara me burime tĂ« pakta dhe t’i nxjerrim ato nĂ« prodhim.

Sigurisht, ka shumë për të punuar në lidhje me kodin dhe në ndërprerjet e integrimit të sistemeve. Projekti është mjaft i ri, por ne jemi plot ambicie për ta rritur atë në një shërbim të besueshëm dhe të përshtatshëm.

Sistemet tashmĂ« i kemi bindur. Billi angazhohet me pĂ«rllogaritjet, lĂ«shimin e faturave dhe kĂ«rkesat e pĂ«rdoruesve nĂ« dhomĂ«n e tij. ‘Magjia’ e fushave tĂ« tungstenit na ofron njĂ« lidhje tĂ« qĂ«ndrueshme. Dhe vetĂ«m OpenStack ndonjĂ«herĂ« bĂ«n kapriçio, duke thĂ«nĂ« diçka si ‘WSREP ende nuk e ka pĂ«rgatitur node pĂ«r pĂ«rdorim aplikacioni’. Por kjo Ă«shtĂ« njĂ« histori krejt tjetĂ«r...

Kohët e fundit filluam shërbimin.
Të gjitha detajet mund të mësoni në të internetit.

Historia e krijimit të shërbimit cloud, e shoqëruar me cyberpunk
Ekipi i zhvillimit CLO

Linqe të dobishme

OpenStack

Tungsten Fabric

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster