Pengantar Spinnaker

1. Ikhtisar

Dalam tutorial ini, kita akan melihat Spinnaker, platform pengiriman berkelanjutan sumber terbuka yang dibuat oleh Netflix. Kami dapat menggunakannya untuk menerapkan aplikasi kami di berbagai penyedia cloud.

Sistem ini dibangun di atas Spring Boot dan mendukung banyak penyedia cloud.

Kami akan melihat cara kerjanya dan untuk kasus mana kami dapat menggunakannya.

2. Latar Belakang

Mari kita lihat sejarah pengembangan perangkat lunak. Pertama, kami memiliki Air Terjun dengan pelepasan yang jarang.

Setelah itu, kami mulai mengerjakan Agile dan memberikan fitur setiap sprint. Namun, kami masih tidak menerapkan produksi setiap sprint. Sayangnya, pengguna masih belum bisa menggunakan fitur-fitur baru yang tergeletak di rak.

Ada beberapa alasan untuk tidak menerapkan secara teratur. Salah satunya adalah fakta bahwa langkah-langkah penerapan seringkali dilakukan secara manual dan rentan terhadap kesalahan manusia.

Selain itu, beberapa orang berpikir bahwa menerapkan lebih sering berarti lebih banyak risiko untuk potensi masalah. Saat ini, kami sebagian besar setuju bahwa menerapkan perubahan kecil berarti lebih sedikit risiko kesalahan besar. Meski begitu, jika ada kesalahan, kami dapat dengan cepat menemukannya di perubahan kecil dan merilis versi baru yang menyelesaikan masalah.

3. Spinnaker

Dengan Spinnaker, kami dapat menggunakan pengiriman berkelanjutan atau penerapan berkelanjutan untuk merilis aplikasi kami pada produksi secara otomatis. Pengiriman berkelanjutan berarti semuanya disiapkan untuk rilis produksi.

Namun, rilis disetujui secara manual sebelum aplikasi diterapkan pada produksi. Penerapan berkelanjutan berarti tidak ada intervensi manual. Semua langkah dijalankan, termasuk penerapan ke produksi. Kami hanya mendorong kode aplikasi kami ke sistem kontrol versi dan hanya itu.

Dari mendorong kode kami ke kontrol versi hingga penerapan ke produksi, kami dapat menjalankan banyak langkah. Kita dapat membangun kode kita, menguji unit kode, menerapkannya pada lingkungan pengujian dan menjalankan pengujian fungsional. Kami menggunakan apa yang disebut pipeline untuk mengonfigurasi semua langkah tersebut.

Dengan Spinnaker, kami dapat membuat pipeline seperti itu dan menerapkan aplikasi kami di sebagian besar penyedia cloud.

4. Komponen

Spinnaker pada dasarnya terdiri dari dua bagian: lapisan abstraksi di atas berbagai penyedia cloud dan alat untuk pengiriman berkelanjutan.

4.1. Penerapan Cloud Tradisional

Saat kita melihat penyedia cloud, mereka semua menawarkan layanan yang kurang lebih sama. Layanan tersebut mencakup hal-hal sebagai instance, tanpa server, dan dukungan kontainer.

Namun, konfigurasi layanan tersebut sangat bervariasi di antara penyedia. Itu membuat lebih sulit untuk beralih antar penyedia. Butuh beberapa waktu untuk pindah ke penyedia cloud lain dan mempelajari semua detailnya, yang berarti pada dasarnya kami memiliki vendor lock-in dengan penyedia cloud kami.

Netflix ingin memiliki kemungkinan untuk beralih dengan mudah di antara penyedia cloud, daripada hanya bergantung pada satu penyedia. Itulah mengapa mereka membangun lapisan abstraksi di atas penyedia cloud.

4.2. Lapisan Abstraksi

Saat kami menggunakan Spinnaker, itu sama di semua penyedia cloud. Kita dapat menggunakannya di Amazon Web Services, Microsoft Azure, Google Cloud Platform, OpenStack, Google App Engine, atau Kubernetes. Hal ini memungkinkan kami untuk pindah ke penyedia cloud lain jika harganya lebih kompetitif.

Terlebih lagi, kami dapat memilih untuk menerapkan ke beberapa penyedia secara bersamaan. Dengan begitu kami dapat menjalankan aplikasi kami pada dua atau lebih penyedia untuk redundansi ekstra.

Manfaat lain dari lapisan abstraksi adalah ia berfokus pada aplikasi, bukan sumber daya. Biasanya, penyedia cloud menunjukkan kepada kami sumber daya yang saat ini kami gunakan. Namun, kita harus mencari tahu sendiri aplikasi apa yang menggunakan sumber daya apa.

Tetapi sumber daya tidak menarik bagi kami. Kami ingin menjalankan aplikasi kami tanpa menghabiskan waktu untuk melacak sumber daya. Spinnaker memiliki tampilan yang berpusat pada aplikasi. Jadi, ketika kita melihatnya, pertama kita melihat aplikasinya, dan kemudian kita melihat sumber daya yang digunakan oleh aplikasi tersebut.

4.3. Pengiriman Berkelanjutan

Di atas lapisan abstraksi, Netflix membangun platform pengiriman berkelanjutan. Platform ini memungkinkan kami untuk menyebarkan aplikasi kami pada satu atau lebih penyedia cloud. Sepertinya Jenkins, tetapi menawarkan integrasi yang lebih baik dengan penyedia cloud dan memerlukan lebih sedikit konfigurasi.

Kita bisa memicu pipeline pengiriman berkelanjutan dari Jenkins, gambar Docker yang diupload, atau git push, misalnya. Setelah itu, kita cukup membuat gambar atau wadah dengan aplikasi kita dan memulainya pada produksi.

Namun, ada lebih banyak opsi yang tersedia seperti pengujian otomatis dan persetujuan manual sebelum menerapkan produksi.

Kami bahkan dapat memutuskan strategi apa yang ingin kami ikuti saat menerapkan versi baru dari aplikasi yang sudah ada. Dengan demikian, dimungkinkan untuk mengganti versi lama dengan versi baru. Namun, strategi yang lebih baik adalah menjalankannya berdampingan terlebih dahulu. Dengan begitu, kami dapat secara otomatis atau manual memeriksa apakah versi baru berfungsi dan, jika demikian, menghapus versi lama.

5. Model Netflix Cloud

Setiap aplikasi terdiri dari satu atau lebih grup server. Versi aplikasi yang sama berjalan di semua contoh di grup server. Konvensi penamaan berikut digunakan: ---. Kolom tumpukan (opsional) digunakan untuk menentukan apakah grup server untuk pengujian, produksi, atau tujuan lain. Bidang detail opsional digunakan untuk informasi tambahan.

Akhirnya, kami memiliki konsep cluster yang berisi satu atau lebih grup server dengan nama, tumpukan, dan detail yang sama. Namun, sebagian besar waktu setiap grup server di cluster menjalankan versi aplikasi yang berbeda. Instance yang gagal akan diganti dengan instance baru.

Ini juga memungkinkan untuk secara otomatis menambahkan instance ke grup server untuk mengakomodasi peningkatan beban.

6. Strategi Penerapan

Saat kami menerapkan versi baru aplikasi, strategi 'merah / hitam' biasanya dipilih. Pertama, grup server baru yang berisi versi baru aplikasi di-deploy ke cluster. Setelah penerapan aplikasi, pemeriksaan dilakukan untuk memverifikasi apakah grup server baru sehat.

Sekarang, grup server diaktifkan dan tersedia untuk pelanggan kami. Terakhir, grup server lama dinonaktifkan.

Dalam skenario ini, mudah untuk melakukan rollback jika terjadi kesalahan dengan server aplikasi baru. Kami hanya dapat mengaktifkan grup server dengan versi lama lagi dan membuatnya tersedia untuk pelanggan kami.

7. Mengapa Spinnaker

Dengan Spinnaker, kita bisa fokus pada aplikasi kita alih-alih sumber daya cloud yang kita gunakan. Ini membuatnya lebih mudah untuk menyebarkan dan memelihara aplikasi kita.

Selain itu, Spinnaker memungkinkan untuk dijalankan di beberapa penyedia cloud secara bersamaan. Selain itu, kami dapat dengan mudah beralih ke penyedia cloud lain tergantung pada strategi harga dan fitur yang tersedia.

8. Kesimpulan

Spinnaker dibangun berdasarkan pengalaman Netflix. Kita dapat menggunakan pengetahuan dan pekerjaan mereka dengan cara yang sama dengan sedikit usaha. Berdasarkan alat ini, kami dapat dengan mudah menerapkan pipeline penerapan untuk menerapkan aplikasi kami ke produksi.

Untuk mempelajari lebih lanjut tentang Spinnaker, unduh e-book Pengiriman Berkelanjutan dengan Spinnaker gratis.