Uji chaos jaringan di Windows
Uji chaos berarti merusak sesuatu dengan sengaja, selagi Anda mengamati, untuk mengetahui apa yang dilakukan perangkat lunak Anda. Di lapisan jaringan, itulah persis alat ini: cara menyuntikkan gangguan ke satu aplikasi dan melihat apakah ia bertahan.
Gangguan yang dapat Anda suntikkan
| Gangguan | Yang ditiru |
|---|---|
| Kehilangan, kerusakan, duplikasi | Jalur yang menurun kualitasnya. Paket hilang, tiba dalam keadaan rusak, atau tiba dua kali. |
| Latensi, jitter, lonjakan | Jalur yang lambat atau tak stabil, termasuk hambatan beberapa detik yang merusak timeout. |
| Reset koneksi | Firewall atau load balancer yang memutus koneksi di tengah transfer. |
| Tautan terputus | Jalur yang menghilang dan kembali, dalam siklus. |
| Alamat atau port yang diblokir | Satu dependensi tak terjangkau sementara yang lain berfungsi. |
| Internet mati, LAN hidup | Bentuk captive portal: yang lokal berfungsi, dunia luar tidak. |
Yang memisahkan chaos dari gangguan acak: keterulangan
Kegagalan acak yang tak bisa diputar ulang menghasilkan cerita, bukan laporan bug. Setiap keputusan acak di sini berasal dari seed, sehingga perintah yang sama mereproduksi eksekusi yang sama: paket yang sama hilang, jitter yang sama, dalam urutan yang sama:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
Itulah beda antara “pernah rusak sekali Selasa lalu” dan pengujian gagal yang bisa dijalankan orang lain.
Di dalam pipeline
Baris perintah melapor lewat kode keluar, sehingga build dapat membedakan “aplikasi gagal” dari “alat tidak bisa dimulai”, dan sesinya berakhir sendiri: tidak ada langkah pembersihan yang bisa terlupa:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
Rangkaian gangguan, bukan satu gangguan, adalah file skenario, dan itu juga dapat diulang. Lihat skenario berbasis waktu dan uji jaringan di CI untuk kode keluar dan runner yang dibutuhkan.
Di mana radius dampak berhenti
Dua batas, dan keduanya disengaja. Gangguan menjangkau satu proses, PID, alamat, atau port saat Anda membidiknya, sehingga mesin tempat Anda bekerja tetap berfungsi. Dan ini satu mesin: ini injeksi gangguan untuk sebuah klien dan koneksinya, bukan untuk klaster. Jika Anda mencari chaos lintas layanan dan node, itu jenis alat yang lain, dan ini adalah bagian yang merusak jaringan di bawah satu aplikasi Windows.
Semuanya dapat dibalik seketika. STOP memulihkan jaringan, batas waktu melakukan hal yang sama, dan watchdog di dalam alat mematikan penangkapan jika alatnya sendiri mati: gangguan yang Anda suntikkan tidak boleh hidup lebih lama daripada eksekusi yang menyuntikkannya.