Terjemahan artikel ini disiapkan khusus untuk siswa kursus Praktek dan Alat DevOps , yang dimulai hari ini!
Pernahkah Anda merilis layanan baru dalam produksi? Atau mungkin terlibat dalam pemeliharaan layanan seperti itu? Jika demikian, apa yang Anda ikuti? Apa yang baik untuk produksi dan apa yang buruk? Bagaimana Anda melatih anggota tim baru untuk merilis atau mempertahankan layanan yang ada.
Sebagian besar perusahaan dalam hal praktik eksploitasi industri akhirnya sampai pada pendekatan "Wild West."
Metode coba-coba menciptakan lingkungan di mana pencarian pelaku dan pemindahan tanggung jawab adalah hal biasa. Dengan perilaku ini, menjadi semakin sulit untuk belajar dari kesalahan dan tidak mengulanginya lagi.
Organisasi yang sukses:
- mengenali perlunya pedoman untuk produksi,
- pelajari praktik terbaik
- memulai diskusi tentang kesiapan untuk produksi ketika mengembangkan sistem atau komponen baru,
- memastikan kepatuhan dengan aturan persiapan untuk produksi.
Persiapan untuk produksi mencakup proses peninjauan. Ulasan dapat berupa daftar periksa atau serangkaian pertanyaan. Tinjauan dapat dilakukan secara manual, otomatis, atau keduanya. Alih-alih daftar persyaratan statis, templat daftar periksa dapat dibuat yang dapat disesuaikan dengan kebutuhan spesifik. Dengan cara ini, insinyur dapat diberikan cara untuk mewarisi pengetahuan dan fleksibilitas yang memadai saat dibutuhkan.
Kapan harus memeriksa layanan untuk kesiapan produksi?
Penting untuk melakukan pemeriksaan kesiapan untuk produksi tidak hanya segera sebelum dirilis, tetapi juga ketika mentransfernya ke tim operasi lain atau karyawan baru.
Periksa kapan:
- Melepaskan layanan baru dalam produksi.
- Transfer operasi layanan produksi ke tim lain, seperti SRE.
- Transfer operasi layanan produksi ke karyawan baru.
- Atur dukungan teknis.
Daftar Periksa Kesiapan Produksi
Beberapa waktu yang lalu, sebagai contoh, saya
menerbitkan daftar periksa untuk memeriksa kesiapan untuk produksi. Meskipun daftar ini muncul saat bekerja dengan klien Google Cloud, daftar ini akan berguna dan dapat diterapkan di luar Google Cloud.
Desain dan pengembangan
- Merancang proses pembuatan yang dapat direproduksi yang tidak memerlukan akses ke layanan eksternal dan tidak bergantung pada kegagalan sistem eksternal.
- Selama periode desain dan pengembangan, tentukan dan instal SLO untuk layanan Anda.
- Dokumentasikan harapan untuk ketersediaan layanan eksternal yang Anda andalkan.
- Hindari satu titik kegagalan dengan menghapus ketergantungan pada satu sumber daya global. Gandakan sumber daya atau gunakan opsi mundur jika sumber daya tidak tersedia (misalnya, nilai kode keras).
Manajemen konfigurasi
- Konfigurasi statis, kecil, dan non-rahasia dapat dilewatkan melalui opsi baris perintah. Selebihnya, gunakan layanan penyimpanan konfigurasi.
- Konfigurasi dinamis harus memiliki pengaturan cadangan jika layanan konfigurasi tidak tersedia.
- Konfigurasi lingkungan pengembangan tidak boleh terkait dengan konfigurasi produksi. Jika tidak, ini dapat menyebabkan akses ke layanan produksi dari lingkungan pengembangan, yang dapat menyebabkan masalah privasi dan kebocoran data.
- Dokumentasikan apa yang dapat dikonfigurasi secara dinamis dan jelaskan perilaku fallback jika sistem pengiriman konfigurasi tidak tersedia.
Manajemen rilis
- Dokumentasikan proses rilis secara rinci. Jelaskan bagaimana rilis memengaruhi SLO (misalnya, peningkatan latensi sementara karena kesalahan cache).
- Dokumen rilis kenari.
- Kembangkan rencana untuk menganalisis pelepasan kenari dan, jika mungkin, mekanisme kembalikan otomatis.
- Pastikan rollback dapat menggunakan proses yang sama dengan penyebaran.
Kesesuaian untuk pemantauan (Observability)
- Pastikan Anda mengkompilasi set metrik yang diperlukan untuk SLO.
- Pastikan Anda dapat membedakan antara data klien dan server. Ini penting untuk pemecahan masalah.
- Tetapkan lansiran untuk mengurangi biaya tenaga kerja. Misalnya, hapus lansiran yang disebabkan oleh operasi rutin.
- Jika Anda menggunakan Stackdriver, sertakan metrik platform GCP di dasbor Anda. Konfigurasikan lansiran untuk dependensi GCP.
- Selalu mendistribusikan jejak yang masuk. Bahkan jika Anda tidak berpartisipasi dalam penelusuran, ini akan memungkinkan layanan tingkat rendah untuk men-debug masalah produksi.
Perlindungan dan keamanan
- Pastikan semua koneksi eksternal dienkripsi.
- Pastikan proyek produksi Anda memiliki pengaturan IAM yang benar.
- Gunakan jaringan untuk mengisolasi kelompok instance mesin virtual.
- Gunakan VPN untuk terhubung dengan aman ke jaringan jarak jauh.
- Dokumentasikan dan pantau akses pengguna ke data. Pastikan bahwa semua akses pengguna ke data diperiksa dan dicatat.
- Pastikan bahwa titik akhir debug dibatasi oleh ACL.
- Sanitasi input pengguna. Konfigurasikan batas ukuran muatan untuk input pengguna.
- Pastikan layanan Anda secara selektif dapat memblokir lalu lintas masuk untuk pengguna individu. Ini akan memblokir pelanggaran tanpa mempengaruhi pengguna lain.
- Hindari titik akhir eksternal yang memulai sejumlah besar operasi internal.
Perencanaan kapasitas
- Dokumentasikan bagaimana skala layanan Anda. Misalnya: jumlah pengguna, ukuran muatan masuk, jumlah pesan masuk.
- Dokumentasikan persyaratan sumber daya untuk layanan Anda. Misalnya: jumlah mesin virtual yang dialokasikan, jumlah mesin virtual Spanner, peralatan khusus seperti GPU atau TPU.
- Batasan sumber daya dokumen: jenis sumber daya, wilayah, dll.
- Batas kuota dokumen untuk membuat sumber daya baru. Misalnya, membatasi jumlah permintaan API GCE jika Anda menggunakan API untuk membuat instance baru.
- Pertimbangkan untuk melakukan tes stres untuk menganalisis penurunan kinerja.
Itu saja. Sampai jumpa di kelas!