Pengenalan Fault Analysis Service

Fault Analysis Service dirancang untuk menguji layanan yang dibuat di Microsoft Azure Service Fabric. Dengan Fault Analysis Service, memungkinkan Anda menyebabkan kesalahan yang berarti dan menjalankan skenario pengujian lengkap terhadap aplikasi. Kesalahan dan skenario ini melatih dan memvalidasi berbagai status dan transisi yang akan dialami layanan sepanjang masa, layanan ini berjalan secara terkontrol, aman, dan konsisten.

Tindakan adalah kesalahan individu yang menargetkan layanan untuk mengujinya. Pengembang layanan dapat menggunakan layanan ini sebagai blok penyusun untuk menulis skenario yang rumit. Contohnya:

  • Mulai ulang node untuk menyimulasikan sejumlah situasi saat mesin atau VM di-boot ulang.
  • Pindahkan replika layanan stateful untuk menyimulasikan load balancing, failover, atau peningkatan aplikasi.
  • Meminta kuorum yang hilang pada layanan stateful untuk membuat situasi di mana operasi tulis tidak dapat dilanjutkan karena replika "cadangan" atau "sekunder" tidak cukup untuk menerima data baru.
  • Meminta data yang hilang pada layanan berstatus untuk membuat situasi di mana semua status dalam memori benar-benar terhapus.

Skenario adalah operasi kompleks yang terdiri dari satu atau lebih tindakan. Fault Analysis Service menyediakan dua skenario lengkap bawaan:

  • Skenario Chaos
  • Skenario Failover

Menguji sebagai layanan

Fault Analysis Service adalah layanan sistem Service Fabric yang dimulai secara otomatis dengan klaster Service Fabric. Layanan ini bertindak sebagai host untuk injeksi kesalahan, eksekusi skenario pengujian, dan analisis kesehatan.

Fault Analysis Service

Ketika tindakan kesalahan atau skenario pengujian dimulai, perintah dikirim ke Fault Analysis Service untuk menjalankan tindakan kesalahan atau skenario pengujian. Fault Analysis Service stateful, sehingga dapat menjalankan kesalahan dan skenario serta memvalidasi hasil dengan andal. Misalnya, skenario pengujian yang berjalan lama dapat dieksekusi dengan andal oleh Layanan Analisis Kesalahan. Dan karena tes sedang dijalankan di dalam klaster, layanan dapat memeriksa keadaan klaster dan layanan Anda untuk memberikan informasi yang lebih mendalam tentang kegagalan.

Menguji sistem terdistribusi

Service Fabric membuat pekerjaan menulis dan mengelola aplikasi yang dapat diskalakan secara signifikan lebih mudah. Layanan Analisis Kesalahan membuat pengujian aplikasi terdistribusi juga lebih mudah. Ada tiga masalah utama yang perlu diselesaikan saat pengujian:

  1. Mensimulasikan/menghasilkan kegagalan yang mungkin terjadi dalam skenario dunia nyata: Salah satu aspek penting dari Service Fabric adalah memungkinkan aplikasi terdistribusi untuk pulih dari berbagai kegagalan Namun, untuk menguji bahwa aplikasi dapat pulih dari kegagalan ini, kita membutuhkan mekanisme untuk mensimulasikan/menghasilkan kegagalan dunia nyata ini dalam lingkungan pengujian yang terkendali.
  2. Kemampuan untuk menghasilkan kegagalan yang berkorelasi: Kegagalan dasar dalam sistem, seperti kegagalan jaringan dan kegagalan mesin, mudah diproduksi secara individual. Menghasilkan sejumlah besar skenario yang dapat terjadi di dunia nyata sebagai akibat dari interaksi kegagalan individu ini tidak sepele.
  3. Pengalaman terpadu di berbagai tingkat pengembangan dan penyebaran: Ada banyak sistem injeksi kesalahan yang dapat melakukan berbagai jenis kegagalan. Namun, pengalaman dalam semua ini buruk ketika pindah dari skenario pengembang satu kotak, ke menjalankan tes yang sama di lingkungan pengujian besar, hingga menggunakannya untuk pengujian dalam produksi.

Meskipun ada banyak mekanisme untuk menyelesaikan masalah ini, sistem yang melakukan hal yang sama dengan jaminan yang diperlukan--sepanjang jalan dari lingkungan pengembang satu kotak, untuk menguji di cluster produksi--hilang. Layanan Analisis Kesalahan membantu pengembang aplikasi berkonsentrasi pada pengujian logika bisnis mereka. Layanan Analisis Kesalahan menyediakan semua kemampuan yang diperlukan untuk menguji interaksi layanan dengan sistem terdistribusi yang mendasarinya.

Mensimulasikan/menghasilkan skenario kegagalan dunia nyata

Untuk menguji ketahanan sistem terdistribusi terhadap kegagalan, kita perlu mekanisme untuk menghasilkan kegagalan. Sementara secara teori, menghasilkan kegagalan seperti node tidak berfungsi tampaknya mudah, ia mulai memukul serangkaian masalah konsistensi yang sama yang coba dipecahkan oleh Service Fabric. Sebagai contoh, jika kita ingin mematikan node, alur kerja yang diperlukan adalah sebagai berikut:

  1. Dari klien, terbitkan permintaan node pematian.

  2. Kirim permintaan ke node yang tepat.

    a. Jika node tidak ditemukan, node harus gagal.

    b. Jika node ditemukan, node akan kembali hanya jika node dimatikan.

Untuk memverifikasi kegagalan dari perspektif tes, tes perlu mengetahui bahwa ketika kegagalan ini diinduksi, kegagalan benar-benar terjadi. Jaminan yang disediakan Service Fabric adalah bahwa node akan turun atau sudah turun ketika perintah mencapai node. Dalam kedua kasus tes harus dapat dengan benar alasan tentang keadaan dan berhasil atau gagal dengan benar dalam validasinya. Sistem yang diterapkan di luar Service Fabric untuk melakukan serangkaian kegagalan yang sama dapat mencapai banyak masalah jaringan, perangkat keras, dan perangkat lunak, yang akan mencegahnya memberikan jaminan sebelumnya. Di hadapan masalah yang dinyatakan sebelumnya, Service Fabric akan mengkonfigurasi ulang status klaster untuk mengatasi masalah, dan karenanya Layanan Analisis Kesalahan masih akan dapat memberikan serangkaian jaminan yang tepat.

Menghasilkan peristiwa dan skenario yang diperlukan

Sementara mensimulasikan kegagalan dunia nyata secara konsisten sulit untuk memulai, kemampuan untuk menghasilkan kegagalan yang berkorelasi bahkan lebih sulit. Misalnya, kehilangan data terjadi di layanan tetap stateful ketika hal-hal berikut terjadi:

  1. Hanya kuorum tulis dari replika yang tersangkut pada replikasi. Semua replika sekunder tertinggal dari primer.
  2. Kuorum tulis turun karena replika turun (karena paket kode atau node turun).
  3. Kuorum tulis tidak dapat muncul kembali karena data untuk replika hilang (karena kerusakan disk atau pencitraan ulang mesin).

Kegagalan berkorelasi ini memang terjadi di dunia nyata tetapi tidak sesering kegagalan individu. Kemampuan untuk menguji skenario ini sebelum terjadi dalam produksi sangat penting. Yang lebih penting adalah kemampuan untuk mensimulasikan skenario ini dengan beban kerja produksi dalam keadaan terkontrol (di tengah hari dengan semua insinyur di dek). Itu jauh lebih baik daripada terjadi untuk pertama kalinya dalam produksi pada pukul 2:00 A.M.

Pengalaman terpadu di berbagai lingkungan

Praktek ini secara tradisional telah menciptakan tiga set pengalaman yang berbeda, satu untuk lingkungan pengembangan, satu untuk tes, dan satu untuk produksi. Modelnya adalah:

  1. Dalam lingkungan pengembangan, menghasilkan transisi status yang memungkinkan pengujian unit metode individual.
  2. Di lingkungan pengujian, menghasilkan kegagalan untuk memungkinkan tes end-to-end yang melakukan berbagai skenario kegagalan.
  3. Jaga lingkungan produksi tetap murni untuk mencegah kegagalan non-alami dan untuk memastikan bahwa ada respons manusia yang sangat cepat terhadap kegagalan.

Dalam Service Fabric, melalui Fault Analysis Service, kami mengusulkan untuk membalikkan ini dan menggunakan metodologi yang sama dari lingkungan pengembang ke produksi. Ada dua cara untuk mencapai hal ini:

  1. Untuk menginduksi kegagalan yang dikontrol, gunakan API Layanan Analisis Kesalahan dari lingkungan satu kotak hingga klaster produksi.
  2. Untuk memberikan klaster demam yang menyebabkan induksi otomatis kegagalan, gunakan Layanan Analisis Kesalahan untuk menghasilkan kegagalan otomatis. Mengontrol tingkat kegagalan melalui konfigurasi memungkinkan layanan yang sama untuk diuji secara berbeda di lingkungan yang berbeda.

Dengan Service Fabric, meskipun skala kegagalan akan berbeda di lingkungan yang berbeda, mekanisme aktual akan identik. Ini memungkinkan untuk pipa kode-ke-penyebaran yang jauh lebih cepat dan kemampuan untuk menguji layanan di bawah beban dunia nyata.

Menggunakan Layanan Analisis Kesalahan

C#

Fitur Layanan Analisis Kesalahan ada di ruang nama System.Fabric dalam paket Microsoft.ServiceFabric NuGet. Untuk menggunakan fitur Layanan Analisis Kesalahan, sertakan paket nuget sebagai referensi dalam proyek Anda.

PowerShell

Untuk menggunakan PowerShell, Anda harus menginstal SDK Service Fabric. Setelah SDK diinstal, modul ServiceFabric PowerShell dimuat secara otomatis untuk Anda gunakan.

Langkah berikutnya

Untuk menciptakan layanan skala cloud yang sesungguhnya, sangat penting untuk memastikan, baik sebelum dan sesudah penyebaran, layanan tersebut dapat menahan kegagalan dunia nyata. Di dunia jasa saat ini, kemampuan untuk berinovasi dengan cepat dan memindahkan kode ke produksi dengan cepat sangat penting. Layanan Analisis Kesalahan membantu pengembang layanan untuk melakukan hal itu.

Mulai uji aplikasi dan layanan Anda menggunakan skenario pengujian bawaan, atau tulis skenario pengujian Anda sendiri menggunakan tindakan kesalahan yang disediakan oleh Layanan Analisis Kesalahan.