DžoÅ”s Evanss stÄsta par haotisko un krÄsaino Netflix mikropakalpojumu pasauli, sÄkot ar paÅ”iem pamatiem ā mikropakalpojumu anatomiju, izaicinÄjumiem, kas saistÄ«ti ar sadalÄ«tajÄm sistÄmÄm, un to priekÅ”rocÄ«bÄm. Balstoties uz Å”o pamatu, viÅÅ” pÄta kultÅ«ras, arhitektÅ«ras un darbÄ«bas praksi, kas noved pie mikropakalpojumu meistarÄ«bas.
AtŔķirÄ«bÄ no darbÄ«bas novirzes, jaunu valodu ievieÅ”ana pakalpojumu internacionalizÄcijai un jaunas tehnoloÄ£ijas, piemÄram, konteineri, ir apzinÄti lÄmumi, lai padarÄ«tu vidi sarežģītÄku. Mana operÄciju komanda standartizÄja Netflix labÄko tehnoloÄ£iju ceļvedi, kas tika iekļauta iepriekÅ” definÄtÄs paraugpraksÄs, kuru pamatÄ ir Java un EC2, taÄu, biznesam augot, izstrÄdÄtÄji sÄka pievienot jaunus komponentus, piemÄram, Python, Ruby, Node-JS un Docker.
Esmu ļoti lepns, ka bijÄm pirmie, kas iestÄjÄs par to, lai mÅ«su produkts darbotos lieliski, negaidot klientu sÅ«dzÄ«bas. Viss sÄkÄs pietiekami vienkÄrÅ”i ā mums bija darbÄ«bas programmas Python un dažas back-office lietojumprogrammas Ruby, taÄu lietas kļuva daudz interesantÄkas, kad mÅ«su tÄ«mekļa izstrÄdÄtÄji paziÅoja, ka viÅi gatavojas atteikties no JVM un pÄrvietot tÄ«mekli. lietojumprogramma Node programmatÅ«ras platformai.js. PÄc Docker ievieÅ”anas lietas kļuva daudz sarežģītÄkas. MÄs sekojÄm loÄ£ikai, un mÅ«su izstrÄdÄtÄs tehnoloÄ£ijas kļuva par realitÄti, kad tÄs ieviesÄm klientiem, jo āātÄm bija liela jÄga. Es jums pastÄstÄ«Å”u, kÄpÄc tas tÄ ir.
API vÄrtejai faktiski ir iespÄja integrÄt lieliskus skriptus, kas var darboties kÄ lietotÄja saskarnes izstrÄdÄtÄju galapunkti. ViÅi pÄrveidoja katru no Å”iem skriptiem tÄ, lai pÄc izmaiÅu veikÅ”anas tos varÄtu izvietot ražoÅ”anas un pÄc tam lietotÄju ierÄ«cÄs, un visas Ŕīs izmaiÅas tika sinhronizÄtas ar galapunktiem, kas darbojÄs API vÄrtejÄ.
TomÄr tas atkÄrtoja jaunu monolÄ«ta izveidoÅ”anas problÄmu, kur API pakalpojums tika pÄrslogots ar kodu tÄ, ka radÄs dažÄdi kļūmju scenÄriji. PiemÄram, daži galapunkti tika noÅemti vai skripti nejauÅ”i Ä£enerÄja tik daudz kaut kÄ versiju, ka versijas aizÅÄma visu pieejamo API pakalpojuma atmiÅu.
Bija loÄ£iski Åemt Å”os galapunktus un izÅemt tos no API pakalpojuma. Lai to izdarÄ«tu, mÄs izveidojÄm Node.js komponentus, kas darbojÄs kÄ mazas lietojumprogrammas Docker konteineros. Tas ļÄva mums izolÄt visas problÄmas un avÄrijas, ko izraisÄ«ja Ŕīs mezgla lietojumprogrammas.
Å o izmaiÅu izmaksas ir diezgan lielas un sastÄv no Å”Ädiem faktoriem:
- ProduktivitÄtes instrumenti. Lai pÄrvaldÄ«tu jaunas tehnoloÄ£ijas, bija nepiecieÅ”ami jauni rÄ«ki, jo lietotÄja saskarnes komandai, izmantojot ļoti labus skriptus efektÄ«va modeļa izveidei, nebija jÄtÄrÄ daudz laika infrastruktÅ«ras pÄrvaldÄ«Å”anai, bija tikai jÄraksta skripti un jÄpÄrbauda to funkcionalitÄte.
IespÄju ieskats un ŔķiroÅ”ana ā galvenais piemÄrs ir jauni rÄ«ki, kas nepiecieÅ”ami, lai atklÄtu informÄciju par veiktspÄjas draiveriem. Bija jÄzina, cik daudz procesora ir aizÅemts, kÄ tiek izmantota atmiÅa, un Ŕīs informÄcijas apkopoÅ”anai bija nepiecieÅ”ami dažÄdi rÄ«ki. - BÄzes attÄlu sadrumstalotÄ«ba - vienkÄrÅ”ais bÄzes AMI ir kļuvis sadrumstalotÄks un specializÄtÄks.
- Mezglu pÄrvaldÄ«ba. Nav pieejama gatavÄ arhitektÅ«ra vai tehnoloÄ£ija, kas ļautu pÄrvaldÄ«t mezglus mÄkonÄ«, tÄpÄc mÄs izveidojÄm Titus ā konteineru pÄrvaldÄ«bas platformu, kas nodroÅ”ina mÄrogojamu un uzticamu konteineru izvietoÅ”anu un mÄkoÅa integrÄciju ar Amazon AWS.
- BibliotÄkas vai platformas dublÄÅ”ana. Lai nodroÅ”inÄtu jaunas tehnoloÄ£ijas ar tÄdu paÅ”u platformas pamatfunkcionalitÄti, bija nepiecieÅ”ama tÄ dublÄÅ”ana mÄkoÅa bÄzes Node.js izstrÄdÄtÄju rÄ«kos.
- MÄcÄ«bu lÄ«kne un industriÄlÄ pieredze. Jaunu tehnoloÄ£iju ievieÅ”ana neizbÄgami rada jaunus izaicinÄjumus, kas ir jÄpÄrvar un no kuriem jÄmÄcÄs.
TÄdÄjÄdi mÄs nevarÄjÄm aprobežoties ar vienu ābruÄ£Ätu ceļuā, un mums bija pastÄvÄ«gi jÄveido jauni veidi, kÄ uzlabot mÅ«su tehnoloÄ£ijas. Lai samazinÄtu izmaksas, mÄs ierobežojÄm centralizÄto atbalstu un koncentrÄjÄmies uz JVM, jauniem mezgliem un Docker. MÄs izvirzÄ«jÄm prioritÄti efektÄ«vai ietekmei, informÄjÄm komandas par viÅu lÄmumu izmaksÄm un mudinÄjÄm tÄs meklÄt veidus, kÄ atkÄrtoti izmantot jau izstrÄdÄtos augstas ietekmes risinÄjumus. MÄs izmantojÄm Å”o pieeju, tulkojot pakalpojumu sveÅ”valodÄs, lai piegÄdÄtu produktu starptautiskiem klientiem. KÄ piemÄrus var minÄt salÄ«dzinoÅ”i vienkÄrÅ”as klientu bibliotÄkas, kuras var Ä£enerÄt automÄtiski, tÄpÄc ir diezgan viegli izveidot Python versiju, Ruby versiju, Java versiju utt.
NemitÄ«gi meklÄjÄm iespÄjas izmantot pÄrbaudÄ«tas tehnoloÄ£ijas, kas sevi pierÄdÄ«juÅ”as vienuviet un citÄs lÄ«dzÄ«gÄs situÄcijÄs.
ParunÄsim par pÄdÄjo elementu ā izmaiÅÄm, jeb variÄcijÄm. Paskatieties, kÄ mÅ«su produkta patÄriÅÅ” mainÄs nevienmÄrÄ«gi pa nedÄļas dienÄm un pa stundÄm visas dienas garumÄ. VarÄtu teikt, ka 9:XNUMX ir grÅ«tÄkais laiks Netflix, kad sistÄmas slodze sasniedz maksimumu.
KÄ panÄkt lielu programmatÅ«ras inovÄciju ievieÅ”anas Ätrumu, tas ir, pastÄvÄ«gi veikt jaunas izmaiÅas sistÄmÄ, neradot pÄrtraukumus pakalpojumu sniegÅ”anÄ un neradot neÄrtÄ«bas mÅ«su klientiem? Netflix to sasniedza, izmantojot Spinnaker ā jaunu globÄlu mÄkoÅdatoÅ”anas pÄrvaldÄ«bas un nepÄrtrauktas piegÄdes (CD) platformu.
BÅ«tiski, ka Spinnaker tika izstrÄdÄts, lai integrÄtu mÅ«su labÄko praksi, lai, izvietojot komponentus ražoÅ”anÄ, mÄs varÄtu integrÄt izvadi tieÅ”i mÅ«su multivides piegÄdes tehnoloÄ£ijÄ.
MÄs esam spÄjuÅ”i iekļaut mÅ«su piegÄdes cauruļvadÄ divas tehnoloÄ£ijas, kuras mÄs augstu vÄrtÄjam: automatizÄto kanÄriju analÄ«zi un pakÄpenisku izvietoÅ”anu. KanÄriju analÄ«ze nozÄ«mÄ, ka mÄs novirzÄm datplÅ«smu uz jauno koda versiju, bet pÄrÄjo produkcijas datplÅ«smu nododam vecajai versijai. PÄc tam pÄrbaudÄm, kÄ jaunais kods tiek galÄ ar uzdevumu ā labÄk vai sliktÄk par esoÅ”o.
PakÄpeniska izlaiÅ”ana nozÄ«mÄ, ka, ja izlaiÅ”anai vienÄ reÄ£ionÄ rodas problÄmas, mÄs pÄrietam uz izlaiÅ”anu citÄ reÄ£ionÄ. Å ajÄ gadÄ«jumÄ iepriekÅ” minÄtais kontrolsaraksts ir jÄiekļauj ražoÅ”anas konveijerÄ. Es ietaupÄ«Å”u jums kÄdu laiku un iesaku izlasÄ«t manu iepriekÅ”Äjo runu āInženierijas globÄlÄs Netflix operÄcijas mÄkonÄ«ā, ja vÄlaties ienirt Å”ajÄ tÄmÄ. Runas videoierakstu var noskatÄ«ties, sekojot saitei slaida apakÅ”Ä.
Sarunas noslÄgumÄ es Ä«si pastÄstÄ«Å”u par Netflix organizÄciju un arhitektÅ«ru. PaÅ”Ä sÄkumÄ mums bija shÄma ar nosaukumu Electronic Delivery, kas bija pirmÄ NRAP 1.x mediju straumÄÅ”anas versija. Å eit var izmantot terminu "backstream", jo sÄkotnÄji lietotÄjs varÄja lejupielÄdÄt saturu tikai vÄlÄkai atskaÅoÅ”anai ierÄ«cÄ. Netflix pati pirmÄ digitÄlÄs piegÄdes platforma 2009. gadÄ izskatÄ«jÄs apmÄram Å”Ädi.
LietotÄja ierÄ«cÄ bija Netflix aplikÄcija, kas sastÄvÄja no UI interfeisa, droŔības moduļiem, servisa aktivizÄÅ”anas un atskaÅoÅ”anas, pamatojoties uz NRDP platformu ā Netflix Ready Device Platform.
Tolaik lietotÄja interfeiss bija ļoti vienkÄrÅ”s. TajÄ bija tÄ sauktais Queque Reader, un lietotÄjs apmeklÄja vietni, lai kaut ko pievienotu Queque un pÄc tam skatÄ«tu pievienoto saturu savÄ ierÄ«cÄ. PozitÄ«vi bija tas, ka priekÅ”gala komanda un aizmugures komanda piederÄja vienai elektroniskÄs piegÄdes organizÄcijai un tÄm bija cieÅ”as darba attiecÄ«bas. Krava tika izveidota, pamatojoties uz XML. TajÄ paÅ”Ä laikÄ tika izveidota Netflix API DVD biznesam, kas mudinÄja treÅ”o puÅ”u lietojumprogrammas novirzÄ«t trafiku uz mÅ«su pakalpojumu.
TomÄr Netflix API bija labi sagatavota, lai palÄ«dzÄtu mums ar novatorisku lietotÄja interfeisu, kas satur visa satura metadatus, informÄciju par pieejamÄm filmÄm, kas radÄ«ja iespÄju Ä£enerÄt skatÄ«Å”anÄs sarakstus. Tam bija vispÄrÄ«ga REST API, kuras pamatÄ bija JSON shÄma, HTTP atbildes kods, tas pats, kas tiek izmantots mÅ«sdienu arhitektÅ«rÄ, un OAuth droŔības modelis, kas tajÄ laikÄ bija nepiecieÅ”ams priekÅ”gala lietojumprogrammai. Tas ļÄva pÄriet no publiska straumÄÅ”anas satura piegÄdes modeļa uz privÄtu.
PÄrejas problÄma bija sadrumstalotÄ«ba, jo tagad mÅ«su sistÄma darbojÄs uz diviem pakalpojumiem, kas balstÄ«ti uz pilnÄ«gi atŔķirÄ«giem darbÄ«bas principiem - viens uz Rest, JSON un OAuth, otrs uz RPC, XML un lietotÄja droŔības mehÄnisms, kas balstÄ«ts uz NTBA marÄ·iera sistÄmu. Å Ä« bija pirmÄ hibrÄ«da arhitektÅ«ra.
BÅ«tÄ«bÄ starp mÅ«su abÄm komandÄm bija ugunsmÅ«ris, jo sÄkotnÄji API nedarbojÄs ļoti labi ar NCCP, un tas izraisÄ«ja berzi starp komandÄm. AtŔķirÄ«bas bija pakalpojumos, protokolos, shÄmÄs, droŔības moduļos, un izstrÄdÄtÄjiem bieži bija jÄpÄrslÄdzas starp pilnÄ«gi atŔķirÄ«giem kontekstiem.
Å ajÄ sakarÄ man bija saruna ar vienu no uzÅÄmuma vecÄkajiem inženieriem, kuram uzdevu jautÄjumu: āKÄdai vajadzÄtu bÅ«t pareizai ilgtermiÅa arhitektÅ«rai?ā, un viÅÅ” uzdeva pretjautÄjumu: āJÅ«s droÅ”i vien esat vairÄk nobažījies. par organizatoriskajÄm sekÄm ā kas notiek, ja Ŕīs lietas integrÄjam, un tÄs sagrauj to, ko esam iemÄcÄ«juÅ”ies darÄ«t labi? Å Ä« pieeja ir ļoti bÅ«tiska Konveja likumam: "OrganizÄcijas, kuras projektÄ sistÄmas, ierobežo dizains, kas atkÄrto Ŕīs organizÄcijas komunikÄcijas struktÅ«ru." Å Ä« ir ļoti abstrakta definÄ«cija, tÄpÄc es dodu priekÅ”roku konkrÄtÄkai definÄ«cijai: āJebkura programmatÅ«ras daļa atspoguļo organizatorisko struktÅ«ru, kas to radÄ«ja.ā Å eit ir mans iecienÄ«tÄkais citÄts no Ärika Raimonda: "Ja jums ir Äetras izstrÄdÄtÄju komandas, kas strÄdÄ pie kompilatora, jÅ«s iegÅ«sit Äetru pakÄpju kompilatoru." Nu, Netflix ir Äetru pakÄpju kompilators, un tÄ mÄs strÄdÄjam.
Var teikt, ka Å”ajÄ gadÄ«jumÄ aste luncina suni. MÅ«su pirmÄ prioritÄte nav risinÄjums, bet gan organizÄcija; tÄ ir organizÄcija, kas virza mÅ«su arhitektÅ«ru. PakÄpeniski no pakalpojumu klÄsta mÄs pÄrgÄjÄm uz arhitektÅ«ru, ko saucÄm par Blade Runner, jo Å”eit mÄs runÄjam par malas pakalpojumiem un NCCP spÄju atdalÄ«t un integrÄt tieÅ”i Zuul starpniekserverÄ«, API vÄrtejÄ un atbilstoÅ”ajÄ funkcionÄlajÄ. āgabaliā ir pÄrvÄrsti jaunos mikropakalpojumos ar uzlabotÄm droŔības, atskaÅoÅ”anas, datu ŔķiroÅ”anas u.c. funkcijÄm.
TÄdÄjÄdi var teikt, ka departamentu struktÅ«rÄm un uzÅÄmuma dinamikai ir liela nozÄ«me sistÄmas dizaina veidoÅ”anÄ un tie ir faktors, kas veicina vai kavÄ izmaiÅas. Mikropakalpojumu arhitektÅ«ra ir sarežģīta un organiska, un tÄs veselÄ«ba ir balstÄ«ta uz disciplÄ«nu un ieviesto haosu.
Kaut kÄda reklÄma
Paldies, ka palikÄt kopÄ ar mums. Vai jums patÄ«k mÅ«su raksti? Vai vÄlaties redzÄt interesantÄku saturu? Atbalsti mÅ«s, pasÅ«tot vai iesakot draugiem,
Dell R730xd 2x lÄtÄk Equinix Tier IV datu centrÄ AmsterdamÄ? Tikai Å”eit
Avots: www.habr.com