Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Josh Evans bercakap tentang dunia perkhidmatan mikro Netflix yang huru-hara dan berwarna-warni, bermula dengan yang paling asas - anatomi perkhidmatan mikro, cabaran yang berkaitan dengan sistem teragih dan faedahnya. Berdasarkan asas ini, beliau meneroka budaya, seni bina dan amalan operasi yang membawa kepada penguasaan perkhidmatan mikro.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 1
Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 2
Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 3

Tidak seperti drift operasi, pengenalan bahasa baharu untuk pengantarabangsaan perkhidmatan dan teknologi baharu seperti bekas adalah keputusan sedar untuk menambah kerumitan baharu kepada alam sekitar. Pasukan operasi saya menyeragamkan pada peta jalan teknologi terbaik untuk Netflix, yang dimasukkan ke dalam amalan terbaik yang dipratentukan berdasarkan Java dan EC2, tetapi apabila perniagaan berkembang, pembangun mula menambah komponen baharu seperti Python, Ruby, Node-JS dan Docker.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Saya sangat berbangga kerana kami adalah orang pertama yang menyokong produk kami untuk berfungsi dengan baik tanpa menunggu aduan pelanggan. Semuanya bermula dengan cukup mudah - kami mempunyai program pengendalian dalam Python dan beberapa aplikasi pejabat belakang dalam Ruby, tetapi perkara menjadi lebih menarik apabila pembangun web kami mengumumkan bahawa mereka akan meninggalkan JVM dan akan memindahkan web aplikasi ke platform perisian Node.js. Selepas pengenalan Docker, perkara menjadi lebih kompleks. Kami mengikut logik dan teknologi yang kami hasilkan menjadi realiti apabila kami melaksanakannya untuk pelanggan kerana ia sangat masuk akal. Saya akan memberitahu anda mengapa ini begitu.

API Gateway sebenarnya mempunyai keupayaan untuk menyepadukan skrip hebat yang boleh bertindak sebagai titik akhir untuk pembangun UI. Mereka menukar setiap skrip ini dengan cara yang selepas membuat perubahan, mereka boleh menggunakan skrip tersebut ke pengeluaran dan kemudian ke peranti pengguna, dan semua perubahan ini telah disegerakkan dengan titik akhir yang dijalankan dalam get laluan API.

Walau bagaimanapun, ini mengulangi masalah mencipta monolit baharu di mana perkhidmatan API telah terlebih dimuatkan dengan kod sedemikian rupa sehingga pelbagai senario kegagalan berlaku. Sebagai contoh, beberapa titik akhir telah dialih keluar atau skrip secara rawak menjana begitu banyak versi sesuatu sehingga versi tersebut mengambil semua memori yang tersedia bagi perkhidmatan API.

Adalah logik untuk mengambil titik akhir ini dan menariknya keluar daripada perkhidmatan API. Untuk melakukan ini, kami mencipta komponen Node.js yang dijalankan sebagai aplikasi kecil dalam bekas Docker. Ini membolehkan kami mengasingkan sebarang masalah dan ranap yang disebabkan oleh aplikasi nod ini.

Kos perubahan ini agak besar dan terdiri daripada faktor-faktor berikut:

  • Alat produktiviti. Menguruskan teknologi baharu memerlukan alat baharu kerana pasukan UI, menggunakan skrip yang sangat baik untuk mencipta model yang cekap, tidak perlu menghabiskan banyak masa untuk menguruskan infrastruktur, mereka hanya perlu menulis skrip dan menyemak fungsinya.
    Wawasan dan Pengisihan Peluang - Contoh utama ialah alatan baharu yang diperlukan untuk mendedahkan maklumat pemacu prestasi. Ia adalah perlu untuk mengetahui berapa banyak pemproses telah diduduki, bagaimana memori digunakan, dan mengumpul maklumat ini memerlukan alat yang berbeza.
  • Pecahan imej asas - AMI asas ringkas telah menjadi lebih berpecah-belah dan khusus.
  • Pengurusan nod. Tiada seni bina atau teknologi luar yang tersedia yang membolehkan anda mengurus nod dalam awan, jadi kami membina Titus, platform pengurusan kontena yang menyediakan penggunaan kontena berskala dan boleh dipercayai serta penyepaduan awan dengan Amazon AWS.
  • Penduaan perpustakaan atau platform. Menyediakan teknologi baharu dengan fungsi teras yang sama bagi platform memerlukan penduaan ke dalam alatan pembangun Node.js berasaskan awan.
  • Keluk pembelajaran dan pengalaman industri. Pengenalan teknologi baharu tidak dapat tidak mewujudkan cabaran baharu yang mesti diatasi dan dipelajari.

Oleh itu, kami tidak boleh mengehadkan diri kami kepada satu "jalan berturap" dan perlu sentiasa membina cara baharu untuk memajukan teknologi kami. Untuk mengurangkan kos, kami mengehadkan sokongan terpusat dan memfokuskan pada JVM, nod baharu dan Docker. Kami mengutamakan impak yang berkesan, memaklumkan pasukan tentang kos keputusan mereka, dan menggalakkan mereka mencari cara untuk menggunakan semula penyelesaian berimpak tinggi yang telah mereka bangunkan. Kami menggunakan pendekatan ini apabila menterjemah perkhidmatan ke dalam bahasa asing untuk menyampaikan produk kepada pelanggan antarabangsa. Contohnya termasuk perpustakaan pelanggan yang agak mudah yang boleh dijana secara automatik, supaya agak mudah untuk mencipta versi Python, versi Ruby, versi Java, dll.

Kami sentiasa mencari peluang untuk menggunakan teknologi terbukti yang telah membuktikan diri mereka di satu tempat dan dalam situasi serupa yang lain.

Mari kita bercakap tentang elemen terakhir - perubahan, atau variasi. Lihat bagaimana penggunaan produk kami berbeza-beza secara tidak sekata mengikut hari dalam seminggu dan mengikut jam sepanjang hari. Anda boleh mengatakan bahawa 9 pagi adalah masa paling sukar untuk Netflix, apabila beban pada sistem mencapai maksimum.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Bagaimanakah kita boleh mencapai kelajuan tinggi pelaksanaan inovasi perisian, iaitu, sentiasa membuat perubahan baharu pada sistem, tanpa menyebabkan gangguan dalam penyampaian perkhidmatan dan tanpa menimbulkan kesulitan kepada pelanggan kita? Netflix mencapai matlamat ini melalui penggunaan Spinnaker, platform pengurusan berasaskan awan global dan penghantaran berterusan (CD) baharu.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Secara kritis, Spinnaker direka bentuk untuk menyepadukan amalan terbaik kami supaya semasa kami menggunakan komponen ke dalam pengeluaran, kami boleh menyepadukan output terus ke dalam teknologi penyampaian media kami.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Kami telah dapat menggabungkan dua teknologi ke dalam saluran penghantaran kami yang sangat kami hargai: analisis kenari automatik dan penggunaan berperingkat. Analisis Canary bermakna kami mengarahkan aliran trafik ke versi baharu kod dan meneruskan trafik pengeluaran yang lain melalui versi lama. Kemudian kami menyemak cara kod baharu mengatasi tugas - lebih baik atau lebih teruk daripada yang sedia ada.

Pelancaran berperingkat bermakna jika pelancaran di satu wilayah menghadapi masalah, kami beralih ke pelancaran di wilayah lain. Dalam kes ini, senarai semak yang disebutkan di atas mesti disertakan dalam saluran paip pengeluaran. Saya akan menjimatkan masa anda dan mengesyorkan anda menyemak ceramah saya sebelum ini, Kejuruteraan Global Netflix Operations in the Cloud, jika anda berminat untuk menyelami topik ini dengan lebih mendalam. Rakaman video ucapan itu boleh dilihat dengan mengikuti pautan di bahagian bawah slaid.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Pada akhir ceramah, saya akan bercakap secara ringkas tentang organisasi dan seni bina Netflix. Pada mulanya kami mempunyai skim yang dipanggil Penghantaran Elektronik, yang merupakan versi pertama penstriman media NRDP 1.x. Istilah "strim belakang" boleh digunakan di sini kerana pada mulanya pengguna hanya boleh memuat turun kandungan untuk main semula kemudian pada peranti. Platform penghantaran digital pertama Netflix, pada tahun 2009, kelihatan seperti ini.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Peranti pengguna mengandungi aplikasi Netflix, yang terdiri daripada antara muka UI, modul keselamatan, pengaktifan perkhidmatan dan main balik, berdasarkan platform NRDP - Platform Peranti Sedia Netflix.

Pada masa itu antara muka pengguna adalah sangat mudah. Ia mengandungi apa yang dipanggil Pembaca Queque, dan pengguna akan pergi ke tapak untuk menambahkan sesuatu pada Queque dan kemudian melihat kandungan tambahan pada peranti mereka. Positifnya ialah pasukan bahagian hadapan dan pasukan bahagian belakang tergolong dalam organisasi Penghantaran Elektronik yang sama dan mempunyai hubungan kerja yang rapat. Muatan dibuat berdasarkan XML. Pada masa yang sama, API Netflix untuk perniagaan DVD telah dicipta, yang menggalakkan aplikasi pihak ketiga untuk mengarahkan trafik ke perkhidmatan kami.

Walau bagaimanapun, API Netflix telah bersedia untuk membantu kami dengan antara muka pengguna yang inovatif, yang mengandungi metadata semua kandungan, maklumat tentang filem yang tersedia, yang mencipta keupayaan untuk menjana senarai tontonan. Ia mempunyai API REST generik berdasarkan skema JSON, Kod Respons HTTP, yang sama digunakan dalam seni bina moden dan model keselamatan OAuth, yang diperlukan pada masa itu untuk aplikasi bahagian hadapan. Ini memungkinkan untuk beralih daripada model awam bagi penghantaran kandungan penstriman kepada model peribadi.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Masalah dengan peralihan ialah pemecahan, memandangkan kini sistem kami mengendalikan dua perkhidmatan berdasarkan prinsip operasi yang berbeza - satu pada Rest, JSON dan OAuth, satu lagi pada RPC, XML dan mekanisme keselamatan pengguna berdasarkan sistem token NTBA. Ini adalah seni bina hibrid pertama.

Pada asasnya terdapat tembok api antara kedua-dua pasukan kami kerana pada mulanya API tidak berskala dengan baik dengan NCCP dan ini menyebabkan pergeseran antara pasukan. Perbezaannya adalah dalam perkhidmatan, protokol, litar, modul keselamatan dan pembangun selalunya terpaksa bertukar antara konteks yang sama sekali berbeza.

Persidangan QCon. Menguasai Kekacauan: Panduan Netflix untuk Perkhidmatan Mikro. Bahagian 4

Dalam hal ini, saya berbual dengan salah seorang jurutera kanan syarikat itu, kepada siapa saya bertanya soalan: "Apakah seni bina jangka panjang yang sepatutnya?" dan dia bertanya soalan balas: "Anda mungkin lebih prihatin. tentang akibat organisasi - apakah yang berlaku jika kita menyepadukan perkara ini, dan ia memecahkan apa yang telah kita pelajari untuk melakukannya dengan baik? Pendekatan ini sangat relevan dengan Undang-undang Conway: "Organisasi yang mereka bentuk sistem dikekang oleh reka bentuk yang mereplikasi struktur komunikasi organisasi itu." Ini adalah definisi yang sangat abstrak, jadi saya lebih suka definisi yang lebih khusus: "Mana-mana perisian mencerminkan struktur organisasi yang menciptanya." Inilah petikan kegemaran saya daripada Eric Raymond: "Jika anda mempunyai empat pasukan pembangun yang bekerja pada pengkompil, anda akan mendapat pengkompil empat laluan." Nah, Netflix mempunyai pengkompil empat laluan, dan begitulah cara kami bekerja.

Kita boleh mengatakan bahawa dalam kes ini ekor menggoyang-goyangkan anjing. Keutamaan pertama kami bukanlah penyelesaian, tetapi organisasi; ia adalah organisasi yang memacu seni bina yang kami ada. Secara beransur-ansur, daripada pelbagai perkhidmatan, kami berpindah ke seni bina yang kami panggil Blade Runner, kerana di sini kita bercakap tentang perkhidmatan edge dan keupayaan NCCP untuk dipisahkan dan disepadukan terus ke dalam proksi Zuul, gerbang API, dan fungsi yang sepadan. "kepingan" telah ditukar menjadi perkhidmatan mikro baharu dengan ciri keselamatan, main semula, pengisihan data, dsb. yang lebih maju.

Oleh itu, boleh dikatakan bahawa struktur jabatan dan dinamik syarikat memainkan peranan penting dalam membentuk reka bentuk sistem dan merupakan faktor yang menggalakkan atau menghalang perubahan. Seni bina perkhidmatan mikro adalah kompleks dan organik, dan kesihatannya adalah berdasarkan disiplin dan kekacauan yang diperkenalkan.

Sedikit pengiklanan

Terima kasih kerana tinggal bersama kami. Adakah anda suka artikel kami? Ingin melihat kandungan yang lebih menarik? Sokong kami dengan membuat pesanan atau mengesyorkan kepada rakan, cloud VPS untuk pembangun dari $4.99, analog unik pelayan peringkat permulaan, yang kami cipta untuk anda: Keseluruhan kebenaran tentang VPS (KVM) E5-2697 v3 (6 Teras) 10GB DDR4 480GB SSD 1Gbps daripada $19 atau bagaimana untuk berkongsi pelayan? (tersedia dengan RAID1 dan RAID10, sehingga 24 teras dan sehingga 40GB DDR4).

Dell R730xd 2 kali lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya disini 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV daripada $199 di Belanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - daripada $99! Baca tentang Bagaimana untuk membina infrastruktur corp. kelas dengan penggunaan pelayan Dell R730xd E5-2650 v4 bernilai 9000 euro untuk satu sen?

Sumber: www.habr.com

Tambah komen