QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Josh Evans tham txog lub ntiaj teb tsis txaus ntseeg thiab muaj yeeb yuj ntawm Netflix microservices, pib nrog lub hauv paus tseem ceeb - lub cev ntawm microservices, cov teeb meem cuam tshuam nrog kev faib tawm, thiab lawv cov txiaj ntsig. Tsim los ntawm lub hauv paus no, nws tshawb txog kev coj noj coj ua, kev tsim vaj tsev, thiab kev ua haujlwm uas ua rau muaj kev paub txog microservice.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 1
QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 2
QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 3

Tsis zoo li kev ua haujlwm drift, kev qhia txog cov lus tshiab rau kev pabcuam thoob ntiaj teb thiab cov thev naus laus zis tshiab xws li cov thawv ntim khoom yog kev txiav txim siab kom paub ntxiv qhov nyuaj tshiab rau ib puag ncig. Kuv pab neeg ua haujlwm tau tsim qauv ntawm txoj kev siv thev naus laus zis zoo tshaj plaws rau Netflix, uas tau muab ci rau hauv cov kev coj ua zoo tshaj plaws raws li Java thiab EC2, tab sis raws li kev lag luam loj hlob, cov neeg tsim khoom tau pib ntxiv cov khoom tshiab xws li Python, Ruby, Node-JS, thiab Docker.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Kuv zoo siab heev uas peb yog thawj tus tawm tswv yim rau peb cov khoom kom ua haujlwm zoo yam tsis tau tos cov neeg siv khoom tsis txaus siab. Txhua yam pib yooj yim txaus - peb muaj cov haujlwm ua haujlwm hauv Python thiab ob peb daim ntawv thov rov qab hauv Ruby, tab sis txhua yam tau nthuav dav ntxiv thaum peb cov neeg tsim tawm lub vev xaib tshaj tawm tias lawv yuav ditch JVM thiab tab tom yuav tsiv mus rau lub vev xaib. daim ntawv thov rau Node software platform. js. Tom qab kev taw qhia ntawm Docker, txhua yam tau dhau los ua ntau yam nyuaj. Peb ua raws li kev xav thiab cov thev naus laus zis uas peb tau los ua qhov tseeb thaum peb siv lawv rau cov neeg siv khoom vim lawv tau txais txiaj ntsig ntau. Kuv yuav qhia koj tias vim li cas qhov no yog li ntawd.

API Gateway yeej muaj peev xwm los koom ua ke cov ntawv sau zoo uas tuaj yeem ua qhov kawg rau UI cov neeg tsim khoom. Lawv tau hloov dua siab tshiab txhua tus ntawm cov ntawv no hauv txoj hauv kev uas tom qab hloov pauv lawv tuaj yeem xa mus rau kev tsim khoom thiab tom qab ntawd rau cov neeg siv khoom siv, thiab tag nrho cov kev hloov pauv no tau synchronized nrog cov ntsiab lus kawg uas tau khiav hauv API rooj vag.

Txawm li cas los xij, qhov no rov ua qhov teeb meem ntawm kev tsim ib qho tshiab monolith qhov twg API cov kev pabcuam tau dhau los nrog cov lej hauv txoj hauv kev uas muaj ntau yam tsis ua haujlwm tshwm sim. Piv txwv li, qee qhov kawg tau raug tshem tawm, lossis cov ntawv sau cia tau tsim ntau yam ntawm ib yam dab tsi uas cov versions coj tag nrho cov cim xeeb ntawm API kev pabcuam.

Nws yog qhov tsim nyog los coj cov ntsiab lus kawg no thiab rub lawv tawm ntawm API kev pabcuam. Ua li no, peb tsim Node.js Cheebtsam uas khiav raws li cov ntawv thov me me hauv Docker ntim. Qhov no tso cai rau peb cais cov teeb meem thiab kev sib tsoo los ntawm cov ntawv thov node.

Tus nqi ntawm cov kev hloov pauv no yog qhov loj heev thiab muaj cov hauv qab no:

  • Cov cuab yeej tsim tawm. Kev tswj cov thev naus laus zis tshiab xav tau cov cuab yeej tshiab vim tias pab pawg UI, siv cov ntawv sau zoo heev los tsim cov qauv siv tau zoo, tsis tas yuav siv sijhawm ntau los tswj cov txheej txheem, lawv tsuas yog yuav tsum tau sau ntawv thiab xyuas lawv cov haujlwm.
    Opportunity Insight and Sorting - Ib qho piv txwv tseem ceeb yog cov cuab yeej tshiab uas xav tau los nthuav tawm cov ntaub ntawv tsav tsheb ua haujlwm. Nws yog ib qho tsim nyog kom paub ntau npaum li cas cov processor tau nyob, nco tau siv npaum li cas, thiab sau cov ntaub ntawv no yuav tsum muaj cov cuab yeej sib txawv.
  • Fragmentation ntawm lub hauv paus dluab - lub hauv paus yooj yim AMI tau ua ntau fragmented thiab tshwj xeeb.
  • Node tswj. Tsis muaj cov cuab yeej tawm ntawm lub txee lossis thev naus laus zis uas tso cai rau koj los tswj cov nodes hauv huab, yog li peb tsim Titus, lub thawv tswj hwm lub thawv uas muab cov thawv ntim tau yooj yim thiab txhim khu kev qha thiab kev sib koom ua ke huab nrog Amazon AWS.
  • Duplication ntawm lub tsev qiv ntawv lossis platform. Muab cov thev naus laus zis tshiab nrog tib lub luag haujlwm tseem ceeb ntawm lub platform yuav tsum tau muab luam tawm mus rau hauv huab-based Node.js cov cuab yeej tsim tawm.
  • Kev kawm nkhaus thiab kev ua lag luam. Qhov kev taw qhia ntawm cov thev naus laus zis tshiab ua rau muaj kev sib tw tshiab uas yuav tsum tau kov yeej thiab kawm los ntawm.

Yog li, peb tsis tuaj yeem txwv peb tus kheej mus rau ib qho "txoj kev taug kev" thiab yuav tsum tau tsim txoj hauv kev tshiab los txhawb peb cov thev naus laus zis. Txhawm rau kom cov nqi qis, peb txwv kev txhawb nqa hauv nruab nrab thiab tsom mus rau JVM, cov nodes tshiab, thiab Docker. Peb tau saib xyuas qhov cuam tshuam zoo, qhia rau pab pawg txog tus nqi ntawm lawv cov kev txiav txim siab, thiab txhawb kom lawv nrhiav txoj hauv kev los rov siv cov kev daws teeb meem loj uas lawv tau tsim lawm. Peb siv txoj hauv kev no thaum txhais cov kev pabcuam ua lus txawv teb chaws kom xa cov khoom rau cov neeg siv khoom thoob ntiaj teb. Piv txwv suav nrog cov tsev qiv ntawv cov neeg siv tau yooj yim uas tuaj yeem tsim tawm tau, yog li nws yooj yim heev los tsim Python version, Ruby version, Java version, thiab lwm yam.

Peb pheej nrhiav sijhawm los siv cov thev naus laus zis uas tau ua pov thawj lawv tus kheej hauv ib qho chaw thiab lwm qhov xwm txheej zoo sib xws.

Cia peb tham txog lub ntsiab lus kawg - kev hloov pauv, lossis kev hloov pauv. Saib seb qhov kev noj ntawm peb cov khoom sib txawv li cas los ntawm hnub ntawm lub lim tiam thiab los ntawm teev nyob rau ib hnub. Koj tuaj yeem hais tias 9 teev sawv ntxov yog lub sijhawm nyuaj tshaj plaws rau Netflix, thaum lub sijhawm thauj khoom mus txog qhov siab tshaj plaws.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Yuav ua li cas peb thiaj ua tau siab ceev ntawm kev siv software nrhav, uas yog, tas li hloov tshiab rau lub kaw lus, tsis ua rau muaj kev cuam tshuam hauv kev xa khoom thiab tsis tsim teeb meem rau peb cov neeg siv khoom? Netflix tau ua tiav qhov no los ntawm kev siv Spinnaker, lub ntiaj teb tshiab huab-raws li kev tswj hwm thiab xa mus tas li (CD) platform.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Critically, Spinnaker tau tsim los koom ua ke peb cov kev coj ua zoo tshaj plaws kom thaum peb xa cov khoom siv rau hauv kev tsim khoom, peb tuaj yeem sib xyaw cov khoom tawm ncaj qha rau hauv peb cov khoom xa tawm.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Peb tau muaj peev xwm muab ob txoj kev siv thev naus laus zis rau hauv peb lub raj xa dej uas peb muaj nuj nqis heev: kev tshuaj ntsuam xyuas canary thiab kev xa tawm mus. Canary tsom xam txhais tau hais tias peb coj ib tug trickle ntawm kev khiav mus rau lub tshiab version ntawm cov cai, thiab dhau mus rau tag nrho cov ntau lawm tsheb khiav los ntawm lub qub version. Tom qab ntawd peb xyuas seb tus lej tshiab yuav ua li cas nrog txoj haujlwm - zoo dua lossis phem dua li qhov uas twb muaj lawm.

Ib qho staggered rollout txhais tau hais tias yog ib qho rollout nyob rau hauv ib cheeb tsam muaj teeb meem, peb tsiv mus rau ib tug rollout nyob rau hauv lwm cheeb tsam. Hauv qhov no, daim ntawv teev npe saum toj no yuav tsum suav nrog hauv cov kav dej ntau lawm. Kuv yuav txuag koj qee lub sijhawm thiab xav kom koj tshawb xyuas kuv cov lus hais dhau los, Engineering Ntiaj Teb Netflix Kev Ua Haujlwm hauv Huab, yog tias koj xav nkag mus tob rau hauv cov ncauj lus no. Kev kaw video ntawm kev hais lus tuaj yeem pom los ntawm kev ua raws li qhov txuas hauv qab ntawm tus swb.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Thaum kawg ntawm kev sib tham, kuv yuav tham luv luv txog lub koom haum thiab architecture ntawm Netflix. Thaum pib peb muaj ib lub tswv yim hu ua Electronic Delivery, uas yog thawj version ntawm NRDP 1.x media streaming. Lub sij hawm "backstream" tuaj yeem siv tau ntawm no vim tias thaum xub thawj tus neeg siv tsuas tuaj yeem rub tawm cov ntsiab lus rau kev ua si tom qab ntawm lub cuab yeej. Netflix thawj zaug xa khoom digital platform, rov qab rau xyoo 2009, zoo li qhov no.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Cov neeg siv khoom siv muaj cov ntawv thov Netflix, uas suav nrog UI interface, kev ruaj ntseg modules, kev pabcuam qhib thiab rov ua haujlwm, raws li NRDP platform - Netflix Ready Device Platform.

Thaum lub sij hawm tus neeg siv interface yog heev yooj yim. Nws muaj dab tsi hu ua Queque Reader, thiab tus neeg siv yuav mus rau qhov chaw ntxiv ib yam dab tsi rau Queque thiab tom qab ntawd saib cov ntsiab lus ntxiv ntawm lawv lub cuab yeej. Qhov zoo yog tias pab pawg pem hauv ntej thiab pab pawg tom qab tau koom nrog tib lub koom haum xa khoom hluav taws xob thiab muaj kev sib raug zoo ua haujlwm. Lub payload tau tsim raws li XML. Nyob rau tib lub sijhawm, Netflix API rau kev lag luam DVD tau tsim, uas txhawb nqa cov ntawv thov thib peb kom coj mus rau peb cov kev pabcuam.

Txawm li cas los xij, Netflix API tau npaj zoo los pab peb nrog cov neeg siv tshiab interface, muaj cov metadata ntawm txhua cov ntsiab lus, cov ntaub ntawv hais txog cov yeeb yaj kiab dab tsi, uas tsim muaj peev xwm tsim cov npe saib. Nws muaj generic REST API raws li JSON schema, HTTP Response Code, tib yam uas siv nyob rau hauv niaj hnub architecture, thiab ib tug OAuth kev ruaj ntseg qauv, uas yog dab tsi yuav tsum tau nyob rau hauv lub sij hawm rau ib tug pem hauv ntej-kawg daim ntawv thov. Qhov no ua rau nws muaj peev xwm txav los ntawm cov qauv pej xeem ntawm kev xa cov ntsiab lus xa mus rau tus kheej.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Qhov teeb meem nrog kev hloov pauv yog kev tawg, txij li tam sim no peb lub kaw lus tau ua haujlwm ob qho kev pabcuam raws li cov qauv sib txawv ntawm kev ua haujlwm - ib qho ntawm So, JSON thiab OAuth, lwm qhov ntawm RPC, XML thiab tus neeg siv kev ruaj ntseg mechanism raws li NTBA token system. Qhov no yog thawj hybrid architecture.

Muaj qhov tseem ceeb ntawm qhov hluav taws kub ntawm peb ob pab pawg vim tias thaum xub thawj API tsis tau ntsuas zoo nrog NCCP thiab qhov no ua rau muaj kev sib txhuam ntawm pab pawg. Qhov sib txawv yog nyob rau hauv cov kev pab cuam, raws tu qauv, circuits, kev ruaj ntseg modules, thiab developers feem ntau yuav tsum tau hloov ntawm tag nrho cov ntsiab lus sib txawv.

QCon Conference. Mastering Chaos: Phau Ntawv Qhia Netflix rau Microservices. Ntu 4

Hauv qhov no, kuv tau tham nrog ib tus kws tshaj lij engineers ntawm lub tuam txhab, uas kuv nug cov lus nug: "Dab tsi yuav tsum yog lub sijhawm ntev ntawm architecture?" thiab nws nug cov lus nug counter: "Koj yuav txhawj xeeb dua. hais txog cov txiaj ntsig ntawm lub koom haum - yuav ua li cas yog tias peb koom ua ke cov khoom no, thiab lawv rhuav tshem qhov peb tau kawm kom ua tau zoo? Txoj hauv kev no tseem ceeb heev rau Conway Txoj Cai: "Cov koom haum uas tsim cov txheej txheem raug txwv los ntawm tus qauv tsim uas rov ua dua cov qauv kev sib txuas lus ntawm lub koom haum ntawd." Qhov no yog lub ntsiab lus tsis meej heev, yog li kuv xav tau ib qho tshwj xeeb: "Txhua daim software cuam tshuam txog lub koom haum uas tsim nws." Nov yog qhov kuv nyiam tshaj tawm los ntawm Eric Raymond: "Yog tias koj muaj plaub pawg neeg tsim khoom ua haujlwm ntawm lub tshuab luam ntawv, koj yuav xaus nrog plaub-pass compiler." Zoo, Netflix muaj plaub-pass compiler, thiab yog li peb ua haujlwm.

Peb tuaj yeem hais tias qhov no tus Tsov tus tw yog wagging tus dev. Peb thawj qhov tseem ceeb tsis yog kev daws teeb meem, tab sis lub koom haum; nws yog lub koom haum uas tsav cov architecture uas peb muaj. Maj mam, los ntawm ib tug hodgepodge ntawm cov kev pab cuam, peb tsiv mus rau ib tug architecture uas peb hu ua Blade Runner, vim hais tias ntawm no peb tab tom tham txog ntug kev pab cuam thiab lub peev xwm ntawm NCCP yuav tsum tau muab cais thiab kev koom ua ke ncaj qha mus rau hauv lub npe Zuul, API rooj vag, thiab cov coj functional. "cov khoom" tau hloov mus rau hauv microservices tshiab nrog kev ruaj ntseg siab dua, rov ua dua, cov ntaub ntawv txheeb xyuas, thiab lwm yam nta.

Yog li, nws tuaj yeem hais tau tias cov tuam tsev ua haujlwm thiab cov tuam txhab muaj zog ua lub luag haujlwm tseem ceeb hauv kev tsim qauv tsim thiab yog qhov tseem ceeb uas txhawb lossis cuam tshuam kev hloov pauv. Microservices architecture yog complex thiab organic, thiab nws txoj kev noj qab haus huv yog raws li kev qhuab qhia thiab qhia kev chaos.

Kev tshaj tawm me ntsis

Ua tsaug uas koj tau nyob nrog peb. Koj puas nyiam peb cov ntawv? Xav pom cov ntsiab lus nthuav ntxiv? Txhawb nqa peb los ntawm kev tso ib qho kev txiav txim lossis qhia rau cov phooj ywg, huab VPS rau cov tsim tawm los ntawm $ 4.99, ib qho tshwj xeeb analogue ntawm nkag-theem servers, uas tau tsim los ntawm peb rau koj: Qhov tseeb tag nrho txog VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps los ntawm $ 19 los yog yuav ua li cas faib cov server? (muaj nrog RAID1 thiab RAID10, mus txog 24 cores thiab mus txog 40GB DDR4).

Dell R730xd 2x pheej yig dua hauv Equinix Tier IV data center hauv Amsterdam? Tsuas yog nyob ntawm no 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV los ntawm $ 199 hauv Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - los ntawm $ 99! Nyeem txog Yuav ua li cas tsim infrastructure Corp. chav kawm nrog kev siv Dell R730xd E5-2650 v4 servers muaj nqis 9000 euros rau ib lub nyiaj?

Tau qhov twg los: www.hab.com

Ntxiv ib saib