Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Josh Evans ngomong babagan jagad layanan mikro Netflix sing kacau lan warni, diwiwiti kanthi dhasar - anatomi layanan mikro, tantangan sing ana gandhengane karo sistem sing disebarake, lan keuntungane. Mbangun dhasar iki, dheweke njelajah praktik budaya, arsitektur, lan operasional sing nyebabake penguasaan layanan mikro.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 1
Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 2
Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 3

Ora kaya drift operasional, introduksi basa anyar kanggo internasionalisasi layanan lan teknologi anyar kayata wadhah minangka keputusan sadar kanggo nambah kerumitan anyar ing lingkungan. Tim operasiku nggawe standar babagan roadmap teknologi paling apik kanggo Netflix, sing digawe dadi praktik paling apik sing wis ditemtokake adhedhasar Java lan EC2, nanging nalika bisnis saya tuwuh, pangembang wiwit nambah komponen anyar kayata Python, Ruby, Node-JS, lan Docker.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Aku bangga banget yen kita dadi sing pertama nyengkuyung supaya produk kita bisa digunakake kanthi apik tanpa ngenteni keluhan pelanggan. Iku kabeh diwiwiti kanthi cukup prasaja - kita duwe program operasi ing Python lan sawetara aplikasi back-office ing Ruby, nanging kedadeyan dadi luwih menarik nalika pangembang web kita ngumumake yen dheweke bakal ngilangi JVM lan bakal mindhah web. aplikasi menyang platform piranti lunak Node.js. Sawise introduksi Docker, kahanan dadi luwih rumit. Kita ngetutake logika lan teknologi sing kita lakoni dadi kasunyatan nalika kita ngetrapake kanggo para pelanggan amarga padha nggawe akal sehat. Aku bakal ngomong apa iki.

API Gateway pancen nduweni kemampuan kanggo nggabungake skrip gedhe sing bisa dadi titik pungkasan kanggo pangembang UI. Dheweke ngowahi saben skrip kasebut kanthi cara sing sawise nggawe owah-owahan bisa disebarake menyang produksi lan banjur menyang piranti pangguna, lan kabeh owah-owahan kasebut disinkronake karo titik pungkasan sing mlaku ing gateway API.

Nanging, iki mbaleni masalah nggawe monolit anyar ing ngendi layanan API kakehan kode kanthi macem-macem skenario kegagalan. Contone, sawetara endpoints dibusak, utawa Tulisan acak kui akeh versi soko sing versi njupuk munggah kabeh memori kasedhiya saka layanan API.

Iku logis kanggo njupuk endpoints iki lan narik metu saka layanan API. Kanggo nindakake iki, kita nggawe komponen Node.js sing mlaku minangka aplikasi cilik ing kontaner Docker. Iki ngidini kita ngisolasi masalah lan kacilakan sing disebabake dening aplikasi simpul kasebut.

Biaya owah-owahan kasebut cukup gedhe lan kalebu faktor ing ngisor iki:

  • Alat produktivitas. Ngatur teknologi anyar mbutuhake alat anyar amarga tim UI, nggunakake skrip sing apik banget kanggo nggawe model sing efisien, ora kudu mbuwang akeh wektu kanggo ngatur infrastruktur, mung kudu nulis skrip lan mriksa fungsine.
    Kesempatan Insight and Sorting - Conto utama yaiku alat anyar sing dibutuhake kanggo nemokake informasi driver kinerja. Sampeyan kudu ngerti carane akeh prosesor dikuwasani, carane memori digunakake, lan ngumpulake informasi iki mbutuhake macem-macem alat.
  • Fragmentasi gambar dhasar - AMI dhasar sing prasaja wis dadi luwih pecah lan khusus.
  • Manajemen simpul. Ora ana arsitektur utawa teknologi sing ora kasedhiya sing ngidini sampeyan ngatur simpul ing awan, mula kita mbangun Titus, platform manajemen wadah sing nyedhiyakake penyebaran wadhah sing bisa diukur lan dipercaya lan integrasi awan karo Amazon AWS.
  • Duplikasi perpustakaan utawa platform. Nyedhiyakake teknologi anyar kanthi fungsi inti sing padha ing platform kasebut kudu diduplikasi menyang piranti pangembang Node.js berbasis awan.
  • Kurva sinau lan pengalaman industri. Introduksi teknologi anyar mesthi nggawe tantangan anyar sing kudu diatasi lan dipelajari.

Mangkono, kita ora bisa mbatesi awake dhewe menyang "dalan sing diaspal" lan kudu terus-terusan mbangun cara anyar kanggo maju teknologi kita. Kanggo nyuda biaya, kita mbatesi dhukungan terpusat lan fokus ing JVM, simpul anyar, lan Docker. Kita prioritasake pengaruh sing efektif, menehi informasi marang tim babagan biaya keputusane, lan nyengkuyung supaya golek cara kanggo nggunakake maneh solusi sing duwe pengaruh dhuwur sing wis dikembangake. Kita nggunakake pendekatan iki nalika nerjemahake layanan menyang basa manca kanggo ngirim produk menyang klien internasional. Conto kalebu perpustakaan klien relatif prasaja sing bisa kui kanthi otomatis, supaya iku cukup gampang kanggo nggawe versi Python, versi Ruby, versi Java, etc.

Kita terus-terusan golek kesempatan kanggo nggunakake teknologi sing wis kabukten sing wis kabukten ing sak panggonan lan ing kahanan liyane sing padha.

Ayo dadi pirembagan bab unsur pungkasan - owah-owahan, utawa variasi. Delengen kepiye konsumsi produk kita beda-beda kanthi ora rata miturut dina minggu lan jam saben dina. Sampeyan bisa ujar manawa jam 9 yaiku wektu paling angel kanggo Netflix, nalika beban sistem tekan maksimal.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Kepiye carane bisa entuk kacepetan implementasine inovasi piranti lunak kanthi cepet, yaiku, terus-terusan nggawe owah-owahan anyar ing sistem, tanpa nyebabake gangguan ing pangiriman layanan lan tanpa nggawe rasa ora nyaman marang para pelanggan? Netflix entuk iki kanthi nggunakake Spinnaker, platform manajemen basis awan global lan pangiriman terus (CD).

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Secara kritis, Spinnaker dirancang kanggo nggabungake praktik paling apik supaya nalika kita nyebarake komponen menyang produksi, kita bisa nggabungake output langsung menyang teknologi pangiriman media.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Kita wis bisa nggabungake rong teknologi menyang pipa pangiriman sing dianggep banget: analisis kenari otomatis lan penyebaran bertahap. Analisis Canary tegese kita ngarahake lalu lintas menyang versi kode anyar, lan ngliwati lalu lintas produksi liwat versi lawas. Banjur kita mriksa carane kode anyar ngrampungake tugas - luwih apik utawa luwih elek tinimbang sing wis ana.

Rollout staggered tegese yen rollout ing sawijining wilayah duwe masalah, kita pindhah menyang rollout ing wilayah liyane. Ing kasus iki, dhaptar priksa sing kasebut ing ndhuwur kudu kalebu ing pipa produksi. Aku bakal ngirit sawetara wektu lan nyaranake sampeyan mriksa pirembagan sadurunge, Teknik Operasi Netflix Global ing Cloud, yen sampeyan kepengin nyilem luwih jero babagan topik iki. Rekaman video pidato kasebut bisa dideleng kanthi ngetutake tautan ing sisih ngisor slide.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Ing pungkasan pirembagan, aku bakal ngomong babagan organisasi lan arsitektur Netflix. Ing wiwitan, kita duwe skema sing diarani Electronic Delivery, yaiku versi pisanan NRDP 1.x media streaming. Istilah "backstream" bisa digunakake ing kene amarga wiwitane pangguna mung bisa ngundhuh konten kanggo muter maneh ing piranti kasebut. Platform pangiriman digital pertama Netflix, ing taun 2009, katon kaya iki.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Piranti pangguna ngemot aplikasi Netflix, sing kalebu antarmuka UI, modul keamanan, aktivasi layanan lan puter maneh, adhedhasar platform NRDP - Platform Piranti Siap Netflix.

Ing wektu iku antarmuka panganggo banget prasaja. Isine apa sing diarani Queque Reader, lan pangguna bakal pindhah menyang situs kasebut kanggo nambah barang menyang Queque banjur ndeleng konten sing ditambahake ing piranti kasebut. Positif yaiku tim mburi ngarep lan tim mburi mburi duweke organisasi Pangiriman Elektronik sing padha lan duwe hubungan kerja sing cedhak. Payload digawe adhedhasar XML. Ing wektu sing padha, API Netflix kanggo bisnis DVD digawe, sing nyengkuyung aplikasi pihak katelu kanggo ngarahake lalu lintas menyang layanan kita.

Nanging, Netflix API wis disiapake kanthi apik kanggo mbantu kita karo antarmuka panganggo sing inovatif, ngemot metadata kabeh isi, informasi babagan film apa sing kasedhiya, sing nggawe kemampuan kanggo ngasilake dhaptar tontonan. Nduwe API REST umum adhedhasar skema JSON, Kode Respons HTTP, sing padha digunakake ing arsitektur modern, lan model keamanan OAuth, sing dibutuhake ing wektu kasebut kanggo aplikasi ngarep. Iki ndadekake bisa pindhah saka model umum kanggo ngirim konten streaming menyang sing pribadi.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Masalah karo transisi yaiku fragmentasi, amarga saiki sistem kita ngoperasikake rong layanan adhedhasar prinsip operasi sing beda - siji ing Rest, JSON lan OAuth, liyane ing RPC, XML lan mekanisme keamanan pangguna adhedhasar sistem token NTBA. Iki minangka arsitektur hibrida pisanan.

Ing kasunyatan, ana firewall ing antarane rong tim amarga wiwitane API ora cocog karo NCCP lan iki nyebabake gesekan ing antarane tim. Bedane ana ing layanan, protokol, sirkuit, modul keamanan, lan pangembang asring kudu ngalih ing antarane konteks sing beda.

Konferensi QCon. Mastering Chaos: Pandhuan Netflix kanggo Microservices. Bagean 4

Ing babagan iki, aku ngobrol karo salah sawijining insinyur senior perusahaan, sing dakkarepake: "Apa sing kudu dadi arsitektur jangka panjang sing tepat?" Lan dheweke takon pitakon: "Sampeyan bisa uga luwih prihatin. babagan konsekwensi organisasi - apa sing kedadeyan yen kita nggabungake barang-barang kasebut, lan ngrusak apa sing wis kita lakoni kanthi becik? Pendekatan iki cocog banget karo Hukum Conway: "Organisasi sing ngrancang sistem diwatesi dening desain sing niru struktur komunikasi organisasi kasebut." Iki minangka definisi sing abstrak banget, mula aku luwih seneng sing luwih spesifik: "Sembarang piranti lunak nggambarake struktur organisasi sing nggawe." Iki minangka kutipan favorit saka Eric Raymond: "Yen sampeyan duwe papat tim pangembang sing nggarap kompiler, sampeyan bakal entuk kompiler papat pass." Ya, Netflix duwe kompiler papat pass, lan kaya ngono.

Kita bisa ngomong yen ing kasus iki buntut wagging asu. Prioritas pisanan kita dudu solusi, nanging organisasi; iku organisasi sing nyurung arsitektur sing kita duwe. Mboko sithik, saka hodgepodge layanan, kita pindhah menyang arsitektur sing disebut Blade Runner, amarga ing kene kita ngomong babagan layanan pinggiran lan kemampuan NCCP kanggo dipisahake lan digabungake langsung menyang proxy Zuul, gateway API, lan fungsi sing cocog. "potongan" wis diuripake menyang microservices anyar karo keamanan luwih maju, muter maneh, ngurutake data, etc.

Mangkono, bisa diarani yen struktur departemen lan dinamika perusahaan nduweni peran penting kanggo mbentuk desain sistem lan minangka faktor sing ningkatake utawa ngalangi owah-owahan. Arsitèktur Microservices rumit lan organik, lan kesehatané adhedhasar disiplin lan ngenalaken lam.

Sawetara iklan

Matur nuwun kanggo tetep karo kita. Apa sampeyan seneng karo artikel kita? Pengin ndeleng konten sing luwih menarik? Ndhukung kita kanthi nggawe pesenan utawa menehi rekomendasi menyang kanca, cloud VPS kanggo pangembang saka $4.99, analog unik saka server level entri, sing diciptakake kanggo sampeyan: Bebener kabeh babagan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps saka $ 19 utawa carane nuduhake server? (kasedhiya karo RAID1 lan RAID10, munggah 24 intine lan nganti 40GB DDR4).

Dell R730xd 2 kaping luwih murah ing pusat data Equinix Tier IV ing Amsterdam? Mung kene 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV saka $199 ing Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - saka $99! Maca babagan Carane mbangun infrastruktur corp. kelas karo nggunakake Dell R730xd E5-2650 v4 server worth 9000 euro kanggo Penny?

Source: www.habr.com

Add a comment