Rekomendasi untuk merancang strategi pengujian keandalan
Berlaku untuk rekomendasi daftar periksa Keandalan Azure Well-Architected Framework ini:
RE:08 | Uji skenario ketahanan dan ketersediaan dengan menerapkan prinsip-prinsip rekayasa chaos di lingkungan pengujian dan produksi Anda. Gunakan pengujian untuk memastikan bahwa implementasi degradasi dan strategi penskalaan Anda yang anggun efektif dengan melakukan kerusakan aktif dan pengujian beban yang disimulasikan. |
---|
Panduan ini menjelaskan rekomendasi untuk merancang strategi pengujian keandalan untuk memvalidasi dan mengoptimalkan keandalan beban kerja Anda. Pengujian keandalan berfokus pada ketahanan dan ketersediaan beban kerja Anda, khususnya alur penting yang Anda identifikasi saat merancang solusi Anda. Panduan ini menyediakan panduan pengujian umum dan panduan yang khusus untuk injeksi kesalahan dan rekayasa kekacauan.
Definisi
Istilah | Definisi |
---|---|
Ketersediaan | Jumlah waktu beban kerja aplikasi berjalan dalam keadaan sehat tanpa waktu henti yang signifikan. |
Rekayasa kekacauan | Praktik subjek aplikasi dan layanan terhadap stres dan kegagalan dunia nyata. Tujuan dari rekayasa chaos adalah untuk membangun dan memvalidasi ketahanan terhadap kondisi yang tidak dapat diandalkan dan dependensi yang hilang. |
Injeksi kesalahan | Tindakan memperkenalkan kesalahan pada sistem untuk menguji ketahanan sistem. |
Pemulihan | Sinonim untuk ketahanan. |
Ketahanan | Kemampuan beban kerja aplikasi untuk menahan dan memulihkan dari mode kegagalan. |
Strategi desain utama
Menguji kesiapan keandalan
Secara rutin melakukan pengujian untuk memvalidasi ambang batas, target, dan asumsi yang ada. Saat perubahan besar terjadi dalam beban kerja Anda, jalankan pengujian reguler. Lakukan sebagian besar pengujian di lingkungan pengujian dan penahapan. Ini juga bermanfaat untuk menjalankan subset pengujian terhadap sistem produksi. Rencanakan paritas satu-ke-satu lingkungan pengujian utama dengan lingkungan produksi.
Mengotomatiskan pengujian untuk membantu memastikan cakupan pengujian dan reproduksi yang konsisten. Otomatiskan tugas pengujian umum dan integrasikan ke dalam proses build Anda. Menguji perangkat lunak secara manual melelahkan dan rentan terhadap kesalahan, tetapi Anda dapat melakukan pengujian eksplorasi manual. Untuk kasus di mana Anda perlu mengembangkan pengujian otomatis, gunakan pengujian manual untuk menentukan cakupan pengujian yang akan dikembangkan.
Mengadopsi pendekatan pengujian shift-left untuk melakukan pengujian ketahanan dan ketersediaan di awal siklus pengembangan.
Sesuaikan format dokumentasi sederhana, sehingga mudah bagi semua orang untuk memahami proses dan hasil setiap pengujian reguler.
Bagikan hasil yang didokumenkan dengan tim yang sesuai, seperti tim operasional, kepemimpinan teknologi, pemangku kepentingan bisnis, dan pemangku kepentingan pemulihan bencana. Hasilnya harus menginformasikan penyempurnaan target keandalan, seperti tujuan tingkat layanan (SLA), perjanjian tingkat layanan (SLA), tujuan waktu pemulihan (RTO), dan tujuan titik pemulihan (RPO).
Buat irama pengujian reguler untuk cadangan Anda. Pulihkan data ke sistem terisolasi untuk membantu memastikan bahwa cadangan valid dan pemulihan berfungsi.
Dokumentasikan dan bagikan metrik waktu pemulihan dengan pemangku kepentingan pemulihan bencana Anda untuk memastikan bahwa harapan untuk pemulihan sesuai.
Gunakan prosedur pengujian penyebaran standar industri untuk membantu memastikan bahwa Anda memiliki proses penyebaran otomatis, dapat diprediksi, dan efisien.
Uji kemampuan beban kerja Anda untuk menahan kegagalan sementara. Untuk informasi selengkapnya, lihat Rekomendasi untuk menangani kesalahan sementara.
Uji kemampuan beban kerja Anda untuk merespons perubahan pola beban dan lonjakan penggunaan. Gunakan informasi ini untuk membantu Anda menguji strategi penskalakan Anda. Untuk informasi tentang pengujian beban dan stres, lihat Rekomendasi untuk pengujian.
Uji bagaimana beban kerja Anda menangani kegagalan di layanan dependen atau dependensi lainnya dengan menggunakan injeksi kesalahan.
Uji dan validasi bagaimana desain penyembuhan diri dan pelestarian diri Anda merespons kerusakan. Uji operasi pemulihan otomatis dan manual.
Uji rencana pemulihan bencana Anda untuk merespons kegagalan bencana dan insiden besar lainnya.
Uji kemampuan beban kerja Anda untuk menurunkan tingkat keanggunan dan meminimalkan radius ledakan kerusakan komponen dengan menggunakan injeksi kesalahan.
Manfaatkan pemadaman yang direncanakan dan tidak direncanakan
Ketika beban kerja Anda offline karena pemeliharaan terencana atau pemadaman yang tidak direncanakan, Anda memiliki kesempatan unik untuk melakukan pengujian dan meningkatkan pemahaman Anda tentang beban kerja Anda. Bagian berikut ini memberikan rekomendasi untuk setiap skenario.
Pemeliharaan terencana
Ketika Anda telah merencanakan jendela pemeliharaan untuk pembaruan atau patch, Anda dapat menguji komponen dan alur yang tidak terlibat dalam pekerjaan pemeliharaan. Lakukan pengujian tanpa potensi risiko penurunan beban kerja secara tak terduga atau membuatnya offline sama sekali. Jika Anda memiliki cukup waktu selama jendela pemeliharaan, Anda juga dapat menguji komponen dan alur yang terlibat dalam pemeliharaan setelah pekerjaan pemeliharaan selesai.
Pemadaman yang tidak dienkripsi
Gunakan setiap insiden pemadaman sebagai kesempatan untuk mempelajari lebih lanjut tentang beban kerja Anda dan meningkatkan ketahanannya dengan mengikuti langkah-langkah ini, yang diurutkan berdasarkan prioritas:
Dapatkan beban kerja kembali online untuk pelanggan Anda. Untuk melakukannya, Anda mungkin melakukan solusi untuk masalah tersebut, menyelesaikan masalah, atau memulai proses pemulihan.
Tentukan akar penyebab pemadaman dan atasi. Jika Anda dapat memperbaiki akar penyebab sebagai bagian dari penyelidikan, dokumentasikan akar penyebab dan langkah-langkah yang Anda ambil untuk memperbaikinya. Jika masalah mengharuskan mengambil jendela pemeliharaan tambahan di lain waktu, pastikan bahwa langkah-langkah mitigasi Anda dapat menangani beban yang diharapkan dengan mengujinya secara menyeluruh. Pastikan Anda telah menyiapkan pemantauan yang memadai untuk menutupi langkah-langkah mitigasi Anda.
Jika berlaku, cari masalah yang sama, atau kelemahan konfigurasi yang mungkin dipengaruhi oleh masalah serupa, di semua komponen dalam beban kerja Anda. Gunakan kesempatan ini untuk mengatasi komponen tersebut secara proaktif. Lihat riwayat insiden Anda untuk mendeteksi pola masalah serupa di seluruh beban kerja Anda.
Gunakan temuan Anda untuk meningkatkan strategi pengujian Anda. Pastikan Anda telah berhasil mengatasi akar penyebab dan masalah serupa dengan langsung menguji kegagalan yang sama.
Gunakan injeksi kesalahan dan rekayasa chaos
Pengujian injeksi kesalahan mengikuti prinsip-prinsip rekayasa chaos dengan menyoroti kemampuan beban kerja untuk bereaksi terhadap kegagalan komponen. Lakukan pengujian injeksi kesalahan di lingkungan pra-produksi dan produksi. Terapkan pengujian ke infrastruktur dan lapisan aplikasi. Terapkan informasi yang Anda pelajari Rekomendasi untuk melakukan analisis mode kegagalan untuk memastikan bahwa Anda hanya menguji kesalahan yang Anda prioritaskan dan bahwa Anda memiliki strategi mitigasi yang mengatasi kesalahan. Pedoman utama rekayasa chaos adalah:
Bersikaplah proaktif. Jangan menunggu kegagalan terjadi. Cobalah untuk mengantisipasi kegagalan dengan melakukan eksperimen chaos untuk menemukan dan memperbaiki masalah sebelum memengaruhi lingkungan produksi Anda.
Terima kegagalan. Terima dan pelajari dari kegagalan yang terjadi di sistem Anda. Lihat kegagalan sebagai bagian alami dari sistem kompleks dan gunakan sebagai peluang untuk mempelajari dan meningkatkan keandalan sistem Anda.
Hancurkan sistem. Sengaja menyuntikkan kesalahan atau stres ke dalam sistem Anda untuk menguji ketahanannya. Simulasikan kegagalan atau gangguan dunia nyata untuk menguji dan meningkatkan kemampuan pemulihan beban kerja Anda.
Identifikasi dan atasi satu titik kegagalan lebih awal. Saat Anda menguji, konsultasikan dan perbarui analisis mode kegagalan Anda untuk memvalidasi dan mengatasi kesalahan dalam dokumentasi Anda. Terapkan pendekatan keandalan, seperti redundansi dan segmentasi, untuk meningkatkan ketersediaan beban kerja Anda dan meminimalkan waktu henti.
Pasang pagar pembatas dan mitigasi yang anggun. Terapkan langkah-langkah keamanan, seperti pola Circuit Breaker atau pola Pembatasan, untuk meningkatkan ketersediaan. Terapkan pendekatan degradasi anggun yang memungkinkan kelangsungan bisnis selama kegagalan.
Minimalkan radius ledakan. Terapkan strategi isolasi kesalahan untuk membantu memastikan bahwa, bahkan jika kegagalan terjadi, cakupannya terbatas. Sistem terus berfungsi dengan efek minimal pada pelanggan Anda.
Bangun kekebalan. Gunakan eksperimen rekayasa chaos untuk meningkatkan kemampuan beban kerja Anda untuk mencegah dan memulihkan dari kegagalan.
Rekayasa chaos adalah bagian integral dari budaya tim beban kerja dan praktik yang sedang berlangsung, bukan upaya taktis jangka pendek sebagai respons terhadap satu pemadaman. Ikuti metode standar ini saat Anda merancang eksperimen chaos Anda:
- Mulailah dengan hipotesis. Setiap eksperimen harus memiliki tujuan yang jelas, seperti menguji kemampuan alur tertentu untuk menahan hilangnya komponen tertentu.
- Ukur perilaku dasar. Pastikan Anda memiliki metrik keandalan dan performa yang konsisten untuk alur dan komponen yang terlibat dalam eksperimen tertentu untuk dibandingkan dengan status terdegradasi saat menjalankan eksperimen Anda.
- Masukkan satu atau beberapa kesalahan. Eksperimen harus sengaja menargetkan komponen tertentu yang dapat dipulihkan dengan cepat dan Anda harus memiliki harapan yang tepat tentang efek yang akan disebabkan oleh injeksi kesalahan untuk membantu mengontrol radius ledakan eksperimen.
- Pantau perilaku yang dihasilkan. Kumpulkan telemetri tentang komponen alur individual dan perilaku aliran end-to-end yang ditargetkan eksperimen untuk memahami efek kesalahan dengan benar. Bandingkan metrik yang Anda kumpulkan dengan metrik garis besar untuk gambaran lengkap hasil injeksi kesalahan.
- Dokumentasikan proses dan pengamatan. Menyimpan catatan terperinci dari eksperimen Anda akan menginformasikan keputusan di masa mendatang tentang desain beban kerja, memastikan bahwa Anda mengatasi kesenjangan yang telah diungkapkan dari waktu ke waktu.
- Identifikasi dan tindak lanjuti hasilnya. Rencanakan langkah-langkah remediasi yang dapat ditambahkan ke backlog beban kerja Anda sebagai peningkatan. Pastikan bahwa rencana peningkatan desain ditinjau dan diuji di lingkungan nonproduksi sesuai dengan proses yang sama dengan penyebaran lainnya.
Validasi proses, pilihan arsitektur, dan kode Anda secara berkala untuk mendeteksi utang teknis dengan cepat, mengintegrasikan teknologi baru, dan beradaptasi dengan perubahan persyaratan.
Ketika Anda melakukan eksperimen injeksi kesalahan, Anda:
- Konfirmasikan bahwa pemantauan ada di tempat dan pemberitahuan disiapkan.
- Validasi proses Anda menetapkan individu yang bertanggung jawab langsung (DRI) untuk mengambil kepemilikan insiden.
- Pastikan dokumentasi dan proses investigasi Anda sudah diperbarui.
Integrasikan rekomendasi dan pertimbangan berikut untuk mengoptimalkan strategi pengujian chaos Anda:
Tantang asumsi sistem. Dengan pengujian, Anda mencoba meningkatkan ketahanan beban kerja dan strategi desain beban kerja Anda. Cari peluang untuk menyuntikkan kesalahan ke dalam komponen dan alur yang Anda asumsikan dapat diandalkan berdasarkan pengalaman sebelumnya. Mereka mungkin tidak dapat diandalkan dalam beban kerja baru Anda.
Validasi perubahan, seperti topologi, platform, dan sumber daya. Tanpa pengujian menyeluruh, termasuk pengujian injeksi kesalahan, Anda mungkin memiliki gambaran beban kerja yang tidak lengkap setelah perubahan dilakukan. Misalnya, Anda mungkin secara tidak sengaja memperkenalkan dependensi baru atau dependensi yang ada yang rusak dengan cara yang tidak segera terlihat.
Gunakan buffer SLA. Batasi pengujian kekacauan untuk tetap berada dalam SLA Anda dan hindari potensi reputasi atau efek keuangan dari pemadaman. Target pemulihan alur dan komponen Anda membantu menentukan cakupan pengujian Anda.
Tetapkan anggaran kesalahan sebagai investasi dalam kekacauan dan injeksi kesalahan. Anggaran kesalahan Anda adalah perbedaan antara mencapai 100 persen dari SLO dan mencapai SLO yang disepakati.
Hentikan eksperimen jika melampaui cakupan. Hasil yang tidak diketahui adalah hasil yang diharapkan dari eksperimen kekacauan. Berusaha keras untuk mencapai keseimbangan antara mengumpulkan data hasil yang substansial dan memengaruhi sesedikit mungkin pengguna produksi.
Bekerja sama dengan tim pengembangan untuk memastikan relevansi kegagalan yang disuntikkan. Gunakan insiden atau masalah masa lalu sebagai panduan. Periksa dependensi dan evaluasi hasilnya saat Anda menghapus dependensi tersebut.
Identifikasi dan dokumentasikan dependensi yang sebelumnya belum diketahui antara komponen yang berbeda dalam beban kerja Anda yang terungkap melalui pengujian chaos.
Sesuaikan rencana pemulihan seperlunya untuk memperhitungkan dependensi yang ditemukan selama pengujian chaos.
Gunakan hasil dari eksperimen dan pengujian Anda sebagai dasar untuk eksperimen dan pengujian baru. Ketika perilaku tak terduga muncul, pengujian baru mungkin menargetkan perilaku tersebut secara langsung dan memberi Anda kesempatan untuk merancang strategi remediasi untuk mereka.
Tradeoff: Pengujian injeksi kesalahan dalam produksi dapat mengganggu dan berpotensi menyebabkan waktu henti. Bersikaplah transparan dengan pemangku kepentingan tentang kemungkinan ini dan pastikan Anda memiliki perlindungan untuk mengakhiri eksperimen dan menggulung balik rencana untuk dengan cepat membalikkan kegagalan yang Anda perkenalkan. Untuk menjaga dari pemadaman yang tidak diinginkan dalam produksi, pastikan Anda merencanakan redundansi yang memadai dan bahwa pemangku kepentingan Anda memahami tradeoff biaya.
Fasilitasi Azure
Azure Test Plans adalah solusi manajemen pengujian berbasis browser yang mudah digunakan yang menyediakan semua kemampuan yang diperlukan untuk pengujian manual terencana, pengujian penerimaan pengguna, pengujian eksplorasi, dan mengumpulkan umpan balik dari pemangku kepentingan.
Azure Chaos Studio adalah layanan terkelola yang menggunakan rekayasa chaos untuk membantu Anda mengukur, memahami, dan meningkatkan ketahanan aplikasi dan layanan cloud Anda. Azure Chaos Studio mencapai ketersediaan umum di Ignite 2023 dan memiliki banyak fitur untuk membantu Anda memulai pengujian injeksi dan ketahanan Kesalahan untuk aplikasi Anda menggunakan infrastruktur Azure.
Tautan terkait
- Pencadangan dan pemulihan bencana untuk aplikasi Azure
- Daftar periksa untuk pengujian keandalan
- Menguji aplikasi untuk ketersediaan dan ketahanan
Daftar periksa keandalan
Lihat kumpulan rekomendasi lengkap.