Pengenalan kepada Spinnaker

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan melihat Spinnaker, platform penyampaian berterusan sumber terbuka yang dibina oleh Netflix. Kami dapat menggunakannya untuk menyebarkan aplikasi kami di beberapa penyedia awan.

Sistem ini dibina di atas Spring Boot dan menyokong banyak penyedia awan.

Kita akan melihat bagaimana ia berfungsi dan untuk kes mana kita boleh menggunakannya.

2. Latar belakang

Mari kita lihat sejarah perkembangan perisian. Pertama, kami mempunyai Air Terjun dengan pelepasan yang jarang berlaku.

Selepas itu, kami mula bekerja Agile dan menyampaikan ciri setiap pecut. Namun, kami masih tidak menggunakan produksi setiap pecut. Malangnya, pengguna masih tidak dapat menggunakan ciri baru, yang terletak di rak.

Terdapat beberapa sebab untuk tidak menggunakan secara berkala. Salah satunya adalah kenyataan bahawa langkah-langkah penyebaran sering dilakukan secara manual dan terdedah kepada kesalahan manusia.

Di samping itu, beberapa orang berpendapat bahawa menggunakan lebih sering bererti lebih banyak risiko untuk menghadapi masalah. Pada masa ini, kita kebanyakan bersetuju bahawa menggunakan perubahan kecil bererti lebih sedikit risiko untuk kesalahan besar. Walaupun begitu, jika ada kesalahan, kami dapat dengan cepat menemukannya dalam perubahan kecil dan mengeluarkan versi baru yang menyelesaikan masalah tersebut.

3. Spinnaker

Dengan Spinnaker, kami dapat menggunakan penghantaran berterusan atau penerapan berterusan untuk melepaskan aplikasi kami pada pengeluaran secara automatik. Penghantaran berterusan bermaksud segala-galanya disiapkan untuk pengeluaran produksi.

Walau bagaimanapun, pelepasan tersebut disetujui secara manual sebelum aplikasi disebarkan pada pengeluaran. Penyebaran berterusan bermaksud tidak ada campur tangan manual. Semua langkah dilaksanakan, termasuk penyebaran ke produksi. Kami hanya memasukkan kod aplikasi kami ke sistem kawalan versi dan hanya itu.

Dari mendorong kod kami ke kawalan versi hingga penyebaran ke produksi, kami dapat melakukan banyak langkah. Kami dapat membina kod kami, menguji kod unit, menyebarkannya di persekitaran ujian dan menjalankan ujian fungsional. Kami menggunakan saluran paip yang disebut untuk mengkonfigurasi semua langkah tersebut.

Dengan Spinnaker, kami dapat membuat saluran pipa seperti itu dan menyebarkan aplikasi kami di kebanyakan penyedia cloud.

4. Komponen

Spinnaker pada dasarnya terdiri daripada dua bahagian: lapisan abstraksi di atas pelbagai penyedia awan dan alat untuk penyampaian berterusan.

4.1. Penyebaran Awan Tradisional

Apabila kita melihat penyedia awan, mereka semua menawarkan perkhidmatan yang kurang lebih sama. Perkhidmatan tersebut merangkumi seperti contoh, tanpa pelayan, dan sokongan kontena.

Walau bagaimanapun, konfigurasi perkhidmatan tersebut sangat berbeza antara penyedia. Itu menyukarkan pertukaran antara penyedia. Memerlukan masa untuk berpindah ke penyedia cloud yang lain dan mempelajari semua butirannya, yang bermaksud pada dasarnya kita mempunyai kunci vendor dengan penyedia cloud kita.

Netflix ingin mempunyai kemungkinan untuk beralih antara penyedia awan dengan mudah, daripada hanya bergantung pada satu. Itulah sebabnya mereka membina lapisan abstraksi di atas penyedia awan.

4.2. Lapisan Abstraksi

Apabila kita menggunakan Spinnaker, ia sama di semua penyedia awan. Kita dapat menggunakannya di Amazon Web Services, Microsoft Azure, Google Cloud Platform, OpenStack, Google App Engine, atau Kubernetes. Ini membolehkan kami berpindah ke penyedia awan lain jika harganya lebih kompetitif.

Lebih-lebih lagi, kita dapat memilih untuk menyebarkan ke beberapa penyedia pada masa yang sama. Dengan cara itu kita dapat menjalankan aplikasi kita pada dua atau lebih penyedia untuk kelebihan pekerja.

Manfaat lain dari lapisan abstraksi adalah bahawa ia memberi tumpuan kepada aplikasi dan bukannya sumber. Biasanya, penyedia awan menunjukkan kepada kita sumber yang kita gunakan sekarang. Walau bagaimanapun, kita harus mengetahui sendiri aplikasi apa yang menggunakan sumber mana.

Tetapi sumber tidak menarik bagi kami. Kami ingin menjalankan aplikasi kami tanpa menghabiskan masa untuk mencatat sumber. Spinnaker mempunyai pandangan yang berpusat pada aplikasi. Oleh itu, apabila kita melihatnya, pertama-tama kita melihat aplikasi tersebut, dan kemudian kita melihat sumber yang digunakan oleh aplikasi tersebut.

4.3. Penghantaran Berterusan

Di atas lapisan abstraksi, Netflix membina platform penghantaran berterusan. Platform ini membolehkan kami menyebarkan aplikasi kami pada satu atau lebih penyedia awan. Ia kelihatan seperti Jenkins, tetapi ia menawarkan integrasi yang lebih baik dengan penyedia awan dan memerlukan konfigurasi yang lebih sedikit.

Kita boleh mencetuskan saluran penghantaran berterusan dari Jenkins, misalnya gambar Docker yang dimuat naik, atau git push. Selepas itu, kita hanya boleh membuat gambar atau bekas dengan aplikasi kita dan memulakannya pada pengeluaran.

Walau bagaimanapun, terdapat banyak pilihan lain seperti ujian automatik dan kelulusan manual sebelum digunakan pada pengeluaran.

Kita bahkan dapat memutuskan strategi apa yang ingin kita ikuti ketika menggunakan versi baru dari aplikasi yang ada. Oleh itu, mungkin dengan mengganti versi lama dengan versi baru. Namun, strategi yang lebih baik adalah menjalankannya berdampingan terlebih dahulu. Dengan cara itu kita dapat memeriksa secara automatik atau manual apakah versi baru berfungsi dan, jika ya, keluarkan versi lama.

5. Model Awan Netflix

Setiap aplikasi terdiri daripada satu atau lebih kumpulan pelayan. Versi aplikasi yang sama dijalankan pada semua keadaan dalam kumpulan pelayan. Konvensyen penamaan berikut digunakan: ---. Medan tumpukan (pilihan) digunakan untuk menentukan sama ada kumpulan pelayan untuk ujian, pengeluaran atau tujuan lain. Medan perincian pilihan digunakan untuk maklumat tambahan.

Akhirnya, kami mempunyai konsep kluster yang mengandungi satu atau lebih kumpulan pelayan dengan nama, timbunan, dan perincian yang sama. Walau bagaimanapun, selalunya setiap kumpulan pelayan dalam kluster menjalankan versi aplikasi yang berbeza. Contoh yang gagal akan diganti dengan contoh baru.

Anda juga boleh menambahkan contoh ke kumpulan pelayan secara automatik untuk menampung peningkatan beban.

6. Strategi Penyebaran

Ketika kami menggunakan versi baru aplikasi, strategi 'merah / hitam' biasanya dipilih. Pertama, kumpulan pelayan baru yang mengandungi versi aplikasi baru disebarkan ke kluster. Setelah penerapan aplikasi, pemeriksaan dilakukan untuk memastikan sama ada kumpulan pelayan baru sihat.

Kini, kumpulan pelayan diaktifkan dan tersedia untuk pelanggan kami. Akhirnya, kumpulan pelayan lama dilumpuhkan.

Dalam senario ini, mudah untuk mengembalikan jika ada yang tidak kena dengan pelayan aplikasi baru. Kami hanya dapat mengaktifkan kumpulan pelayan dengan versi lama lagi dan menjadikannya tersedia untuk pelanggan kami.

7. Mengapa Spinnaker

Dengan Spinnaker, kita dapat memfokuskan pada aplikasi kita dan bukannya sumber awan yang kita gunakan. Ini memudahkan penggunaan dan penyelenggaraan aplikasi kami.

Selain itu, Spinnaker memungkinkan untuk berjalan di beberapa penyedia awan pada masa yang sama. Lebih-lebih lagi, kita boleh beralih ke penyedia awan lain dengan mudah bergantung pada strategi harga dan ciri yang ada.

8. Kesimpulannya

Spinnaker memanfaatkan pengalaman Netflix. Kita dapat menggunakan pengetahuan mereka dan bekerja dengan cara yang sama dengan usaha yang minimum. Berdasarkan alat-alat ini, kami dapat dengan mudah menerapkan pipa penyebaran untuk menyebarkan aplikasi kami ke produksi.

Untuk mengetahui lebih lanjut mengenai Spinnaker, muat turun ebook Penghantaran Berterusan dengan Spinnaker percuma.