Melakukan pengujian untuk pemulihan dari kegagalan

Last reviewed 2024-12-30 UTC

Prinsip dalam pilar keandalan Google Cloud Framework yang Dirancang dengan Baik ini 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 bahwa 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 listrik di seluruh wilayah. Pengujian ini juga membantu Anda memverifikasi bahwa sistem Anda berperilaku seperti yang diinginkan selama terjadi gangguan.

Jika seluruh region tidak berfungsi, Anda harus melakukan failover semua traffic ke region lain. Selama operasi normal beban kerja 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 periode nonaktif setelah gangguan regional, teknisi operasi juga harus dapat mengalihkan traffic pengguna dari suatu wilayah 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 mendesain dan menjalankan pengujian untuk pemulihan dari kegagalan, pertimbangkan rekomendasi di subbagian berikut.

Tentukan 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 batas titik pemulihan (RPO). Untuk mengetahui detailnya, lihat Dasar-dasar perencanaan DR.
  • Menilai ketahanan sistem dan fault tolerance dalam berbagai skenario kegagalan.
  • Uji efektivitas mekanisme failover otomatis.

Tentukan komponen, layanan, atau region mana yang termasuk dalam cakupan pengujian. Cakupan 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 di produksi, pastikan Anda menyiapkan langkah-langkah keamanan, seperti pemantauan otomatis dan prosedur rollback manual.

Buat rencana cadangan. Buat 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 IAM, kebijakan, dan konfigurasi failover Anda disiapkan dengan benar. Pastikan izin yang diperlukan sudah ada untuk alat dan skrip pengujian.

Memberi tahu pemangku kepentingan, termasuk operasi, DevOps, dan pemilik aplikasi, tentang jadwal, cakupan, dan potensi dampak pengujian. Memberikan 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 gangguan jaringan di seluruh wilayah dengan menggunakan aturan firewall atau pembatasan API berdasarkan cakupan pengujian Anda. Tingkatkan skenario kegagalan secara bertahap untuk mengamati perilaku sistem dalam berbagai kondisi.

Perkenalkan pengujian beban bersama dengan skenario kegagalan untuk mereplikasi penggunaan di dunia nyata selama gangguan. 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 merutekan ulang traffic. Gunakan Google Cloud alat seperti Cloud Monitoring dan Cloud Logging untuk merekam metrik dan peristiwa selama pengujian.

Amati perubahan latensi, tingkat error, dan throughput selama dan setelah simulasi kegagalan, serta pantau dampak performa secara keseluruhan. Mengidentifikasi penurunan kualitas atau inkonsistensi dalam pengalaman pengguna.

Pastikan log dibuat dan pemberitahuan dipicu untuk peristiwa utama, seperti gangguan 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 terjadi kegagalan, lalu bandingkan data ini dengan RTO yang ditentukan dan dokumentasikan setiap kesenjangan.

Pastikan integritas dan ketersediaan data sesuai dengan RPO. Untuk menguji konsistensi database, bandingkan snapshot atau cadangan database sebelum dan setelah terjadi kegagalan.

Evaluasi pemulihan layanan dan pastikan semua layanan dipulihkan ke kondisi fungsional dengan gangguan minimal bagi pengguna.

Mendokumentasikan dan menganalisis hasil

Mendokumentasikan 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 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 konfigurasi pemantauan. Berdasarkan temuan pengujian, perbarui kebijakan dan playbook failover yang relevan. Menyajikan laporan postmortem kepada pemangku kepentingan. Laporan harus meringkas hasil, pelajaran yang didapat, dan langkah selanjutnya. Untuk mengetahui informasi selengkapnya, lihat Lakukan postmortem menyeluruh.

Lakukan iterasi dan peningkatan

Untuk memvalidasi keandalan dan ketahanan 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 dengan 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 kualitas proses pengujian dan ketahanan sistem.