L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Hekk kif taħdem fl-IT, tibda tinnota li s-sistemi għandhom il-karattru tagħhom stess. Jistgħu jkunu flessibbli, siekta, eċċentrika, u poppa. Jistgħu jattiraw jew jirripellaw. B'xi mod jew ieħor, trid "tinnegozja" magħhom, timmanuvra bejn "iżvantaġġi" u tibni ktajjen tal-interazzjoni tagħhom.

Allura kellna l-unur li nibnu pjattaforma tas-sħab, u għal dan kellna bżonn "jipperswadu" koppja ta 'sottosistemi biex jaħdmu magħna. Fortunatament, għandna "lingwa API", idejn diretti u ħafna entużjażmu.

Dan l-artikolu mhux se jkun teknikament iebes, iżda se jiddeskrivi l-problemi li ltqajna magħhom waqt li nibnu l-cloud. Iddeċidejt li niddeskrivi t-triq tagħna fil-forma ta’ fantasija teknika ħafifa dwar kif fittixna lingwa komuni b’sistemi u x’ħarġu minnha.

Merħba għall-qattus.

Il-bidu tat-triq

Xi żmien ilu, it-tim tagħna kien inkarigat li jniedi pjattaforma tal-cloud għall-klijenti tagħna. Kellna appoġġ ta 'ġestjoni, riżorsi, munzell ta' ħardwer u libertà fl-għażla ta 'teknoloġiji biex nimplimentaw il-parti tas-softwer tas-servizz.

Kien hemm ukoll numru ta’ rekwiżiti:

  • is-servizz jeħtieġ kont personali konvenjenti;
  • il-pjattaforma trid tkun integrata fis-sistema eżistenti tal-kontijiet;
  • softwer u ħardwer: OpenStack + Tungsten Fabric (Open Contrail), li l-inġiniera tagħna tgħallmu "issajjar" pjuttost tajjeb.

Aħna ngħidulek ħin ieħor dwar kif it-tim ġie mmuntat, l-interface tal-kont personali ġiet żviluppata u ttieħdu deċiżjonijiet ta 'disinn, jekk il-komunità ta' Habra tkun interessata.
L-għodod li ddeċidejna li nużaw:

  • Python + Flask + Swagger + SQLAlchemy - sett Python kompletament standard;
  • Vue.js għall-frontend;
  • Iddeċidejna li nagħmlu l-interazzjoni bejn il-komponenti u s-servizzi billi tuża Karfus fuq AMQP.

Waqt li antiċipa mistoqsijiet dwar l-għażla ta 'Python, ser nispjega. Il-lingwa sabet in-niċċa tagħha fil-kumpanija tagħna u madwarha żviluppat kultura żgħira, iżda xorta waħda. Għalhekk, ġie deċiż li jibda jinbena s-servizz fuqu. Barra minn hekk, il-veloċità tal-iżvilupp fi problemi bħal dawn ħafna drabi hija deċiżiva.

Allura, ejja nibdew il-familjarità tagħna.

Silent Bill - kontijiet

Ilna nafu lil dan il-bniedem għal żmien twil. Kien dejjem bilqiegħda ħdejni u fis-skiet jgħodd xi ħaġa. Xi drabi huwa għadda talbiet tal-utenti lilna, ħareġ fatturi tal-klijenti, u amministra servizzi. Bniedem ordinarju li jaħdem iebes. Veru, kien hemm diffikultajiet. Huwa sieket, kultant maħsub u ħafna drabi fuq moħħu stess.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Il-kontijiet hija l-ewwel sistema li ppruvajna nagħmlu ħbieb magħha. U l-ewwel diffikultà li ltqajna magħhom kienet meta nipproċessaw is-servizzi.

Pereżempju, meta tinħoloq jew titħassar, kompitu jidħol fil-kju tal-kontijiet intern. Għalhekk, tiġi implimentata sistema ta’ xogħol asinkroniku mas-servizzi. Biex nipproċessaw it-tipi ta 'servizz tagħna, kellna "npoġġu" l-kompiti tagħna f'dan il-kju. U hawn ilqajna bi problema: nuqqas ta’ dokumentazzjoni.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Ġġudikati mid-deskrizzjoni tal-API tas-softwer, għadu possibbli li ssolvi din il-problema, iżda ma kellniex ħin biex nagħmlu reverse engineering, għalhekk ħadna l-loġika barra u organizzajna kju tal-kompiti fuq RabbitMQ. Operazzjoni fuq servizz tinbeda mill-klijent mill-kont personali tiegħu, tinbidel f'"kompitu" Karfus fuq il-backend u titwettaq fuq in-naħa tal-kontijiet u OpenStack. Il-karfus jagħmilha pjuttost konvenjenti biex timmaniġġja l-kompiti, torganizza repetizzjonijiet u timmonitorja l-istatus. Tista 'taqra aktar dwar "karfus", pereżempju, hawn.

Barra minn hekk, il-kontijiet ma waqqafx proġett li spiċċat mingħajr flus. Meta nikkomunikaw mal-iżviluppaturi, sibna li meta nikkalkulaw l-istatistika (u għandna bżonn nimplimentaw eżattament din it-tip ta 'loġika), hemm interrelazzjoni kumplessa ta' regoli ta 'waqfien. Iżda dawn il-mudelli ma jaqblux tajjeb mar-realtajiet tagħna. Implimentajnaha wkoll permezz ta 'kompiti fuq Karfus, filwaqt li ħadna l-loġika tal-ġestjoni tas-servizz fuq in-naħa ta' backend.

Iż-żewġ problemi ta 'hawn fuq wasslu biex il-kodiċi jsir ftit minfuħ u fil-futur ikollna nirrefactorizzaw sabiex inċaqalqu l-loġika għax-xogħol mal-kompiti f'servizz separat. Għandna bżonn ukoll naħżnu xi informazzjoni dwar l-utenti u s-servizzi tagħhom fit-tabelli tagħna biex nappoġġjaw din il-loġika.

Problema oħra hija s-skiet.

Billy skiet iwieġeb "Ok" għal xi talbiet tal-API. Dan kien il-każ, pereżempju, meta għamilna ħlasijiet ta 'ħlasijiet imwiegħda matul it-test (aktar dwar dan aktar tard). It-talbiet ġew esegwiti b'mod korrett u ma rajna l-ebda żbalji.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Kelli nistudja r-zkuk waqt li naħdem mas-sistema permezz tal-UI. Irriżulta li l-kontijiet innifsu jwettaq talbiet simili, jibdel l-ambitu għal utent speċifiku, pereżempju, admin, jgħaddih fil-parametru su.

B'mod ġenerali, minkejja l-lakuni fid-dokumentazzjoni u d-difetti minuri tal-API, kollox mar pjuttost tajjeb. Iz-zkuk jistgħu jinqraw anke taħt tagħbija kbira jekk tifhem kif huma strutturati u x'għandek tfittex. L-istruttura tad-database hija mżejna, iżda pjuttost loġika u f'ċerti modi saħansitra attraenti.

Allura, biex niġbru fil-qosor, il-problemi ewlenin li ltqajna magħhom fl-istadju ta 'interazzjoni huma relatati mal-karatteristiċi ta' implimentazzjoni ta 'sistema speċifika:

  • "karatteristiċi" mhux dokumentati li affettwawna b'xi mod jew ieħor;
  • sors magħluq (il-kontijiet huwa miktub f'C++), bħala riżultat - huwa impossibbli li tissolva l-problema 1 b'xi mod ieħor għajr "prova u żball".

Fortunatament, il-prodott għandu API pjuttost estensiva u integrajna s-sottosistemi li ġejjin fil-kont personali tagħna:

  • modulu ta 'appoġġ tekniku - talbiet mill-kont personali tiegħek huma "prokurati" għall-kontijiet b'mod trasparenti għall-klijenti tas-servizz;
  • modulu finanzjarju - jippermettilek toħroġ fatturi lill-klijenti attwali, tagħmel tħassir u tiġġenera dokumenti tal-ħlas;
  • modulu ta 'kontroll tas-servizz - għal dan kellna nimplimentaw il-handler tagħna stess. L-espansibbiltà tas-sistema kellha f'idejna u aħna "għallimna" lil Billy tip ġdid ta 'servizz.
    Kienet daqsxejn ta’ battikata, imma b’xi mod jew ieħor, naħseb li jien u Billy se niftakru.

Mixi minn għelieqi tat-tungstenu - Tessili tat-Tungstenu

Qasam tat-tungstenu bit-tikek b'mijiet ta 'wajers, li jgħaddu eluf ta' bits ta 'informazzjoni permezz tagħhom. L-informazzjoni tinġabar f'"pakketti", parsed, bini ta 'rotot kumplessi, bħallikieku b'maġija.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Dan huwa d-dominju tat-tieni sistema li biha kellna nagħmlu ħbieb - Tungsten Fabric (TF), qabel OpenContrail. Il-kompitu tiegħu huwa li jimmaniġġja t-tagħmir tan-netwerk, li jipprovdi astrazzjoni tas-softwer lilna bħala utenti. TF - SDN, jiġbor il-loġika kumplessa ta 'ħidma ma' tagħmir tan-netwerk. Hemm artiklu tajjeb dwar it-teknoloġija nnifisha, pereżempju, hawn.

Is-sistema hija integrata ma 'OpenStack (diskuss hawn taħt) permezz tal-plugin Neutron.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk
Interazzjoni tas-servizzi OpenStack.

Il-guys mid-dipartiment tal-operazzjonijiet introduċewna għal din is-sistema. Aħna nużaw l-API tas-sistema biex niġġestixxu l-munzell tan-netwerk tas-servizzi tagħna. S'issa ma kkawżalna l-ebda problemi serji jew inkonvenjenzi (ma nistax nitkellem għall-guys mill-OE), iżda kien hemm xi oddities fl-interazzjoni.

L-ewwel dehru bħal dan: kmandi li kienu jeħtieġu li joħorġu ammont kbir ta 'dejta lill-console tal-istanza meta tikkonnettja permezz ta' SSH sempliċement "dendel" il-konnessjoni, filwaqt li permezz ta 'VNC kollox ħadem b'mod korrett.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Għal dawk li mhumiex familjari mal-problema, jidher pjuttost umoristiku: ls /root jaħdem b'mod korrett, filwaqt li, pereżempju, top "jiffriża" kompletament. Fortunatament, iltqajna ma 'problemi simili qabel. Ġie deċiż billi rfinar l-MTU fuq ir-rotta min-nodi tal-komputazzjoni għar-routers. Mill-mod, din mhix problema TF.

Il-problema li jmiss kienet l-kantuniera. F'mument wieħed "sabiħ", il-maġija tar-rotta sparixxa, eżatt hekk. TF waqaf jimmaniġġja r-rotot fuq it-tagħmir.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Ħdimna ma 'Openstack mil-livell ta' amministrazzjoni u wara dan imċaqlaq għal-livell ta 'utent meħtieġ. SDN jidher li "jħaffef" l-ambitu tal-utent li minnu jitwettqu l-azzjonijiet. Il-fatt hu li l-istess kont tal-amministratur jintuża biex jgħaqqad TF u OpenStack. Fil-pass tal-bidla għall-utent, il-"maġija" sparixxa. Ġie deċiż li jinħoloq kont separat biex jaħdem mas-sistema. Dan ippermettilna naħdmu mingħajr ma nkissru l-funzjonalità tal-integrazzjoni.

Silicon Lifeforms - OpenStack

Ħlejqa tas-silikon b'forma stramba tgħix ħdejn għelieqi tat-tungstenu. Fuq kollox, qisu tifel imkabbar li jista’ jfarrakna b’bandla waħda, iżda m’hemm ebda aggressjoni ovvja ġejja minnu. Ma jikkawżax biża, iżda d-daqs tiegħu jispira biża. Kif tagħmel il-kumplessità ta 'dak li qed jiġri madwar.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

OpenStack huwa l-qalba tal-pjattaforma tagħna.

OpenStack għandu diversi sottosistemi, li bħalissa nużaw Nova, Glance u Cinder bl-aktar mod attiv. Kull wieħed minnhom għandu l-API tiegħu stess. Nova hija responsabbli għar-riżorsi tal-komputazzjoni u l-ħolqien ta 'istanzi, Cinder huwa responsabbli għall-ġestjoni tal-volumi u snapshots tagħhom, Glance huwa servizz tal-immaġni li jimmaniġġja mudelli tal-OS u metainformazzjoni fuqhom.

Kull servizz jaħdem f'kontenitur, u s-sensar tal-messaġġ huwa l-"fenek abjad" - RabbitMQ.

Din is-sistema tatna l-aktar inkwiet mhux mistenni.

U l-ewwel problema ma dametx ma waslet meta ppruvajna ngħaqqdu volum addizzjonali mas-server. L-API Cinder irrifjutat b'mod ċar li twettaq dan il-kompitu. B'mod aktar preċiż, jekk temmen OpenStack innifsu, il-konnessjoni hija stabbilita, iżda m'hemm l-ebda apparat tad-disk ġewwa s-server virtwali.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Iddeċidejna li nagħtu dawra u tlabna l-istess azzjoni mill-API Nova. Ir-riżultat huwa li l-apparat jgħaqqad b'mod korrett u huwa aċċessibbli fis-server. Jidher li l-problema sseħħ meta block-storage ma jirrispondix għal Cinder.

Diffikultà oħra tistenniena meta naħdmu mad-diski. Il-volum tas-sistema ma setax jiġi skonnettjat mis-server.

Għal darb'oħra, OpenStack innifsu "taħlef" li qered il-konnessjoni u issa tista 'taħdem b'mod korrett bil-volum separatament. Iżda l-API kategorikament ma riedx iwettaq operazzjonijiet fuq id-diska.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Hawnhekk iddeċidejna li ma niġġieldux partikolarment, iżda li nbiddlu l-fehma tagħna tal-loġika tas-servizz. Jekk ikun hemm istanza, għandu jkun hemm ukoll volum tas-sistema. Għalhekk, l-utent għadu ma jistax ineħħi jew jiskonnettja s-"disk" tas-sistema mingħajr ma jħassar is-"server".

OpenStack huwa sett pjuttost kumpless ta 'sistemi bil-loġika ta' interazzjoni tiegħu stess u l-API mżejna. Aħna mgħejjuna minn dokumentazzjoni pjuttost dettaljata u, ovvjament, prova u żball (fejn inkunu mingħajrha).

Test run

Għamilna tnedija tat-test f'Diċembru tas-sena li għaddiet. Il-kompitu ewlieni kien li nittestja l-proġett tagħna fil-mod ta 'ġlied min-naħa teknika u min-naħa UX. L-udjenza ġiet mistiedna b'mod selettiv u l-ittestjar ingħalaq. Madankollu, ħallejna wkoll l-għażla li nitolbu aċċess għall-ittestjar fuq il-websajt tagħna.

It-test innifsu, ovvjament, ma kienx mingħajr mumenti umoristiċi tiegħu, għax hawn l-avventuri tagħna għadhom jibdew.

L-ewwelnett, aħna evalwajna kemmxejn b'mod żbaljat l-interess fil-proġett u kellna nżidu malajr in-nodi tal-komputazzjoni eżatt waqt it-test. Każ komuni għal cluster, iżda kien hemm xi sfumaturi hawn ukoll. Id-dokumentazzjoni għal verżjoni speċifika ta' TF tindika l-verżjoni speċifika tal-kernel li fuqha ġie ttestjat ix-xogħol ma' vRouter. Iddeċidejna li nniedu nodi b'kernels aktar riċenti. Bħala riżultat, TF ma rċevietx rotot min-nodi. Kelli urġenti nrodd lura l-qlub.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Kurżità oħra hija relatata mal-funzjonalità tal-buttuna "Bdel il-password" fil-kont personali tiegħek.

Iddeċidejna li nużaw JWT biex norganizzaw l-aċċess għall-kont personali tagħna sabiex ma naħdmux mas-sessjonijiet. Peress li s-sistemi huma diversi u mxerrda ħafna, aħna nimmaniġġjaw it-token tagħna stess, li fih aħna "wrap" sessjonijiet mill-kontijiet u token minn OpenStack. Meta l-password tinbidel, it-token, ovvjament, "jmur ħażin", peress li d-dejta tal-utent m'għadhiex valida u jeħtieġ li terġa 'tinħareġ.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk

Tlift dan il-punt, u sempliċement ma kienx hemm biżżejjed riżorsi biex tispiċċa malajr din il-biċċa. Kellna naqtgħu l-funzjonalità eżatt qabel tniedi t-test.
Bħalissa nilloggjaw l-utent jekk il-password tkun ġiet mibdula.

Minkejja dawn l-isfumaturi, l-ittestjar marru tajjeb. Fi ftit ġimgħat, madwar 300 ruħ waqfu. Konna kapaċi nħarsu lejn il-prodott mill-għajnejn tal-utenti, nittestjawh fl-azzjoni u niġbru feedback ta 'kwalità għolja.

Biex titkompla

Għal ħafna minna, dan huwa l-ewwel proġett ta’ din l-iskala. Tgħallimna numru ta’ lezzjonijiet siewja dwar kif naħdmu bħala tim u nieħdu deċiżjonijiet arkitettoniċi u ta’ disinn. Kif tintegra sistemi kumplessi bi ftit riżorsi u daħħalhom fil-produzzjoni.

Naturalment, hemm xi ħaġa li taħdem fuq kemm f'termini ta 'kodiċi kif ukoll fl-interfaces ta' integrazzjoni tas-sistema. Il-proġett huwa pjuttost żgħir, iżda aħna mimlijin ambizzjonijiet biex inkabbruh f'servizz affidabbli u konvenjenti.

Diġà stajna nipperswadu s-sistemi. Bill jimmaniġġa b'mod obbligatorju l-għadd, il-kontijiet, u t-talbiet tal-utenti fil-closet tiegħu. Il-"maġija" tal-oqsma tat-tungstenu tagħtina komunikazzjoni stabbli. U OpenStack biss kultant isir kapriċjuż, jgħajjat ​​xi ħaġa bħal "'WSREP għadu ma ħejjax node għall-użu tal-applikazzjoni." Imma dik hija storja kompletament differenti...

Dan l-aħħar nedejna s-servizz.
Tista' ssib id-dettalji kollha fuq tagħna Online.

L-istorja tal-ħolqien ta 'servizz sħaba, togħma cyberpunk
Tim ta 'żvilupp CLO

Links utli

OpenStack

Tessili tat-Tungstenu

Sors: www.habr.com

Żid kumment