Prinsip dalam pilar keandalan Google Cloud Well-Architected Framework ini memberikan rekomendasi untuk membantu Anda mendesain dan menjalankan pengujian pemulihan jika terjadi kegagalan.
Prinsip ini relevan dengan area fokus pembelajaran keandalan.
Ringkasan prinsip
Untuk memastikan bahwa sistem Anda dapat pulih dari kegagalan, Anda harus menjalankan pengujian secara berkala yang mencakup failover regional, rollback rilis, dan pemulihan data dari cadangan.
Pengujian ini membantu Anda melatih respons terhadap peristiwa yang menimbulkan risiko besar terhadap keandalan, seperti pemadaman layanan di seluruh region. Pengujian ini juga membantu Anda memverifikasi bahwa sistem Anda berperilaku sebagaimana mestinya selama gangguan.
Jika seluruh region mengalami gangguan, Anda harus mengalihkan semua traffic ke region lain. Selama operasi normal workload Anda, saat data diubah, data tersebut perlu disinkronkan dari region utama ke region failover. Anda perlu memverifikasi bahwa data yang direplikasi selalu sangat baru, sehingga pengguna tidak mengalami kehilangan data atau kerusakan sesi. Sistem load balancing juga harus dapat mengalihkan traffic ke region failover kapan saja tanpa gangguan layanan. Untuk meminimalkan periode nonaktif setelah pemadaman layanan regional, engineer operasi juga harus dapat mengalihkan traffic pengguna dari suatu region secara manual dan efisien, dalam waktu sesingkat mungkin. Operasi ini terkadang disebut pengosongan region, yang berarti Anda menghentikan traffic masuk ke region tersebut 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:
- Validasi 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 yang termasuk dalam cakupan pengujian. Cakupan ini dapat mencakup tingkat aplikasi tertentu seperti frontend, backend, dan database, atau dapat mencakup resource Google Cloud tertentu seperti 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 rollback manual.
Membuat 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 Identity and Access Management (IAM) Anda disiapkan dengan benar. Pastikan izin yang diperlukan sudah ada untuk alat dan skrip pengujian.
Beri tahu pemangku kepentingan, termasuk operasi, DevOps, dan pemilik 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 layanan jaringan di seluruh region menggunakan aturan firewall atau batasan API berdasarkan cakupan pengujian Anda. Tingkatkan skenario kegagalan secara bertahap untuk mengamati perilaku sistem dalam berbagai kondisi.
Perkenalkan pengujian beban bersama skenario kegagalan untuk mereplikasi penggunaan di 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 mencatat metrik dan peristiwa selama pengujian.
Amati perubahan latensi, tingkat error, dan throughput selama dan setelah simulasi kegagalan, serta pantau dampak performa secara keseluruhan. Identifikasi setiap penurunan atau inkonsistensi dalam pengalaman pengguna.
Pastikan log dibuat dan pemberitahuan dipicu untuk peristiwa penting, 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 kesenjangan apa pun.
Pastikan integritas dan ketersediaan data sesuai 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 yang 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 bottleneck, titik tunggal kegagalan, atau perilaku tak 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. Mempresentasikan laporan postmortem kepada pemangku kepentingan. Laporan tersebut harus merangkum hasil, pelajaran yang diperoleh, dan langkah berikutnya. Untuk mengetahui informasi selengkapnya, lihat Melakukan postmortem 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.