QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Josh Evans fertelt oer de chaotyske en kleurige wrâld fan Netflix-mikrotsjinsten, te begjinnen mei de heule basis - de anatomy fan mikrotsjinsten, de útdagings ferbûn mei ferspraat systemen, en har foardielen. Bouwen op dizze stifting ûndersiket hy de kulturele, arsjitektoanyske en operasjonele praktiken dy't liede ta mastering fan mikroservices.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 1
QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 2
QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 3

Oars as operasjonele drift, binne de ynfiering fan nije talen foar tsjinstynternasjonalisaasje en nije technologyen lykas konteners bewuste besluten om nije kompleksiteit ta te foegjen oan it miljeu. Myn operaasjeteam standerdisearre op 'e bêste technology roadmap foar Netflix, dy't bakt waard yn foarôf definieare bêste praktiken basearre op Java en EC2, mar doe't it bedriuw groeide, begon ûntwikkelders nije komponinten ta te foegjen lykas Python, Ruby, Node-JS, en Docker.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Ik bin heul grutsk dat wy de earsten wiene dy't pleite foar ús produkt om geweldig te wurkjen sûnder te wachtsjen op klachten fan klanten. It begon allegear ienfâldich genôch - wy hiene bestjoeringsprogramma's yn Python en in pear back-office-applikaasjes yn Ruby, mar dingen waarden folle nijsgjirriger doe't ús webûntwikkelders oankundige dat se de JVM soene ferlitte en it web soene ferpleatse applikaasje op it Node-softwareplatfoarm. js. Nei de ynfiering fan Docker waarden dingen folle komplekser. Wy folgen logika en de technologyen wêrmei't wy kamen waarden realiteit doe't wy se ymplementearren foar klanten, om't se in protte sin makken. Ik sil dy fertelle wêrom dit sa is.

API Gateway hat eins de mooglikheid om geweldige skripts te yntegrearjen dy't kinne fungearje as einpunten foar UI-ûntwikkelders. Se konvertearre elk fan dizze skripts op sa'n manier dat se nei it meitsjen fan feroaringen se koenen ynsette foar produksje en dan nei brûkersapparaten, en al dizze wizigingen waarden syngronisearre mei einpunten dy't rûnen yn 'e API-gateway.

Dit werhelle lykwols it probleem fan it meitsjen fan in nije monolith wêr't de API-tsjinst oerladen waard mei koade op sa'n manier dat ferskate mislearre senario's foarkommen. Bygelyks, guon einpunten waarden fuorthelle, of skripts willekeurich generearre safolle ferzjes fan eat dat de ferzjes namen alle beskikbere ûnthâld fan de API tsjinst.

It wie logysk om dizze einpunten te nimmen en se út 'e API-tsjinst te lûken. Om dit te dwaan hawwe wy Node.js-komponinten makke dy't as lytse applikaasjes rûnen yn Docker-konteners. Dit liet ús alle problemen en crashes isolearje feroarsake troch dizze knooppuntapplikaasjes.

De kosten fan dizze feroarings binne frij grut en bestiet út de folgjende faktoaren:

  • Produktiviteit ark. It behearen fan nije technologyen fereasket nije ark, om't it UI-team, mei heul goede skripts om in effisjint model te meitsjen, net folle tiid hoege te besteegjen oan it behearen fan de ynfrastruktuer, se moasten allinich skripts skriuwe en har funksjonaliteit kontrolearje.
    Opportunity Insight and Sorting - In wichtich foarbyld is de nije ark dy't nedich binne om ynformaasje oer prestaasjesbestjoerder te ûntdekken. It wie nedich om te witten hoefolle de prosessor wie beset, hoe't ûnthâld waard brûkt, en it sammeljen fan dizze ynformaasje fereasket ferskate ark.
  • Fragmintaasje fan basisôfbyldings - de ienfâldige basis AMI is mear fragminteare en spesjalisearre wurden.
  • Knooppunt behear. D'r is gjin off-the-shelf-arsjitektuer of technology beskikber wêrmei jo knopen yn 'e wolk kinne beheare, dus hawwe wy Titus boud, in kontenerbehearplatfoarm dat skaalbere en betroubere kontenerynset en wolkyntegraasje leveret mei Amazon AWS.
  • Duplikaasje fan in bibleteek of platfoarm. It leverjen fan nije technologyen mei deselde kearnfunksjonaliteit fan it platfoarm fereasket it duplikearjen yn wolkbasearre Node.js-ûntwikkeldersark.
  • Learkurve en yndustriële ûnderfining. De ynfiering fan nije technologyen makket ûnûntkomber nije útdagings dy't moatte wurde oerwûn en leard fan.

Sa koene wy ​​ússels net beheine ta ien "ferhurde dyk" en moasten wy konstant nije manieren bouwe om ús technologyen te befoarderjen. Om kosten del te hâlden, hawwe wy sintralisearre stipe beheind en rjochte op de JVM, nije knopen, en Docker. Wy prioritearren effektive ynfloed, ynformeare teams oer de kosten fan har besluten, en stimulearren har om te sykjen nei manieren om de oplossingen mei hege ynfloed dy't se al ûntwikkele hienen, opnij te brûken. Wy brûkten dizze oanpak by it oersetten fan de tsjinst yn frjemde talen om it produkt te leverjen oan ynternasjonale kliïnten. Foarbylden omfetsje relatyf ienfâldige kliïntbiblioteken dy't automatysk kinne wurde oanmakke, sadat it frij maklik is om in Python-ferzje, in Ruby-ferzje, in Java-ferzje, ensfh.

Wy sochten konstant nei mooglikheden om bewezen technologyen te brûken dy't harsels op ien plak en yn oare ferlykbere situaasjes bewiisd hiene.

Lit ús prate oer it lêste elemint - feroarings, as fariaasjes. Sjoch hoe't it konsumpsje fan ús produkt ûngelikense ferskilt per dei fan 'e wike en per oere troch de dei. Jo kinne sizze dat 9 oere de hurdste tiid is foar Netflix, as de lading op it systeem syn maksimum berikt.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Hoe kinne wy ​​berikke hege snelheid fan ymplemintaasje fan software ynnovaasjes, dat is, hieltyd meitsje nije feroarings oan it systeem, sûnder feroarsaakje ûnderbrekkings yn tsjinstferliening en sûnder it meitsjen fan ûngemak foar ús klanten? Netflix hat dit berikt troch it brûken fan Spinnaker, in nije wrâldwide wolkbasearre behear en trochgeande levering (CD) platfoarm.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Kritysk is Spinnaker ûntworpen om ús bêste praktiken te yntegrearjen, sadat wy, wylst wy komponinten yn produksje sette, de útfier direkt kinne yntegrearje yn ús technology foar medialevering.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Wy binne yn steat west om twa technologyen op te nimmen yn ús leveringspipeline dy't wy heech wurdearje: automatisearre kanaryske analyze en opstelde ynset. Canary analyze betsjut dat wy rjochtsje in trickle fan ferkear nei de nije ferzje fan de koade, en passe de rest fan de produksje ferkear troch de âlde ferzje. Dan kontrolearje wy hoe't de nije koade omgaat mei de taak - better of slimmer as de besteande.

In staggered rollout betsjut dat as in rollout yn ien regio problemen hat, wy ferhúzje nei in rollout yn in oare regio. Yn dit gefal moat de hjirboppe neamde checklist opnommen wurde yn 'e produksjepipeline. Ik sil jo wat tiid besparje en riede jo oan om myn foarige petear te besjen, Engineering Global Netflix Operations in the Cloud, as jo ynteressearre binne om djipper yn dit ûnderwerp te dûken. De fideo-opname fan de taspraak kin besjoen wurde troch de link ûnderoan de slide te folgjen.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Oan 'e ein fan it petear sil ik koart prate oer de organisaasje en arsjitektuer fan Netflix. Oan it begjin hienen wy in skema neamd Electronic Delivery, dat wie de earste ferzje fan NRDP 1.x media streaming. De term "backstream" kin hjir brûkt wurde, om't de brûker yn earste ynstânsje allinnich ynhâld koe downloade foar letter ôfspieljen op it apparaat. Netflix's alderearste digitale leveringsplatfoarm, werom yn 2009, seach der sa út.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

It brûkersapparaat befette de Netflix-applikaasje, dy't bestie út in UI-ynterface, befeiligingsmodules, aktivearring fan tsjinsten en ôfspieljen, basearre op it NRDP-platfoarm - Netflix Ready Device Platform.

Op dat stuit wie de brûkersynterface heul ienfâldich. It befette wat in Queque Reader neamd waard, en de brûker soe nei de side gean om wat oan Queque ta te foegjen en dan de tafoege ynhâld op har apparaat te besjen. It positive wie dat it front-end team en it back-end team hearden ta deselde Electronic Delivery-organisaasje en in nauwe wurkrelaasje hiene. De lading is makke op basis fan XML. Tagelyk waard de Netflix API foar it DVD-bedriuw makke, wat applikaasjes fan tredden oanmoedige om ferkear nei ús tsjinst te rjochtsjen.

De Netflix API wie lykwols goed taret om ús te helpen mei in ynnovative brûkersynterface, mei metadata fan alle ynhâld, ynformaasje oer hokker films beskikber wiene, dy't de mooglikheid makke om watchlisten te generearjen. It hie in generike REST API basearre op it JSON-skema, HTTP-antwurdkoade, deselde dy't brûkt wurdt yn moderne arsjitektuer, en in OAuth-befeiligingsmodel, dat wie wat op dat stuit nedich wie foar in front-end-applikaasje. Dit makke it mooglik om te ferpleatsen fan in iepenbier model fan levering fan streamende ynhâld nei in privee.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

It probleem mei de oergong wie fragmintaasje, om't no ús systeem twa tsjinsten operearre basearre op folslein oare prinsipes fan operaasje - ien op Rest, JSON en OAuth, de oare op RPC, XML en in brûkersfeiligensmeganisme basearre op it NTBA-tokensysteem. Dit wie de earste hybride arsjitektuer.

D'r wie yn wêzen in firewall tusken ús twa teams, om't de API yn 't earstoan net sa goed skaalde mei NCCP en dit late ta wriuwing tusken de teams. De ferskillen wiene yn tsjinsten, protokollen, circuits, feiligensmodules, en ûntwikkelders moasten faaks wikselje tusken folslein ferskillende konteksten.

QCon Conference. Mastering Chaos: The Netflix Guide to Microservices. Diel 4

Yn dit ferbân hie ik in petear mei ien fan 'e senior yngenieurs fan it bedriuw, oan wa't ik de fraach stelde: "Wat moat de goede lange-termyn arsjitektuer wêze?" en hy stelde de tsjinfraach: "Jo binne wierskynlik mear soargen oer de organisatoaryske gefolgen - wat bart der as wy dizze dingen yntegrearje, en se brekke wat wy leard hawwe om goed te dwaan? Dizze oanpak is tige relevant foar Conway's Law: "Organisaasjes dy't ûntwerpsystemen binne beheind troch in ûntwerp dat de kommunikaasjestruktuer fan dy organisaasje replikearret." Dit is in heul abstrakte definysje, dus ik leaver in mear spesifike definysje: "Elk stik software wjerspegelet de organisatoaryske struktuer dy't it makke." Hjir is myn favorite sitaat fan Eric Raymond: "As jo ​​fjouwer teams fan ûntwikkelders hawwe dy't wurkje oan in kompilator, sille jo einigje mei in kompilator mei fjouwer pass." No, Netflix hat in kompilator mei fjouwer passaazjes, en dat is hoe't wy wurkje.

Wy kinne sizze dat yn dit gefal de sturt wagging de hûn. Us earste prioriteit is net de oplossing, mar de organisaasje; it is de organisaasje dy't de arsjitektuer driuwt dy't wy hawwe. Stadichoan, fan in hodgepodge fan tsjinsten, ferhuze wy nei in arsjitektuer dy't wy Blade Runner neamden, om't wy hjir prate oer rânetsjinsten en it fermogen fan NCCP om direkt te skieden en yntegreare yn 'e Zuul proxy, API-gateway, en de byhearrende funksjonele "stikken" binne feroare yn nije mikrotsjinsten mei mear avansearre feiligens, replay, data sortearring, ensfh.

Sa kin sein wurde dat ôfdielingsstruktueren en bedriuwsdynamyk in wichtige rol spylje by it foarmjen fan systeemûntwerp en in faktor binne dy't feroaring befoarderet of hinderet. Microservices-arsjitektuer is kompleks en organysk, en har sûnens is basearre op dissipline en yntrodusearre gaos.

In bytsje reklame

Tankewol foar it bliuwen by ús. Hâld jo fan ús artikels? Wolle jo mear ynteressante ynhâld sjen? Stypje ús troch in bestelling te pleatsen of oan te befeljen oan freonen, wolk VPS foar ûntwikkelders fan $ 4.99, in unike analoog fan servers op yngongsnivo, dy't troch ús foar jo útfûn is: De hiele wierheid oer VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps fan $19 of hoe te dielen in tsjinner? (beskikber mei RAID1 en RAID10, oant 24 kearnen en oant 40GB DDR4).

Dell R730xd 2 kear goedkeaper yn Equinix Tier IV data sintrum yn Amsterdam? Allinne hjir 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV fan $199 yn Nederlân! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - fan $99! Lêze oer Hoe kinne jo Infrastructure Corp. klasse mei it brûken fan Dell R730xd E5-2650 v4 tsjinners wurdich 9000 euro foar in penny?

Boarne: www.habr.com

Add a comment