Prinsip ini dalam pilar keandalan dari Google Cloud Well-Architected Framework memberikan rekomendasi untuk membantu Anda mendesain dan menjalankan pengujian untuk pemulihan jika terjadi kegagalan.
Prinsip ini relevan dengan area fokus pembelajaran keandalan.
Ringkasan prinsip
Untuk memastikan sistem Anda dapat pulih dari kegagalan, Anda harus menjalankan pengujian secara berkala yang mencakup failover regional, roll back rilis, dan pemulihan data dari cadangan.
Pengujian ini membantu Anda mempraktikkan respons terhadap peristiwa yang menimbulkan risiko besar terhadap keandalan, seperti pemadaman seluruh region. Pengujian ini juga membantu Anda memverifikasi bahwa sistem Anda berperilaku seperti yang diharapkan selama gangguan.
Jika seluruh region mengalami gangguan, Anda harus melakukan failover semua traffic ke region lain. Selama operasi normal workload Anda, saat data diubah, data tersebut harus disinkronkan dari region utama ke region failover. Anda harus memverifikasi bahwa data yang direplikasi selalu terbaru, sehingga pengguna tidak mengalami kehilangan data atau gangguan sesi. Sistem load balancing juga harus dapat mengalihkan traffic ke region failover kapan saja tanpa gangguan layanan. Untuk meminimalkan waktu non-operasional setelah pemadaman layanan regional, engineer operasi juga harus dapat mengalihkan traffic pengguna dari region secara manual dan efisien, dalam waktu sesingkat mungkin. Operasi ini terkadang disebut menguras region, yang berarti Anda menghentikan traffic masuk ke region dan memindahkan semua traffic ke tempat lain.
Rekomendasi
Saat Anda mendesain dan menjalankan pengujian untuk pemulihan kegagalan, pertimbangkan rekomendasi di subbagian berikut.
Menentukan tujuan dan cakupan pengujian
Tentukan dengan jelas apa yang ingin Anda capai dari pengujian. Misalnya, tujuan Anda dapat mencakup hal berikut:
- Memvalidasi batas waktu pemulihan (RTO) dan toleransi durasi kehilangan data (RPO). Untuk mengetahui detailnya, lihat Dasar-dasar perencanaan DR.
- Menilai ketahanan sistem dan fault tolerance dalam berbagai skenario kegagalan.
- Menguji efektivitas mekanisme failover otomatis.
Tentukan komponen, layanan, atau region mana yang berada dalam cakupan pengujian. Cakupan dapat mencakup tingkat aplikasi tertentu seperti frontend, backend, dan database, atau dapat mencakup resource tertentu seperti Google Cloud instance Cloud SQL atau cluster GKE. Cakupan juga harus menentukan dependensi eksternal, seperti API pihak ketiga atau interkoneksi cloud.
Menyiapkan lingkungan untuk pengujian
Pilih lingkungan yang sesuai, sebaiknya lingkungan staging atau sandbox yang mereplikasi penyiapan produksi Anda. Jika Anda melakukan pengujian dalam produksi, pastikan Anda telah menyiapkan langkah-langkah keamanan, seperti pemantauan otomatis dan prosedur roll back manual.
Buat rencana pencadangan. Ambil snapshot atau cadangan database dan layanan penting untuk mencegah kehilangan data selama pengujian. Pastikan tim Anda siap melakukan intervensi manual jika mekanisme failover otomatis gagal.
Untuk mencegah gangguan pengujian, pastikan peran, kebijakan, dan konfigurasi failover IAM Anda disiapkan dengan benar. Pastikan izin yang diperlukan tersedia untuk alat dan skrip pengujian.
Informasikan kepada pemangku kepentingan, termasuk pemilik operasi, DevOps, dan aplikasi, tentang jadwal, cakupan, dan potensi dampak pengujian. Berikan perkiraan linimasa dan perilaku yang diharapkan selama pengujian kepada pemangku kepentingan.
Menyimulasikan skenario kegagalan
Rencanakan dan jalankan kegagalan menggunakan alat seperti Chaos Monkey. Anda dapat menggunakan skrip kustom untuk menyimulasikan kegagalan layanan penting seperti penonaktifan node utama di cluster GKE multi-zona atau instance Cloud SQL yang dinonaktifkan. Anda juga dapat menggunakan skrip untuk menyimulasikan pemadaman jaringan di seluruh region menggunakan aturan firewall atau batasan API berdasarkan cakupan pengujian. Tingkatkan skenario kegagalan secara bertahap untuk mengamati perilaku sistem dalam berbagai kondisi.
Lakukan pengujian beban bersama skenario kegagalan untuk mereplikasi penggunaan dunia nyata selama pemadaman layanan. Uji dampak kegagalan beruntun, seperti perilaku sistem frontend saat layanan backend tidak tersedia.
Untuk memvalidasi perubahan konfigurasi dan menilai ketahanan sistem terhadap kesalahan manusia, uji skenario yang melibatkan kesalahan konfigurasi. Misalnya, jalankan pengujian dengan setelan failover DNS yang salah atau izin IAM yang salah.
Memantau perilaku sistem
Pantau cara load balancer, health check, dan mekanisme lainnya mengalihkan traffic. Gunakan Google Cloud alat seperti Cloud Monitoring dan Cloud Logging untuk mengambil metrik dan peristiwa selama pengujian.
Amati perubahan latensi, tingkat error, dan throughput selama dan setelah simulasi kegagalan, serta pantau dampak performa secara keseluruhan. Identifikasi penurunan atau inkonsistensi dalam pengalaman pengguna.
Pastikan log dibuat dan pemberitahuan dipicu untuk peristiwa utama, seperti pemadaman layanan atau failover. Gunakan data ini untuk memverifikasi efektivitas sistem pemberitahuan dan respons insiden Anda.
Memverifikasi pemulihan terhadap RTO dan RPO Anda
Ukur berapa lama waktu yang diperlukan sistem untuk melanjutkan operasi normal setelah kegagalan, lalu bandingkan data ini dengan RTO yang ditentukan dan dokumentasikan setiap kesenjangan.
Pastikan integritas dan ketersediaan data selaras dengan RPO. Untuk menguji konsistensi database, bandingkan snapshot atau cadangan database sebelum dan setelah kegagalan.
Evaluasi pemulihan layanan dan pastikan semua layanan dipulihkan ke status fungsional dengan gangguan pengguna minimal.
Mendokumentasikan dan menganalisis hasil
Dokumentasikan setiap langkah pengujian, skenario kegagalan, dan perilaku sistem yang sesuai. Sertakan stempel waktu, log, dan metrik untuk analisis mendetail.
Soroti hambatan, titik tunggal kegagalan, atau perilaku tidak terduga yang diamati selama pengujian. Untuk membantu memprioritaskan perbaikan, kategorikan masalah berdasarkan tingkat keparahan dan dampaknya.
Sarankan peningkatan pada arsitektur sistem, mekanisme failover, atau penyiapan pemantauan. Berdasarkan temuan pengujian, perbarui kebijakan dan playbook failover yang relevan. Sajikan laporan postmortem kepada pemangku kepentingan. Laporan tersebut harus meringkas hasil, pelajaran yang didapat, dan langkah berikutnya. Untuk mengetahui informasi selengkapnya, lihat Melakukan postmortem secara menyeluruh.
Melakukan iterasi dan peningkatan
Untuk memvalidasi keandalan dan ketahanan yang berkelanjutan, rencanakan pengujian berkala (misalnya, setiap tiga bulan).
Jalankan pengujian dalam berbagai skenario, termasuk perubahan infrastruktur, update software, dan peningkatan beban traffic.
Otomatiskan pengujian failover menggunakan pipeline CI/CD untuk mengintegrasikan pengujian keandalan ke dalam siklus proses pengembangan Anda.
Selama postmortem, gunakan masukan dari pemangku kepentingan dan pengguna akhir untuk meningkatkan proses pengujian dan ketahanan sistem.