Melakukan pengujian untuk pemulihan dari kegagalan

Last reviewed 2024-12-30 UTC

Prinsip ini dalam pilar keandalan Google Cloud Architecture 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, rollback rilis, dan pemulihan data dari pencadangan.

Pengujian ini membantu Anda berlatih merespons peristiwa yang menimbulkan risiko besar terhadap keandalan, seperti pemadaman seluruh wilayah. Pengujian ini juga membantu Anda memverifikasi bahwa sistem Anda berperilaku seperti yang diinginkan selama gangguan.

Jika seluruh region tidak dapat diakses, 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 penggantian. Anda perlu memverifikasi bahwa data yang direplikasi selalu yang terbaru, 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 secara manual dan efisien mengalihkan traffic pengguna dari suatu wilayah, 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 hal yang ingin Anda capai dari pengujian. Misalnya, tujuan Anda dapat mencakup hal berikut:

  • Validasi batas waktu pemulihan (RTO) dan tujuan titik pemulihan (RPO). Untuk mengetahui detailnya, lihat Dasar-dasar perencanaan DR.
  • Menilai ketahanan sistem dan fault tolerance dalam berbagai skenario kegagalan.
  • Uji keefektifan mekanisme failover otomatis.

Tentukan komponen, layanan, atau region 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 dalam produksi, pastikan Anda telah menyiapkan langkah-langkah keamanan, seperti pemantauan otomatis dan prosedur rollback manual.

Buat rencana cadangan. Ambil snapshot atau pencadangan database dan layanan penting untuk mencegah hilangnya 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 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 estimasi linimasa dan perilaku yang diharapkan selama pengujian kepada pemangku kepentingan.

Menyimulasikan skenario kegagalan

Merencanakan dan menjalankan 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 wilayah menggunakan aturan firewall atau pembatasan API berdasarkan cakupan pengujian Anda. Tingkatkan skenario kegagalan secara bertahap untuk mengamati perilaku sistem dalam berbagai kondisi.

Lakukan pengujian beban bersama dengan skenario kegagalan untuk mereplikasi penggunaan di dunia nyata selama pemadaman. 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 alat Google Cloud 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. Identifikasi degradasi 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 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 pencadangan 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.

Menyoroti bottleneck, titik tunggal kegagalan, atau perilaku tidak terduga yang diamati selama pengujian. Untuk membantu memprioritaskan perbaikan, kategorikan masalah berdasarkan 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 harus menyampulkan hasil, pelajaran yang didapat, dan langkah berikutnya. Untuk informasi selengkapnya, lihat Melakukan postmortem yang menyeluruh.

Melakukan iterasi dan peningkatan

Untuk memvalidasi keandalan dan ketahanan yang berkelanjutan, rencanakan pengujian berkala (misalnya, setiap kuartal).

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.