Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Josh Evans yayi magana game da rikice-rikice da launuka masu launi na Netflix microservices, farawa da ainihin asali - tsarin halittar microservices, ƙalubalen da ke tattare da tsarin rarrabawa, da fa'idodin su. Gina kan wannan harsashi, yana bincika al'adu, gine-gine, da ayyukan aiki waɗanda ke haifar da ƙwaƙƙwaran ƙananan sabis.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 1
Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 2
Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 3

Ba kamar zaɓen aiki ba, ƙaddamar da sabbin harsuna don haɗakar da sabis da sabbin fasahohi kamar kwantena sune yanke shawara mai hankali don ƙara sabon sarkakiya ga muhalli. Ƙungiyoyin ayyukana sun daidaita akan mafi kyawun taswirar fasaha don Netflix, wanda aka gasa a cikin mafi kyawun ayyuka masu kyau dangane da Java da EC2, amma yayin da kasuwancin ya girma, masu haɓakawa sun fara ƙara sababbin abubuwa kamar Python, Ruby, Node-JS, da Docker.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Ina matukar alfahari da cewa mu ne farkon wanda ya ba da shawarar cewa samfurinmu ya yi aiki mai kyau ba tare da jiran koke-koken abokin ciniki ba. Duk ya fara da sauƙi - muna da shirye-shiryen aiki a cikin Python da ƴan aikace-aikacen ofis na baya a Ruby, amma abubuwa sun fi ban sha'awa sosai lokacin da masu haɓaka gidan yanar gizon mu suka ba da sanarwar cewa za su cire JVM kuma za su motsa gidan yanar gizon. aikace-aikace zuwa dandalin software na Node. js. Bayan gabatarwar Docker, abubuwa sun fi rikitarwa. Mun bi dabaru kuma fasahar da muka fito da ita ta zama gaskiya lokacin da muka aiwatar da su ga abokan ciniki saboda suna da ma'ana sosai. Zan gaya muku dalilin da ya sa haka yake.

Ƙofar API a haƙiƙa tana da ikon haɗa manyan rubutun da za su iya aiki azaman ƙarshen ƙarshen masu haɓaka UI. Sun canza kowane ɗayan waɗannan rubutun ta hanyar da bayan yin canje-canje za su iya tura su zuwa samarwa sannan zuwa na'urorin masu amfani, kuma duk waɗannan canje-canje an daidaita su tare da ƙarshen ƙarshen da ke gudana a cikin ƙofar API.

Koyaya, wannan ya sake maimaita matsalar ƙirƙirar sabon monolith inda sabis ɗin API ya cika da lamba ta yadda yanayin gazawa daban-daban ya faru. Misali, an cire wasu wuraren ƙarewa, ko kuma rubutun ba da gangan ba ya haifar da nau'ikan wani abu da yawa wanda nau'ikan suka ɗauki duk abin da ke akwai na ƙwaƙwalwar sabis na API.

Yana da ma'ana don ɗaukar waɗannan wuraren ƙarshen kuma cire su daga sabis ɗin API. Don yin wannan, mun ƙirƙiri abubuwan Node.js waɗanda ke gudana azaman ƙananan aikace-aikace a cikin kwantena Docker. Wannan ya ba mu damar ware duk wata matsala da hadarurruka da waɗannan aikace-aikacen kumburi suka haifar.

Farashin waɗannan canje-canjen yana da girma sosai kuma ya ƙunshi abubuwa masu zuwa:

  • Kayan aikin samarwa. Sarrafa sababbin fasahohin na buƙatar sababbin kayan aiki saboda ƙungiyar UI, ta yin amfani da rubutun masu kyau don ƙirƙirar samfuri mai inganci, ba su da amfani da lokaci mai yawa wajen sarrafa kayan aiki, kawai sun rubuta rubutun kuma duba aikin su.
    Damar Insight da Rarraba - Babban misali shine sabbin kayan aikin da ake buƙata don buɗe bayanan direban aiki. Ya zama dole a san nawa na'ura mai sarrafa ya mamaye, yadda ake amfani da ƙwaƙwalwar ajiya, kuma tattara wannan bayanin yana buƙatar kayan aiki daban-daban.
  • Rarraba hotunan tushe - tushe mai sauƙi AMI ya zama mafi rarrabuwa da ƙwarewa.
  • Gudanar da kumburi. Babu wani tsarin gine-gine ko fasaha da ke samuwa wanda ke ba ku damar sarrafa nodes a cikin girgije, don haka mun gina Titus, tsarin kula da kwantena wanda ke ba da ma'auni kuma abin dogara da jigilar kaya da haɗin girgije tare da Amazon AWS.
  • Kwafi na ɗakin karatu ko dandamali. Samar da sabbin fasahohi tare da ainihin aikin dandali ɗaya na buƙatar kwafi shi zuwa kayan aikin haɓaka Node.js na tushen girgije.
  • Kwanan koyo da ƙwarewar masana'antu. Gabatar da sabbin fasahohin ba makawa ya haifar da sabbin kalubale wadanda dole ne a shawo kan su kuma a koya musu.

Don haka, ba za mu iya iyakance kanmu ga “hanyar laɓe” ɗaya ba kuma dole ne mu ci gaba da gina sabbin hanyoyin ci gaba da fasaharmu. Don rage farashi, mun iyakance tallafi na tsakiya kuma mun mai da hankali kan JVM, sabbin nodes, da Docker. Mun ba da fifiko mai tasiri mai tasiri, sanar da ƙungiyoyi game da farashin yanke shawara, kuma mun ƙarfafa su su nemo hanyoyin da za su sake amfani da mafi girman tasiri da suka riga sun ƙirƙira. Mun yi amfani da wannan hanyar lokacin da muke fassara sabis ɗin zuwa harsunan waje don isar da samfurin ga abokan cinikin ƙasashen waje. Misalai sun haɗa da ɗakunan karatu masu sauƙi na abokin ciniki waɗanda za a iya samarwa ta atomatik, ta yadda yana da sauƙin ƙirƙirar sigar Python, sigar Ruby, sigar Java, da sauransu.

Muna ci gaba da neman damar yin amfani da ingantattun fasahohin da suka tabbatar da kansu a wuri guda da kuma wasu yanayi makamancin haka.

Bari muyi magana game da kashi na ƙarshe - canje-canje, ko bambancin. Dubi yadda yawan amfanin samfuran mu ke bambanta rashin daidaituwa ta rana ta mako da sa'a a cikin yini. Kuna iya cewa 9 na safe shine lokaci mafi wuya ga Netflix, lokacin da nauyin da ke kan tsarin ya kai iyakarsa.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Ta yaya za mu iya cimma babban saurin aiwatar da sabbin kayan aikin software, wato, koyaushe yin sabbin canje-canje ga tsarin, ba tare da haifar da katsewa a cikin isar da sabis ba kuma ba tare da haifar da damuwa ga abokan cinikinmu ba? Netflix ya sami wannan ta hanyar amfani da Spinnaker, sabon tsarin gudanarwa na tushen girgije na duniya da ci gaba da bayarwa (CD).

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Mahimmanci, Spinnaker an ƙera shi ne don haɗa mafi kyawun ayyukanmu ta yadda yayin da muke tura abubuwan da aka gyara cikin samarwa, za mu iya haɗa kayan aiki kai tsaye cikin fasahar isar da kafofin watsa labarai.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Mun sami damar haɗa fasahohi guda biyu a cikin bututun isar da mu waɗanda muke ƙima sosai: bincike kan canary mai sarrafa kansa da tsarin turawa. Binciken Canary yana nufin cewa muna jagorantar hanyar zirga-zirga zuwa sabon sigar lambar, kuma mu wuce sauran zirga-zirgar samarwa ta tsohuwar sigar. Sa'an nan za mu duba yadda sabon code jimre da aikin - mafi alhẽri ko muni fiye da data kasance.

Fitowar da aka yi ba tare da bata lokaci ba yana nufin cewa idan shirin a wani yanki yana da matsala, za mu matsa zuwa shirin a wani yanki. A wannan yanayin, jerin abubuwan da aka ambata a sama dole ne a haɗa su cikin bututun samarwa. Zan ɓata muku ɗan lokaci kuma in ba ku shawarar duba maganata ta baya, Injiniya Global Netflix Operations in the Cloud, idan kuna sha'awar nutsewa cikin wannan batu. Ana iya kallon rikodin bidiyo na magana ta bin hanyar haɗin da ke ƙasan faifan.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

A ƙarshen magana, zan ɗan yi magana game da tsari da gine-gine na Netflix. A farkon muna da wani makirci da ake kira Electronic Delivery, wanda shine farkon sigar NRDP 1.x media streaming. Ana iya amfani da kalmar "backstream" anan saboda da farko mai amfani zai iya sauke abun ciki kawai don sake kunnawa na'urar. Dandalin isar da dijital na farko na Netflix, baya cikin 2009, yayi kama da wannan.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Na'urar mai amfani ta ƙunshi aikace-aikacen Netflix, wanda ya ƙunshi ƙirar UI, tsarin tsaro, kunna sabis da sake kunnawa, bisa tsarin NRDP - Netflix Ready Device Platform.

A lokacin mai amfani ya kasance mai sauqi qwarai. Ya ƙunshi abin da ake kira Queque Reader, kuma mai amfani zai je shafin don ƙara wani abu zuwa Queque sannan ya duba ƙarin abubuwan da ke cikin na'urar su. Tabbatacce ita ce ƙungiyar ƙarshen gaba da ƙungiyar ƙarshen ƙarshen suna cikin ƙungiyar Isar da Lantarki ɗaya kuma suna da kusancin aiki. An ƙirƙiri nauyin biyan kuɗi bisa XML. A lokaci guda, an ƙirƙiri Netflix API don kasuwancin DVD, wanda ya ƙarfafa aikace-aikacen ɓangare na uku don jagorantar zirga-zirga zuwa sabis ɗinmu.

Duk da haka, Netflix API ya shirya sosai don taimaka mana tare da sabon tsarin mai amfani, wanda ya ƙunshi metadata na duk abun ciki, bayani game da abin da fina-finai ke samuwa, wanda ya haifar da ikon samar da lissafin kallo. Yana da API ɗin REST na gabaɗaya bisa tsarin JSON, lambar amsa HTTP, guda ɗaya da aka yi amfani da shi a cikin gine-ginen zamani, da ƙirar tsaro ta OAuth, wanda shine abin da ake buƙata a lokacin aikace-aikacen gaba-gaba. Wannan ya ba da damar motsawa daga samfurin jama'a na isar da abun ciki zuwa na sirri.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Matsalar canjin canji ta kasance rarrabuwa, tunda yanzu tsarinmu yana gudanar da ayyuka guda biyu bisa ka'idodin aiki daban-daban - ɗayan akan Rest, JSON da OAuth, ɗayan akan RPC, XML da tsarin tsaro na mai amfani dangane da tsarin alamar NTBA. Wannan shi ne tsarin gine-gine na farko na matasan.

Da gaske akwai wuta tsakanin ƙungiyoyin mu biyu saboda da farko API ɗin bai yi girma sosai da NCCP ba kuma hakan ya haifar da rikici tsakanin ƙungiyoyin. Bambance-bambancen sun kasance a cikin ayyuka, ladabi, da'irori, tsarin tsaro, da masu haɓakawa galibi suna canzawa tsakanin mahallin mabambanta.

Taron QCon. Jagoran Hargitsi: Jagorar Netflix zuwa Microservices. Kashi na 4

Dangane da haka, na yi zantawa da daya daga cikin manyan injiniyoyin kamfanin, wanda na yi masa tambaya: “Me ya kamata ya zama tsarin gine-ginen da ya dace na dogon lokaci?” sai ya yi tambayar da ake cewa: “Wataƙila kun fi damuwa da ku. game da sakamakon ƙungiyar - menene zai faru idan muka haɗa waɗannan abubuwa kuma suka karya abin da muka koya don yin da kyau? Wannan tsarin yana da matukar dacewa da Dokar Conway: "Ƙungiyoyin da ke tsara tsarin suna ƙuntatawa ta hanyar zane wanda ya sake fasalin tsarin sadarwa na wannan kungiyar." Wannan ma'anar ce mai ma'ana, don haka na fi son ƙarin takamaiman: "Kowane yanki na software yana nuna tsarin ƙungiyar da ya ƙirƙira ta." Ga abin da na fi so daga Eric Raymond: "Idan kuna da ƙungiyoyi huɗu na masu haɓakawa waɗanda ke aiki akan mai tarawa, za ku ƙare da mai tarawa mai wucewa huɗu." To, Netflix yana da na'ura mai tarawa mai wucewa huɗu, kuma haka muke aiki.

Za mu iya cewa a cikin wannan yanayin wutsiya tana warge kare. Babban fifikonmu na farko ba shine mafita ba, amma kungiya ce, kungiyar ce ke tafiyar da gine-ginen da muke da su. A hankali, daga hodgepodge na ayyuka, mun matsa zuwa wani gine-gine wanda muke kira Blade Runner, saboda a nan muna magana ne game da sabis na gefe da ikon NCCP don rabuwa da haɗa kai tsaye a cikin wakilin Zuul, ƙofar API, da kuma aikin da ya dace. An mai da “gunguwa” zuwa sabbin ƙananan ayyuka tare da ƙarin ingantaccen tsaro, sake kunnawa, rarraba bayanai, da sauransu.

Don haka, ana iya cewa tsarin sashe da haɓakar kamfanoni suna taka muhimmiyar rawa wajen tsara tsarin tsarin kuma abu ne da ke haɓaka ko hana canji. Gine-ginen Microservices yana da sarkakiya kuma na halitta, kuma lafiyarsa ta dogara ne akan horo da gabatar da hargitsi.

Talla kadan

Na gode da kasancewa tare da mu. Kuna son labaran mu? Kuna son ganin ƙarin abun ciki mai ban sha'awa? Goyon bayan mu ta hanyar ba da oda ko ba da shawara ga abokai, girgije VPS don masu haɓakawa daga $ 4.99, analog na musamman na sabar matakin shigarwa, wanda mu muka ƙirƙira muku: Duk gaskiyar game da VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps daga $19 ko yadda ake raba sabar? (akwai tare da RAID1 da RAID10, har zuwa 24 cores kuma har zuwa 40GB DDR4).

Dell R730xd 2x mai rahusa a cibiyar bayanan Equinix Tier IV a Amsterdam? Nan kawai 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV daga $199 a cikin Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - daga $99! Karanta game da Yadda ake gina Infrastructure Corp. aji tare da amfani da sabar Dell R730xd E5-2650 v4 masu darajan Yuro 9000 akan dinari?

source: www.habr.com

Add a comment