Apa hubungan yang tepat antara metrik rollback / rollforward dan MTTR?

8

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):

  1. Kembalikan penyebaran, kembalikan stabilitas dengan cepat, tetapi tanpa fitur yang dimaksudkan dalam produksi.

  2. 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"?

Steve Clement
sumber

Jawaban:

2

Ya, MTTR harus / selalu harus dikaitkan dengan hasil bisnis: jika segala sesuatu tidak stabil, bisnis tersebut sangat berisiko.

Fakta bahwa kode / fitur / perubahan yang diharapkan masih terjebak dalam proses dalam skenario 1 tidak relevan: fitur tidak stabil, sehingga tidak membawa bisnis baru, memutar kembali adalah yang terbaik yang dapat Anda lakukan pada saat itu dari bisnis prospektif.

Rollforward adalah pertaruhan: membuat bisnis dalam risiko menunggu perbaikan potensial yang pada kenyataannya memiliki perubahan keberhasilan yang secara statistik lebih rendah (karena ketidakstabilan itu akan selalu tergesa-gesa dibandingkan dengan perubahan yang menyebabkan ketidakstabilan di tempat pertama tanpa bahkan tanpa tekanan seperti itu di atasnya). Rollforward adalah versi lain dari kode yang belum diperiksa sebelumnya.

Jika Anda ingin mempertahankan MTTR rendah, Anda segera mengembalikan, tanpa debat. Ini menghilangkan risiko bisnis dan memberi Anda kesempatan untuk memeriksa apakah perbaikannya benar-benar berfungsi sebelum mencoba untuk menyebarkannya. Saya sangat menyarankan untuk menjadikannya kebijakan sebagai ya, hampir selalu akan ada seseorang yang meminta perbaikan, bukan rollback dan mengadakan pertemuan untuk menegosiasikan / memutuskannya - semua sementara bisnis tetap berisiko.

Catatan: jika Anda khawatir dengan Tingkat Kegagalan Perubahan yang tinggi maka saya sarankan memeriksa tingkat kembalikan yang sebenarnya alih-alih berasal dari MTRR rendah. Mungkin Anda ingin menambahkan pemeriksaan gerbang sebelum penerapan untuk kegagalan yang paling sering terjadi. Jika Anda sudah memeriksa secara otomatis - mengapa tidak memasukkannya dalam verifikasi CI? Jika Anda tidak memilikinya - mungkin sudah waktunya untuk mulai memikirkannya? :)

Dan Cornilescu
sumber
Secara umum, saya pikir saya setuju dengan posisi bahwa rollback harus menjadi standar, tetapi tampaknya ini adalah poin diskusi / debat di dunia devops. Saya melihat banyak hal yang mengatakan tidak pernah mundur, satu-satunya pilihan adalah rollforward. Saya bisa melihat logika risiko / imbalan di kedua sisi. Itu mengejutkan saya bahwa Anda melihat MTTR secara ketat sebagai ukuran stabilitas, dan rollback memberikan opsi stabilitas terbaik. Dalam model "hanya maju", stabilitas MTTR mencakup hasil bisnis dari perubahan tersebut. Apakah ini hanya masalah dari sisi mana dari debat balik / maju yang dilakukan seseorang?
Steve Clement
1
Tidak pernah kembalikan? Itu gila. Katakanlah perubahan dikerahkan untuk mendorong, mengungkapkan kesalahan khusus lingkungan yang tidak terekspos selama pengujian. Total pemadaman layanan, perbaikan akan memakan waktu berjam-jam. Siapa pun yang memberikan suara untuk membiarkan produksi membusuk saat perbaikan dikembangkan, bukan hanya memutar balik, harus dilarang dari TI.
Adrian
1

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.

Xiong Chiamiov
sumber