Saya mencoba memahami cara terbaik untuk mengambil data untuk mulai mengukur metrik Mean Time To Repair (MTTR), dan saya perlu membungkus kepala saya di sekitar bagaimana "rollback" berdampak pada MTTR secara positif atau negatif.
skenario 1
Dengan asumsi bahwa pemantauan yang solid sudah ada, kode dikerahkan yang menyebabkan insiden yang terdeteksi agak cepat (MTTI rendah). Pada titik identifikasi, ada dua kemungkinan jalur utama ke depan (ya, saya terlalu menyederhanakan untuk tujuan diskusi):
Kembalikan penyebaran, kembalikan stabilitas dengan cepat, tetapi tanpa fitur yang dimaksudkan dalam produksi.
Roll-forward dengan perubahan tambahan yang menyelesaikan insiden dan pertahankan fitur yang diinginkan tetap hidup.
Dalam skenario ini, MTTR sangat rendah, mengingat stabilitas situs dapat kembali dengan cukup cepat. Yang mengatakan, hasil yang diinginkan dari perubahan itu tidak hidup, dan dengan demikian kode / fitur / perubahan masih terjebak dalam proses. Jika sasaran MTTR rendah, tampaknya memberi insentif untuk roll-back sebagai mekanisme pemulihan.
Skenario 2
Dalam skenario ini, MTTR secara ketat diukur oleh berapa lama kode / fitur / perubahan yang diharapkan untuk bekerja dengan baik dalam produksi. Bahkan jika saya kembalikan, hingga perubahan kode "tetap" saya beralih ke prod, timer MTTR masih berjalan. Dalam hal ini, MTTR tampaknya terikat pada stabilitas hasil bisnis alih-alih hanya murni "hei, semuanya stabil."
Sekarang, jawabannya mungkin sesederhana MTTR tidak digunakan sebagai metrik dalam ruang hampa, melainkan dalam hubungannya dengan Change Failure Rate - MTTR super rendah yang disebabkan oleh rollback yang sering dapat mengarah ke Change Failure Rate yang setinggi langit. Yang mengatakan, ada sesuatu yang tampaknya tidak benar bagi saya dalam gagasan menceraikan pengukuran MTTR dari hasil bisnis.
Saya mungkin terlalu memikirkan hal ini, tapi saya ingin tahu bagaimana orang lain mengukur MTTR dan apa titik akhir waktu untuk "pemulihan." Apakah Anda menggunakannya hanya sebagai stabilitas, atau apakah ada faktor lain yang menentukan apa yang dimaksud "pulih"?
Waktu rata-rata untuk pulih memiliki subjek tersirat - waktu rata-rata untuk memulihkan apa ? Menentukan ini adalah kunci untuk menggunakan metrik secara efektif.
Apakah Anda memulihkan ketersediaan umum situs web produksi Anda? Apakah Anda memulihkan fungsionalitas fitur tertentu yang memiliki bug di dalamnya? Begitu Anda tahu apa yang sebenarnya ingin Anda ukur, jauh lebih mudah untuk mengukurnya!
Dorongan umum pertanyaan Anda tampaknya benar-benar mengelilingi tujuan bersaing fitur pengiriman dan menjaga keandalan, yang merupakan pertempuran lama. Secara tradisional itu adalah pekerjaan pengembang untuk mengimplementasikan hal-hal baru, dan pekerjaan sysadmin untuk mencegah hal-hal dari kerusakan, dan ini menyebabkan konflik departemen, karena perubahan cenderung menyebabkan kerusakan. Salah satu filosofi yang sering dikaitkan dengan DevOps adalah gagasan bahwa pengembang dan insinyur ops harus bekerja sama untuk meredakan ketegangan ini.
Anda mungkin juga tertarik dengan pendekatan Google untuk masalah itu, yaitu memiliki "anggaran kesalahan" untuk dibelanjakan oleh tim pengembangan; begitu mereka terlalu banyak menghukum stabilitas, mereka harus menghabiskan sisa kuartal hanya bekerja pada stabilitas. Seiring dengan ini, insinyur keandalan situs memiliki tujuan yang tersedia, dan jika mereka menembak berlebihan , mereka didorong untuk membiarkan lebih banyak perubahan; idenya di sini adalah bahwa tujuan mereka tidak hanya untuk menjaga keandalan setinggi mungkin, karena mereka akan termotivasi untuk melawan perubahan dalam setiap situasi.
sumber