QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Josh Evans talar um óskipulegan og litríkan heim Netflix örþjónustunnar og byrjar á grunnatriðum - líffærafræði örþjónustunnar, áskoranirnar sem tengjast dreifðum kerfum og ávinninginn af þeim. Hann byggir á þessum grunni og kannar menningar-, byggingar- og rekstraraðferðir sem leiða til valds í örþjónustu.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 1. hluti
QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 2. hluti
QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 3. hluti

Ólíkt rekstri er innleiðing nýrra tungumála fyrir alþjóðavæðingu þjónustu og ný tækni eins og gámar meðvitaðar ákvarðanir til að bæta umhverfinu nýju flóknu. Rekstrarteymið mitt staðlað á bestu tæknileiðarvísinum fyrir Netflix, sem var bakað inn í fyrirfram skilgreindar bestu starfsvenjur byggðar á Java og EC2, en eftir því sem fyrirtækið stækkaði fóru verktaki að bæta við nýjum hlutum eins og Python, Ruby, Node-JS og Docker.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Ég er mjög stolt af því að við vorum fyrst til að tala fyrir því að varan okkar virki frábærlega án þess að bíða eftir kvörtunum viðskiptavina. Þetta byrjaði allt nógu einfalt - við vorum með stýriforrit í Python og nokkur bakskrifstofuforrit í Ruby, en hlutirnir urðu miklu áhugaverðari þegar vefhönnuðir okkar tilkynntu að þeir ætluðu að hætta við JVM og ætluðu að flytja vefinn forrit á Node hugbúnaðarvettvang. js. Eftir kynningu á Docker urðu hlutirnir miklu flóknari. Við fylgdum rökfræði og tæknin sem við komum með varð að veruleika þegar við innleiddum hana fyrir viðskiptavini vegna þess að hún var mjög skynsamleg. Ég skal segja þér hvers vegna þetta er svona.

API Gateway hefur í raun getu til að samþætta frábærar forskriftir sem geta virkað sem endapunktar fyrir forritara HÍ. Þeir umbreyttu hverju þessara forskrifta á þann hátt að eftir að hafa gert breytingar gátu þeir sett þau í framleiðslu og síðan í notendatæki, og allar þessar breytingar voru samstilltar við endapunkta sem keyrðu í API-gáttinni.

Hins vegar endurtók þetta vandamálið við að búa til nýjan einliða þar sem API þjónustan var ofhlaðin kóða á þann hátt að ýmsar bilunaratburðarásir komu upp. Til dæmis voru sumir endapunktar fjarlægðir eða forskriftir mynduðu af handahófi svo margar útgáfur af einhverju að útgáfurnar tóku allt tiltækt minni API þjónustunnar.

Það var rökrétt að taka þessa endapunkta og draga þá út úr API þjónustunni. Til að gera þetta bjuggum við til Node.js íhluti sem keyrðu sem lítil forrit í Docker gámum. Þetta gerði okkur kleift að einangra öll vandamál og hrun af völdum þessara hnútaforrita.

Kostnaður við þessar breytingar er nokkuð mikill og samanstendur af eftirfarandi þáttum:

  • Framleiðni verkfæri. Stjórnun nýrrar tækni krafðist nýrra verkfæra vegna þess að HÍ-teymið, sem notaði mjög góð forskrift til að búa til skilvirkt líkan, þurfti ekki að eyða miklum tíma í að stjórna innviðunum, það þurfti aðeins að skrifa forskriftir og athuga virkni þeirra.
    Tækifæri Innsýn og flokkun - Lykildæmi eru nýju tækin sem þarf til að afhjúpa upplýsingar um frammistöðu ökumanns. Nauðsynlegt var að vita hversu mikið örgjörvinn var upptekinn, hvernig minni var notað og til að safna þessum upplýsingum þurfti mismunandi verkfæri.
  • Brotnun grunnmynda - einfalda grunn-AMI hefur orðið sundurleitara og sérhæfðara.
  • Hnútastjórnun. Það er engin arkitektúr eða tækni til staðar sem gerir þér kleift að stjórna hnútum í skýinu, svo við smíðuðum Titus, gámastjórnunarvettvang sem veitir stigstærð og áreiðanlega dreifingu gáma og skýjasamþættingu við Amazon AWS.
  • Fjölföldun á bókasafni eða vettvangi. Til að útvega nýja tækni með sömu kjarnavirkni vettvangsins þurfti að afrita hana í skýjabyggð Node.js þróunarverkfæri.
  • Námsferill og iðnaðarreynsla. Innleiðing nýrrar tækni skapar óhjákvæmilega nýjar áskoranir sem þarf að sigrast á og læra af.

Þannig gátum við ekki takmarkað okkur við einn „malbikaðan veg“ og þurftum stöðugt að byggja nýjar leiðir til að efla tækni okkar. Til að halda kostnaði niðri, takmörkuðum við miðlægan stuðning og einbeitum okkur að JVM, nýjum hnútum og Docker. Við settum skilvirk áhrif í forgang, upplýstum teymi um kostnaðinn við ákvarðanir sínar og hvöttum þau til að leita leiða til að endurnýta áhrifaríku lausnirnar sem þeir höfðu þegar þróað. Við notuðum þessa nálgun þegar við þýddum þjónustuna á erlend tungumál til að afhenda vöruna til alþjóðlegra viðskiptavina. Sem dæmi má nefna tiltölulega einföld biðlarasöfn sem hægt er að búa til sjálfkrafa, þannig að það er frekar auðvelt að búa til Python útgáfu, Ruby útgáfu, Java útgáfu o.s.frv.

Við vorum stöðugt að leita að tækifærum til að nota sannaða tækni sem hafði sannað sig á einum stað og við aðrar svipaðar aðstæður.

Við skulum tala um síðasta þáttinn - breytingar eða afbrigði. Sjáðu hvernig neysla vörunnar okkar er misjöfn eftir vikudögum og klukkustundum yfir daginn. Það má segja að klukkan 9 sé erfiðasti tíminn fyrir Netflix, þegar álagið á kerfið nær hámarki.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Hvernig getum við náð miklum hraða í innleiðingu hugbúnaðarnýjunga, það er að gera stöðugt nýjar breytingar á kerfinu, án þess að valda truflunum á þjónustuafhendingu og án þess að skapa óþægindum fyrir viðskiptavini okkar? Netflix náði þessu með því að nota Spinnaker, nýja alþjóðlega skýjatengda stjórnun og stöðuga afhendingu (CD) vettvang.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Á gagnrýninni hátt var Spinnaker hannað til að samþætta bestu starfsvenjur okkar þannig að þegar við sendum íhluti í framleiðslu getum við samþætt framleiðsluna beint inn í fjölmiðlaafhendingartækni okkar.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Okkur hefur tekist að fella tvær tækni inn í afhendingarleiðsluna okkar sem við metum mikils: sjálfvirka kanarígreiningu og stigauppsetningu. Kanarí-greining þýðir að við beinum smá umferð að nýju útgáfu kóðans og sendum restina af framleiðsluumferðinni í gegnum gömlu útgáfuna. Síðan athugum við hvernig nýi kóðinn tekst á við verkefnið - betur eða verr en sá sem fyrir er.

Dreifð útfærsla þýðir að ef útfærsla á einu svæði hefur vandamál, förum við yfir í útfærslu á öðru svæði. Í þessu tilviki þarf ofangreindur gátlisti að vera með í framleiðsluleiðslunni. Ég mun spara þér tíma og mæli með að þú skoðir fyrri ræðu mína, Engineering Global Netflix Operations in the Cloud, ef þú hefur áhuga á að kafa dýpra í þetta efni. Myndbandsupptöku af ræðunni má skoða með því að fylgja hlekknum neðst á glærunni.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Í lok erindsins mun ég fjalla stuttlega um skipulag og byggingarlist Netflix. Strax í upphafi vorum við með kerfi sem kallast Rafræn afhending, sem var fyrsta útgáfan af NRDP 1.x fjölmiðlastreymi. Hér er hægt að nota hugtakið „backstream“ vegna þess að upphaflega gat notandinn aðeins hlaðið niður efni til síðari spilunar á tækinu. Fyrsti stafræni afhendingarvettvangur Netflix, árið 2009, leit einhvern veginn svona út.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Notendatækið innihélt Netflix forritið, sem samanstóð af notendaviðmóti, öryggiseiningum, þjónustuvirkjun og spilun, byggt á NRDP pallinum - Netflix Ready Device Platform.

Á þeim tíma var notendaviðmótið mjög einfalt. Það innihélt það sem kallað var Queque Reader og notandinn fór á síðuna til að bæta einhverju við Queque og skoðaði síðan bætt efni á tækinu sínu. Það jákvæða var að framendateymi og bakendateymi tilheyrðu sömu rafrænni afhendingarstofnun og áttu náið samstarf. Burðargetan var búið til byggt á XML. Á sama tíma var Netflix API fyrir DVD-fyrirtækið búið til, sem hvatti forrit þriðja aðila til að beina umferð á þjónustu okkar.

Hins vegar var Netflix API vel undirbúið til að hjálpa okkur með nýstárlegt notendaviðmót, sem inniheldur lýsigögn um allt efni, upplýsingar um hvaða kvikmyndir voru tiltækar, sem skapaði möguleika á að búa til áhorfslista. Það var með almennt REST API byggt á JSON stefinu, HTTP svarkóða, það sama og notað er í nútíma arkitektúr og OAuth öryggislíkan, sem var það sem þurfti á þeim tíma fyrir framendaforrit. Þetta gerði það að verkum að hægt var að fara frá opinberu líkani af afhendingu streymiefnis yfir í einkalíkan.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Vandamálið við umskiptin var sundurliðun, þar sem núna starfrækti kerfið okkar tvær þjónustur byggðar á gjörólíkum aðgerðum - önnur á Rest, JSON og OAuth, hin á RPC, XML og notendaöryggiskerfi byggt á NTBA táknkerfinu. Þetta var fyrsti blendingsarkitektúrinn.

Það var í raun eldveggur á milli liðanna okkar tveggja vegna þess að upphaflega var API ekki mjög vel með NCCP og þetta leiddi til núnings á milli liðanna. Munurinn var á þjónustu, samskiptareglum, hringrásum, öryggiseiningum og þróunaraðilar þurftu oft að skipta á milli gjörólíkra samhengis.

QCon ráðstefna. Mastering Chaos: Netflix leiðarvísir um örþjónustur. 4. hluti

Í þessu sambandi átti ég samtal við einn af yfirverkfræðingum fyrirtækisins, sem ég spurði: „Hvað ætti að vera réttur langtímaarkitektúr?“ og hann spurði gagnspurningarinnar: „Þú hefur líklega meiri áhyggjur. um skipulagslegar afleiðingar - hvað gerist ef við samþættum þessa hluti, og þeir brjóta það sem við höfum lært að gera vel? Þessi nálgun er mjög viðeigandi fyrir lögmál Conway: "Samtök sem hanna kerfi eru takmörkuð af hönnun sem endurtekur samskiptaskipulag þeirrar stofnunar." Þetta er mjög óhlutbundin skilgreining, svo ég kýs frekar nákvæmari: „Hver ​​sem er hugbúnaður endurspeglar skipulagið sem skapaði það. Hér er uppáhalds tilvitnunin mín frá Eric Raymond: "Ef þú ert með fjögur teymi þróunaraðila sem vinna að þýðanda, endarðu með fjögurra passa þýðanda." Jæja, Netflix er með fjögurra passa þýðanda, og það er hvernig við vinnum.

Við getum sagt að í þessu tilfelli sé skottið að vafra um hundinn. Fyrsta forgangsverkefni okkar er ekki lausnin, heldur skipulagið; það er skipulagið sem knýr arkitektúrinn sem við höfum. Smám saman, úr hráefni af þjónustu, færðum við okkur yfir í arkitektúr sem við kölluðum Blade Runner, því hér erum við að tala um brúnþjónustu og getu NCCP til að vera aðskilin og samþætt beint inn í Zuul umboðið, API gáttina og samsvarandi virkni. „hlutum“ hefur verið breytt í nýjar örþjónustur með fullkomnari öryggi, endurspilun, gagnaflokkun osfrv.

Þannig má segja að deildarskipulag og gangverk fyrirtækja gegni mikilvægu hlutverki í mótun kerfishönnunar og sé þáttur sem stuðlar að eða hindrar breytingar. Örþjónustuarkitektúr er flókinn og lífrænn og heilsa hans byggir á aga og innleiddri glundroða.

Smá auglýsingar

Þakka þér fyrir að vera hjá okkur. Líkar þér við greinarnar okkar? Viltu sjá meira áhugavert efni? Styðjið okkur með því að leggja inn pöntun eða mæla með því við vini, cloud VPS fyrir forritara frá $4.99, einstök hliðstæða upphafsþjóna, sem var fundið upp af okkur fyrir þig: Allur sannleikurinn um VPS (KVM) E5-2697 v3 (6 kjarna) 10GB DDR4 480GB SSD 1Gbps frá $19 eða hvernig á að deila netþjóni? (fáanlegt með RAID1 og RAID10, allt að 24 kjarna og allt að 40GB DDR4).

Dell R730xd 2x ódýrari í Equinix Tier IV gagnaveri í Amsterdam? Aðeins hér 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 sjónvarp frá $199 í Hollandi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - frá $99! Lestu um Hvernig á að byggja upp infrastructure Corp. flokki með notkun Dell R730xd E5-2650 v4 netþjóna að verðmæti 9000 evrur fyrir eyri?

Heimild: www.habr.com

Bæta við athugasemd