Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Samtang nagtrabaho ka sa IT, nagsugod ka nga makamatikod nga ang mga sistema adunay kaugalingon nga kinaiya. Mahimo silang flexible, hilom, eccentric, ug stern. Sila makadani o makasalikway. Usa ka paagi o lain, kinahanglan nimo nga "makig-negosasyon" uban nila, maniobrahon tali sa "mga lit-ag" ug magtukod mga kadena sa ilang interaksyon.

Mao nga kami adunay kadungganan sa pagtukod sa usa ka cloud platform, ug alang niini kinahanglan namon nga "pagdani" ang usa ka magtiayon nga mga subsystem nga magtrabaho uban kanamo. Maayo na lang, kami adunay "API nga pinulongan", direkta nga mga kamot ug daghang kadasig.

Kini nga artikulo dili teknikal nga hardcore, apan ihulagway ang mga problema nga among nasugatan samtang nagtukod sa panganod. Nakahukom ko nga ihulagway ang among agianan sa porma sa usa ka gaan nga teknikal nga pantasya kung giunsa namo pagpangita ang usa ka komon nga pinulongan nga adunay mga sistema ug unsa ang migawas niini.

Welcome sa iring.

Pagsugod sa panaw

Pipila ka panahon ang milabay, ang among team gitahasan sa paglansad og cloud platform para sa among mga kliyente. Kami adunay suporta sa pagdumala, mga kapanguhaan, hardware stack ug kagawasan sa pagpili sa mga teknolohiya aron ipatuman ang software nga bahin sa serbisyo.

Adunay usab daghang mga kinahanglanon:

  • ang serbisyo nanginahanglan usa ka kombenyente nga personal nga account;
  • ang plataporma kinahanglang i-integrate sa kasamtangan nga sistema sa pagsingil;
  • software ug hardware: OpenStack + Tungsten Fabric (Open Contrail), nga nakat-onan sa among mga inhenyero nga β€œmagluto” og maayo.

Sultihan ka namo sa laing higayon kon giunsa pag-assemble ang team, ang interface sa personal nga account naugmad ug gihimo ang mga desisyon sa disenyo, kung interesado ang komunidad sa Habra.
Ang mga himan nga among gipili nga gamiton:

  • Python + Flask + Swagger + SQLAlchemy - usa ka hingpit nga sumbanan nga set sa Python;
  • Vue.js para sa frontend;
  • Nakahukom kami nga buhaton ang interaksyon tali sa mga sangkap ug serbisyo gamit ang Celery sa AMQP.

Nagpaabut sa mga pangutana bahin sa pagpili sa Python, akong ipasabut. Ang pinulongan nakakaplag sa iyang dapit sa among kompanya ug usa ka gamay, apan sa gihapon kultura, naugmad sa palibot niini. Busa, nakahukom nga sugdan ang pagtukod sa serbisyo niini. Dugang pa, ang katulin sa pag-uswag sa ingon nga mga problema kanunay nga mahukmanon.

So, sugdan na nato ang atong kaila.

Silent Bill - pagsingil

Dugay na mi kaila ani nga laki. Kanunay siyang naglingkod sa akong tapad ug hilom nga nag-ihap sa usa ka butang. Usahay gipasa niya ang mga hangyo sa tiggamit kanamo, nag-isyu sa mga invoice sa kliyente, ug nagdumala sa mga serbisyo. Usa ka ordinaryo nga kugihan nga tawo. Tinuod, dihay mga kalisdanan. Siya hilom, usahay mahunahunaon ug kanunay sa iyang kaugalingong hunahuna.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Ang pagsingil mao ang una nga sistema nga among gisulayan nga makighigala. Ug ang una nga kalisud nga among nasugatan mao ang pagproseso sa mga serbisyo.

Pananglitan, kung gibuhat o gitangtang, ang usa ka buluhaton moadto sa internal nga pila sa pagsingil. Sa ingon, usa ka sistema sa asynchronous nga trabaho sa mga serbisyo ang gipatuman. Aron maproseso ang among mga tipo sa serbisyo, kinahanglan namon nga "ibutang" ang among mga buluhaton sa kini nga pila. Ug dinhi midagan kami sa usa ka problema: kakulang sa dokumentasyon.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Sa paghukom sa paghulagway sa software API, posible gihapon nga masulbad kini nga problema, apan wala kami'y panahon sa paghimo sa reverse engineering, mao nga among gikuha ang lohika sa gawas ug giorganisar ang usa ka task queue sa ibabaw sa RabbitMQ. Ang usa ka operasyon sa usa ka serbisyo gisugdan sa kliyente gikan sa iyang personal nga account, nahimo nga usa ka "task" sa Celery sa backend ug gihimo sa billing ug OpenStack nga bahin. Gipadali sa celery ang pagdumala sa mga buluhaton, pag-organisar sa mga pagbalik-balik ug pag-monitor sa kahimtang. Mahimo nimong basahon ang dugang bahin sa "celery", pananglitan, dinhi.

Usab, ang pagsingil wala makapugong sa usa ka proyekto nga nahutdan sa salapi. Nakigkomunikar sa mga nag-develop, nahibal-an namon nga kung gikalkula ang mga estadistika (ug kinahanglan namon nga ipatuman ang eksakto nga kini nga klase sa lohika), adunay usa ka komplikado nga interrelation sa paghunong sa mga lagda. Apan kini nga mga modelo dili mohaum sa atong mga kamatuoran. Gipatuman usab namo kini pinaagi sa mga buluhaton sa Celery, nga nagdala sa lohika sa pagdumala sa serbisyo ngadto sa backend nga bahin.

Ang duha sa mga problema sa ibabaw misangpot sa code nga nahimong usa ka gamay nga bloated ug sa umaabot nga kita kinahanglan nga refactor aron sa pagbalhin sa lohika alang sa pagtrabaho uban sa mga buluhaton ngadto sa usa ka lain nga serbisyo. Kinahanglan usab namon nga tipigan ang pipila ka kasayuran bahin sa mga tiggamit ug ilang mga serbisyo sa among mga lamesa aron masuportahan kini nga lohika.

Laing problema mao ang kahilom.

Hilom nga gitubag ni Billy ang "Ok" sa pipila ka mga hangyo sa API. Mao kini ang kaso, pananglitan, sa dihang mibayad kami sa gisaad nga mga bayranan atol sa pagsulay (labaw pa niana sa ulahi). Ang mga hangyo gipatuman sa saktong paagi ug wala miy nakitang mga sayop.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Kinahanglan nakong tun-an ang mga troso samtang nagtrabaho sa sistema pinaagi sa UI. Nahibal-an nga ang pagsingil mismo naghimo sa parehas nga mga hangyo, gibag-o ang sakup sa usa ka piho nga tiggamit, pananglitan, admin, nga gipasa kini sa su parameter.

Sa kinatibuk-an, bisan pa sa mga kal-ang sa dokumentasyon ug menor de edad nga mga sayup sa API, maayo ang tanan. Ang mga troso mahimong mabasa bisan sa ilawom sa bug-at nga karga kung nasabtan nimo kung giunsa kini pagkahan-ay ug kung unsa ang pangitaon. Ang istruktura sa database nindot kaayo, apan makatarunganon ug sa pipila ka mga paagi bisan madanihon.

Mao nga, sa pag-summarize, ang mga nag-unang problema nga among nasugatan sa yugto sa interaksyon adunay kalabotan sa mga bahin sa pagpatuman sa usa ka piho nga sistema:

  • walay dokumento nga "mga bahin" nga nakaapekto kanato sa usa ka paagi o sa lain;
  • closed source (gisulat ang billing sa C++), isip resulta - imposible nga masulbad ang problema 1 sa bisan unsang paagi gawas sa "trial and error".

Maayo na lang, ang produkto adunay medyo halapad nga API ug among gisagol ang mosunod nga mga subsystem sa among personal nga account:

  • module sa teknikal nga suporta - ang mga hangyo gikan sa imong personal nga account "gi-proxy" sa pagsingil nga klaro alang sa mga kliyente sa serbisyo;
  • pinansyal nga module - nagtugot kanimo sa pag-isyu sa mga invoice sa kasamtangan nga mga kliyente, paghimo sa mga write-off ug pagmugna og mga dokumento sa pagbayad;
  • module sa pagkontrol sa serbisyo - alang niini kinahanglan namon nga ipatuman ang among kaugalingon nga handler. Ang pagpalapad sa sistema nagdula sa among mga kamot ug among "gitudloan" si Billy sa usa ka bag-ong klase sa serbisyo.
    Medyo hasol kadto, apan sa usa ka paagi o sa lain, sa akong hunahuna magkasinabot kami ni Billy.

Paglakaw agi sa tungsten field - Tungsten Fabric

Ang mga tungsten nga natad nga adunay tuldok nga gatusan ka mga wire, nga nagpasa sa liboan ka mga piraso sa impormasyon pinaagi kanila. Ang impormasyon gikolekta ngadto sa "packet", gi-parse, nagtukod og komplikadong mga ruta, nga daw pinaagi sa salamangka.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Kini ang dominyo sa ikaduha nga sistema diin kinahanglan namon nga makighigala - Tungsten Fabric (TF), kaniadto OpenContrail. Ang tahas niini mao ang pagdumala sa mga kagamitan sa network, paghatag usa ka abstraction sa software sa amon ingon mga tiggamit. Ang TF - SDN, naglangkob sa komplikadong lohika sa pagtrabaho sa mga kagamitan sa network. Adunay usa ka maayo nga artikulo bahin sa teknolohiya mismo, pananglitan, dinhi.

Ang sistema gisagol sa OpenStack (gihisgot sa ubos) pinaagi sa Neutron plugin.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk
Interaksyon sa mga serbisyo sa OpenStack.

Ang mga lalaki gikan sa departamento sa operasyon nagpaila kanamo niini nga sistema. Gigamit namo ang API sa sistema aron madumala ang network stack sa among mga serbisyo. Wala pa kini hinungdan sa among seryoso nga mga problema o kahasol (dili ako makasulti alang sa mga lalaki gikan sa OE), apan adunay pipila ka mga katingad-an sa interaksyon.

Ang una nga tan-awon sama niini: mga sugo nga nagkinahanglan sa pag-output sa usa ka dako nga kantidad sa data ngadto sa instance console sa diha nga ang pagkonektar pinaagi sa SSH yano nga "nagbitay" sa koneksyon, samtang pinaagi sa VNC ang tanan nagtrabaho sa husto.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Alang niadtong dili pamilyar sa problema, morag kataw-anan kini: ang ls /root nagtrabaho sa husto, samtang, pananglitan, ang top "freezes" sa hingpit. Maayo na lang, nakasugat kami og susama nga mga problema kaniadto. Gidesisyonan kini pinaagi sa pag-tune sa MTU sa ruta gikan sa mga compute node hangtod sa mga router. Pinaagi sa dalan, dili kini problema sa TF.

Ang sunod nga problema hapit na. Sa usa ka "matahum" nga gutlo, ang salamangka sa pagruta nawala, ingon niana. Ang TF mihunong sa pagdumala sa pag-ruta sa kagamitan.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Nagtrabaho kami sa Openstack gikan sa lebel sa admin ug pagkahuman mibalhin sa gikinahanglan nga lebel sa tiggamit. Ang SDN mopatim-aw nga "gi-hijack" ang sakup sa tiggamit kung kinsa ang mga aksyon gihimo. Ang kamatuoran mao nga ang sama nga admin account gigamit sa pagkonektar sa TF ug OpenStack. Sa lakang sa pagbalhin sa tiggamit, ang "salamangka" nawala. Nakahukom nga maghimo usa ka lahi nga account aron magtrabaho kauban ang sistema. Gitugotan kami niini nga magtrabaho nga wala maguba ang pagpaandar sa panagsama.

Silicon Lifeforms - OpenStack

Usa ka talagsaon nga porma nga silicone nga linalang nagpuyo duol sa tungsten field. Labaw sa tanan, mura’g usa ka sobra nga bata nga makadugmok kanamo sa usa ka duyan, apan walay klaro nga kaagresibo nga gikan kaniya. Dili kini hinungdan sa kahadlok, apan ang gidak-on niini nagdasig sa kahadlok. Ingon usab ang pagkakomplikado sa nahitabo sa palibot.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Ang OpenStack mao ang kinauyokan sa among plataporma.

Ang OpenStack adunay daghang mga subsystem, diin gigamit namon karon ang Nova, Glance ug Cinder nga labing aktibo. Ang matag usa kanila adunay kaugalingon nga API. Ang Nova ang responsable sa pagkalkula sa mga kapanguhaan ug paghimo sa mga higayon, si Cinder ang responsable sa pagdumala sa mga volume ug sa ilang mga snapshot, ang Glance usa ka serbisyo sa imahe nga nagdumala sa mga template sa OS ug metainformation sa kanila.

Ang matag serbisyo nagdagan sa usa ka sudlanan, ug ang tigpamaligya sa mensahe mao ang "puti nga koneho" - RabbitMQ.

Kini nga sistema naghatag kanamo sa labing wala damha nga kasamok.

Ug ang una nga problema wala magdugay sa dihang gisulayan namon nga makonektar ang usa ka dugang nga volume sa server. Ang Cinder API prangka nga nagdumili sa paghimo niini nga buluhaton. Mas tukma, kung nagtuo ka sa OpenStack mismo, ang koneksyon natukod, apan walay disk device sulod sa virtual server.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Nakahukom kami nga moliko ug mihangyo sa samang aksyon gikan sa Nova API. Ang resulta mao nga ang device nagkonektar sa husto ug ma-access sulod sa server. Mopatim-aw nga ang problema mahitabo kung ang block-storage dili motubag sa Cinder.

Laing kalisud ang naghulat kanamo kung nagtrabaho uban ang mga disk. Ang gidaghanon sa sistema dili ma-disconnect gikan sa server.

Pag-usab, ang OpenStack mismo "nanumpa" nga giguba niini ang koneksyon ug karon mahimo ka nga husto nga magtrabaho uban ang volume nga gilain. Apan ang API categorically dili gusto nga maghimo mga operasyon sa disk.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Dinhi kami nakahukom nga dili makig-away ilabi na, apan sa pag-usab sa among panglantaw sa lohika sa serbisyo. Kung adunay usa ka pananglitan, kinahanglan usab nga adunay usa ka volume sa sistema. Busa, ang user dili pa makatangtang o maka-disable sa sistema nga "disk" nga walay pagtangtang sa "server".

Ang OpenStack usa ka komplikado nga hugpong sa mga sistema nga adunay kaugalingon nga lohika sa interaksyon ug madayandayan nga API. Gitabangan kami sa medyo detalyado nga dokumentasyon ug, siyempre, pagsulay ug sayup (asa kami kung wala kini).

Pagsulay run

Naghimo kami usa ka pagsulay nga paglansad kaniadtong Disyembre sa miaging tuig. Ang nag-unang tahas mao ang pagsulay sa among proyekto sa combat mode gikan sa teknikal nga bahin ug gikan sa UX nga bahin. Ang mga mamiminaw gipili nga gidapit ug ang pagsulay gisirhan. Bisan pa, gibiyaan usab namon ang kapilian sa paghangyo og access sa pagsulay sa among website.

Ang pagsulay mismo, siyempre, dili kung wala ang mga kataw-anan nga mga higayon, tungod kay dinhi nagsugod ang among mga panimpalad.

Una, medyo nasayop mi sa pag-assess sa interes sa proyekto ug kinahanglang magdugang dayon og mga compute node sa panahon sa pagsulay. Usa ka sagad nga kaso alang sa usa ka kumpol, apan adunay pipila ka mga nuances dinhi usab. Ang dokumentasyon alang sa usa ka piho nga bersyon sa TF nagpakita sa piho nga bersyon sa kernel diin ang pagtrabaho sa vRouter gisulayan. Nakahukom kami nga maglunsad og mga node nga adunay mas bag-o nga mga kernel. Ingon usa ka sangputanan, ang TF wala makadawat mga ruta gikan sa mga node. Kinahanglan kong dinalian nga ibalik ang mga lugas.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Ang laing kakuryuso adunay kalabotan sa pagpaandar sa buton nga "bag-o ang password" sa imong personal nga account.

Nakahukom kami nga gamiton ang JWT aron ma-organisar ang pag-access sa among personal nga account aron dili molihok sa mga sesyon. Tungod kay ang mga sistema lainlain ug kaylap nga nagkatag, among gidumala ang among kaugalingon nga token, diin among "pagputos" ang mga sesyon gikan sa pagsingil ug usa ka token gikan sa OpenStack. Kung giusab ang password, ang token, siyempre, "madaot", tungod kay ang datos sa tiggamit dili na balido ug kinahanglan nga i-isyu pag-usab.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk

Nawala ang among panan-aw sa kini nga punto, ug wala’y igo nga mga kapanguhaan aron dali nga mahuman kini nga piraso. Kinahanglan namon nga putlon ang pagpaandar sa wala pa ilunsad ang pagsulay.
Sa pagkakaron mi-logout kami sa user kung giusab ang password.

Bisan pa niini nga mga nuances, ang pagsulay maayo. Sa pila ka semana, mga 300 ka tawo ang mihunong. Nakatan-aw kami sa produkto pinaagi sa mga mata sa mga tiggamit, gisulayan kini sa aksyon ug nakolekta ang taas nga kalidad nga feedback.

Aron magpadayon

Alang sa kadaghanan kanato, kini ang una nga proyekto sa kini nga sukod. Nakat-on kami og daghang bililhong mga leksyon kon unsaon pagtrabaho isip usa ka team ug paghimo og mga desisyon sa arkitektura ug disenyo. Giunsa pag-integrate ang mga komplikadong sistema nga adunay gamay nga kapanguhaan ug i-roll kini sa produksiyon.

Siyempre, adunay usa ka butang sa pagtrabaho sa duha sa mga termino sa code ug sa mga interface sa sistema integration. Batan-on pa ang proyekto, apan puno kami sa mga ambisyon nga motubo kini nga kasaligan ug kombenyente nga serbisyo.

Nakahimo na kami sa pagdani sa mga sistema. Matinud-anon nga gidumala ni Bill ang pag-ihap, pagsingil, ug mga hangyo sa tiggamit sa iyang aparador. Ang "salamangka" sa mga natad sa tungsten naghatag kanamo og lig-on nga komunikasyon. Ug ang OpenStack ra usahay ang mahimong kapritsoso, nga nagsinggit sama sa "'Wala pa giandam sa WSREP ang node alang sa paggamit sa aplikasyon." Apan kana usa ka lahi nga istorya ...

Bag-o lang namon gilusad ang serbisyo.
Mahimo nimong mahibal-an ang tanan nga mga detalye sa among site.

Ang kasaysayan sa paghimo sa usa ka serbisyo sa panganod, nga adunay lami sa cyberpunk
CLO Development Team

Mapuslanon nga mga link

Bukas ang Bukid

Tungsten nga panapton

Source: www.habr.com

Idugang sa usa ka comment