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 baik efektif dengan melakukan kerusakan aktif dan pengujian beban simulasi.

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 dan panduan pengujian umum yang khusus untuk injeksi kesalahan dan rekayasa chaos.

Definisi

Istilah Definisi
Ketersediaan Jumlah waktu beban kerja aplikasi berjalan dalam keadaan sehat tanpa waktu henti yang signifikan.
Rekayasa kekacauan Praktik menundukkan 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 ketergantungan yang hilang.
Injeksi kesalahan Tindakan memperkenalkan kesalahan pada sistem untuk menguji ketahanan sistem.
Pemulihan Sinonim untuk ketahanan.
Resiliency Kemampuan beban kerja aplikasi untuk menahan dan memulihkan dari mode kegagalan.

Strategi desain utama

Panduan pengujian umum

  • Secara rutin melakukan pengujian untuk memvalidasi ambang batas, target, dan asumsi yang ada. Ketika 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 reproduktifitas yang konsisten. Otomatiskan tugas pengujian umum dan integrasikan ke dalam proses build Anda. Menguji perangkat lunak secara manual membosankan 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 tes reguler.

  • Bagikan hasil yang di dokumentasikan 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 dalam 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 menanggapi kegagalan bencana dan insiden besar lainnya.

  • Uji kemampuan beban kerja Anda untuk menurunkan dengan baik 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 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 terpengaruh oleh masalah serupa, di semua komponen dalam beban kerja Anda. Gunakan kesempatan ini untuk secara proaktif mengatasi komponen-komponen tersebut. Konsultasikan 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.

Panduan injeksi kesalahan dan rekayasa kekacauan

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 lapisan infrastruktur dan 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 yang 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 berkelanjutan, bukan upaya taktis jangka pendek sebagai respons terhadap satu pemadaman. Ikuti metode standar ini saat Anda merancang eksperimen chaos Anda:

  1. Mulailah dengan hipotesis. Setiap eksperimen harus memiliki tujuan yang jelas, seperti menguji kemampuan alur tertentu untuk menahan hilangnya komponen tertentu.
  2. 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.
  3. Masukkan satu atau beberapa kesalahan. Eksperimen harus dengan sengaja menargetkan komponen tertentu yang dapat dipulihkan dengan cepat dan Anda harus memiliki harapan informasi tentang efek yang akan disebabkan injeksi kesalahan untuk membantu mengontrol radius ledakan eksperimen.
  4. Pantau perilaku yang dihasilkan. Kumpulkan telemetri tentang komponen alur individu dan perilaku alur 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.
  5. Dokumentasikan proses dan pengamatan. Menyimpan catatan terperinci dari eksperimen Anda akan menginformasikan keputusan di masa mendatang tentang desain beban kerja, memastikan bahwa Anda mengatasi celah yang telah terungkap dari waktu ke waktu.
  6. Identifikasi dan tindak lanjuti hasilnya. Rencanakan langkah-langkah remediasi yang dapat ditambahkan ke backlog beban kerja Anda sebagai penyempurnaan. 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 sudah diberlakukannya dan pemberitahuan disiapkan.
  • Validasi proses Anda menetapkan individu yang bertanggung jawab langsung (DRI) untuk mengambil kepemilikan atas 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 chaos 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 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 mempertangungjawabkan 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 dengan injeksi kesalahan dan pengujian ketahanan untuk aplikasi Anda menggunakan infrastruktur Azure.

Daftar periksa keandalan

Lihat kumpulan rekomendasi lengkap.