İçeriğe atla

Suçsuz Postmortem: Bir Model ve Kopyala-Yapıştır Şablon

Suçlu aramak yerine sistemi düzelten bir suçsuz postmortem modeli, kopyalanabilir bir şablon ve bireysel sorumluluğun hâlâ geçerli olduğu sınır.

Ayhan Sipahi Ayhan Sipahi

Aynı kesinti tekrar tekrar geri geliyor; çünkü olay incelemeniz bir neden değil, bir suçlu buldu. Düzeltilmesi gereken hata modeli budur. Yanlış komutu yazan kişiyi adıyla işaret etmek, aynı komutun sistemi bir daha düşürmesini nadiren engeller; düzeltme, komutun geçtiği kontrolde yapılmalıdır. Sayfaya bir isim yazılıp kapanan bir inceleme, tekrarı önleyecek sistem değişikliğinin gerisinde kalır. Aşağıdaki model kişileri değil kontrolleri hedefler; yanında kopyalanabilir bir şablon ve bireysel sorumluluğun nerede hâlâ geçerli olduğuna dair net bir sınır gelir.

İşleyiş modeli farklı ekiplerde tutarlı biçimde işliyor; ancak “suçsuzluk” bir kültür değişimidir. Bunun oturduğunu kanıtlayan metriklerin kımıldaması birkaç çeyrek alır.

İki Soru Kümesi, İki Sonuç#

Suçlayan bir kültür ile suçsuz bir kültür arasındaki farkı görmenin en hızlı yolu, her birinin odada sorduğu sorulara bakmaktır. Sorular kozmetik değildir. Analizin nerede durduğunu ve aksiyon maddelerinin nasıl görüneceğini yönlendirir.

Suçlayan bir kültür şunu sorar: kim yaptı, kim sorumlu, kimin hatası? Bu sorular bir kişide biter. Sayfaya bir isim yazıldığında inceleme tamamlanmış gibi hissettirir, bu yüzden orada durur. Öngörülebilir sonuç şudur: insanlar hataları ve ramak kala olayları gizlemeyi öğrenir; çünkü bunları bildirmek cezalandırılır. Risk liderlik için görünmez hâle gelir ve sistem, kendisini neyin az kalsın çökertecek olduğunu hiç öğrenmez.

Suçsuz bir kültür farklı bir küme sorar: bu nasıl oldu, neden mümkündü, hangi kontrol eksikti? Bu sorular sistemde biter. Yanıt eksik bir koruma bandı olduğu için, aksiyon maddesi de inşa edebileceğiniz bir koruma bandı olur. İnsanlar daha çok paylaşır; çünkü paylaşım, bir etiketle cezalandırılmak yerine bir düzeltmeyle ödüllendirilir. Bu, kod incelemesini iğnelemeden bilgi paylaşımına dönüştüren psikolojik güvenin aynısıdır.

İki soru kümesi, kendini besleyen iki döngü oluşturur.

Bir olay meydana gelir

Suclayan kultur sorar: kim suclu?

Sucsuz kultur sorar: hangi kontrol yetersizdi?

Insanlar hatalari ve ramak kala olaylari gizler

Risk liderlik icin gorunmez olur

Ayni hata tekrar eder

Insanlar serbestce paylasir

Katki saglayan faktorler ortaya cikar

Sistem kontrolu eklenir

Daha az tekrar, daha yuksek guven

Postmortem Neye Yarar#

Bir postmortem, bir olayın yazılı kaydıdır: etkisi, kurtarma için yapılanlar, katkı sağlayan faktörler ve tekrarı önleyen takip işi. Google SRE kitabı amacı net biçimde ortaya koyar: postmortem, tüm organizasyon için bir öğrenme fırsatıdır.

Bu yeniden çerçevelemenin pratik bir testi var. Postmortem’iniz sahibi ve son tarihi olan, izlenen bir sistem değişikliği üretiyorsa, öğrenme üretmiştir. “Mühendis daha dikkatli olacak” gibi bir cümle üretiyorsa, düzeltici aksiyon kostümü giymiş bir suçlama üretmiştir.

Kıdemli katılımın önemi göründüğünden büyüktür. Bir direktör suçsuz bir incelemede “hangi kontrol eksikti” diye sorduğunda, oda kuralların gerçek olduğunu öğrenir.

İnsan Hatası Bir Belirtidir#

Sidney Dekker bunu Eski Görüş ile Yeni Görüş olarak çerçeveler. Eski Görüş insan hatasını sorunun sebebi olarak ele alır, bu yüzden çözüm insanı düzeltmektir: yeniden eğitmek, bir onay kapısı eklemek, kılavuza bir uyarı yazmak. Yeni Görüş insan hatasını, sistemde zaten var olan bir sorunun belirtisi olarak ele alır, bu yüzden çözüm hatayı kolay ve sonuçlarını büyük yapan sistemi düzeltmektir. İki görüş aynı olaya bakar ve zıt aksiyon maddelerine ulaşır.

John Allspaw buna işlevsel bir kaldıraç verir: “ikinci hikâye”. Her olayın bir ilk hikâyesi vardır: yüzeyde ne olduğu. Bir de ikinci hikâyesi vardır: o eylemin, kişinin bildikleri ve gördükleri göz önüne alındığında, o anda neden mantıklı geldiği. Asıl içgörü şudur. Eylem, kişi onu yaptığında ona mantıklı gelmişti; çünkü mantıklı gelmeseydi onu yapmazdı. Dolayısıyla verimli soru asla “neden dikkatsizdiler” değildir. “Yanlış yolu, kişinin durduğu yerden doğru yol gibi gösteren neydi” sorusudur. Bu soru doğrudan sistemi gösterir: kafa karıştıran panel, eksik onay, birbirine aynı görünen iki ortam.

Karşı-olgusal (counterfactual) akıl yürütmenin bir tuzak olmasının nedeni de budur. “Uyarıyı fark etmeliydiler” var olmayan bir dünyayı tarif eder. Var olan dünyada uyarı kırk uyarıdan biriydi ya da kimsenin izlemediği bir kanala yönlendirilmişti; yanlış eylemi o anda makul kılan koşullar da bunlardı.

Sağlıklı Olay Analizinin Beş Katmanı#

Suçsuz bir analiz, olayın yüzeyinden ona izin veren sistem boşluğuna doğru iner. Her katman, üstündekinden daha derin bir sorudur. Çoğu suçlayan kültür ikinci katmanda, ilk hamleyi yapan insanda durur.

1. Olay Uretimde ne oldu?

2. Tetikleyici Ilk teknik hamle

3. Katki saglayan faktorler Surec, iletisim, sahiplik bosluklari

4. Kontrol hatasi Hangi koruma bandi calismadi?

5. Sistem boslugu Kontrol neden yoktu ya da uygulanmadi?

Somut bir vakayı katmanlardan geçirelim. Olay, bir dağıtımın üretim tablosunu düşürmesidir. Tetikleyici, bir mühendisin yanlış ortama karşı bir migration çalıştırmasıdır. Suçlayan bir kültür “mühendis yanlış migration’ı çalıştırdı” yazar ve durur. Suçsuz bir analiz bunu tetikleyici olarak ele alır ve inmeye devam eder. Katkı sağlayan faktörler: staging ve üretim konsolları görsel olarak aynıydı ve kimlik bilgileri tek bir terminal oturumunda paylaşılmıştı. Kontrol hatası: bir onay istemi ve ortamlar arasında ayrı hesap sınırı yoktu. Sistem boşluğu: ortam izolasyonunu kimse sahiplenmemişti, bu yüzden koruma bandı hiç inşa edilmemişti. Düzeltme dört ve beşinci katmanlarda yaşar.

James Reason’ın İsviçre Peyniri Modeli bu inişin arkasındaki resimdir. Savunmalar peynir dilimleridir, her birinde delikler vardır; delikler zamanla yer değiştiren ve boyut değiştiren zayıflıklardır. Bir olay yalnızca birkaç dilimdeki delikler hizalanıp bir hata baştan sona geçtiğinde olur. Reason, keskin uçtaki güvensiz eylem olan aktif hatalar ile yetersiz araçlar, belirsiz sahiplik veya paylaşımı cezalandıran bir kültür gibi uykuda olan sistemsel zayıflıklar olan gizli koşulları ayırır. (Burada belirsiz sahiplik, tam da bu tür gizli bir koşuldur.) Gizli koşullar, bir aktif hata içlerinden geçene kadar uzun süre zararsız durabilir.

Aşırı Atıf#

Çoğu olay incelemesini sessizce yenen şey aşırı atıftır (over-attribution): çok faktörlü bir sistem hatasını tek bir insan kararına indirgemek. Aşırı atıf titizlik gibi hissettirir. Temiz bir anlatı, net bir sahip ve hızlı bir kapanış üretir. Aynı zamanda karmaşık sistemlerin nasıl çöktüğü konusunda yanlıştır.

Burada alanın en tartışmalı aracında bir taraf tutuyorum: Beş Neden (Five Whys). Atlassian’ın kendi suçsuz postmortem rehberi, “gerçek bir kök sebebe” ulaşana kadar nedensel zinciri yürümek için Beş Neden’i kullanmayı önerir. İlginç gerilim budur; çünkü suçsuz kültürün bir savunucusu, suçsuzluk savunucularının reddettiği tam o aracı önermektedir. Allspaw’ın “The Infinite Hows” ve Salesforce’un “How, Not Why” yazıları buna karşı argümanı kurar ve genel olarak bu argüman yazılım sistemleri için doğrudur.

Beş Neden’in üç sorunu vardır. Doğrusaldır: tek bir zinciri geriye doğru yürür, oysa gerçek olaylarda aynı anda etkileşen birden çok katkı sağlayan faktör vardır. Tekrarlanabilir değildir: aynı olayı üç farklı kolaylaştırıcıya verin, üç farklı “kök sebep” alırsınız; çünkü her “neden” bir ebeveyni seçip gerisini atar. Ve indirgemecidir: sıkı bağlı bir sistemin nadiren sahip olduğu tek bir kök vaat eder. Sağlık alanında kök sebep analizine yönelik hakemli bir eleştiri de aynı noktaya iner; tekil “kök sebep” çerçevesi araştırmacıları tatmin edici tek bir hikâyeye ve sistemden uzağa iter.

Önerim, “neden” yerine “nasıl”ı, tekil “kök sebep” yerine “katkı sağlayan faktörler”i tercih etmektir. Hatanın nasıl mümkün olduğunu sorun; bu, birkaç koşulu yüzeye çıkarır ve sizi onları haritalamaya davet eder. “Neden” sizi tek bir kişiye götürür; “nasıl” sizi bir sistem koşulları kümesine götürür. Olay aracınız tek bir “kök sebep” alanıyla geliyorsa, onu birincil katkı sağlayan faktörün etiketi olarak ele alın.

Charles Perrow’un “Normal Kazalar”ı burada liderlik için bir destek noktasıdır. Hem etkileşimsel olarak karmaşık hem de sıkı bağlı sistemlerde bazı kazalar normaldir, sistemin doğasında olan bir özelliktir: karmaşıklık tetikleyiciyi sağlar ve sıkı bağlılık küçük bir hatayı büyük bir hataya taşır.

Güçlü Organizasyonlar Neyi Farklı Yapar#

Geçiş, insanları optimize etmekten sistemi optimize etmeye ve cezadan düzeltmeye doğrudur. Güçlü olay kültürleri birkaç somut alışkanlığı paylaşır.

Aksiyon maddelerini insanlara değil kontrollere karşı yazarlar. Her madde bir varsayılanı, bir otomasyonu, bir koruma bandını veya bir arayüzü değiştirir; hiçbiri “daha dikkatli ol” değildir. Bu maddeleri, sahibi ve son tarihi olan diğer öncelikli işler gibi izlerler ve kapatırlar. Atlassian’ın çerçevesi açık ve doğrudur: her düzeltici aksiyonu sahibi ve son tarihi olan izlenen bir iş maddesine dönüştürmek, gerçekten iyileşen ekipleri aynı soruna tekrar tekrar çarpan ekiplerden ayıran şeydir.

Yalnızca başarısızlığı değil, başarıyı da incelerler. Erik Hollnagel’in Safety-II ayrımı yararlıdır: Safety-I neyin yanlış gittiğini en aza indirmeye çalışır, Safety-II ise işlerin neden genellikle doğru gittiğini inceler. İşler doğru gider; çünkü insanlar gerçek koşullara mantıklı uyarlamalar yapar; kılavuzdaki “hayal edilen iş”ten farklı olan “yapılan iş” budur. Postmortem için çıkarım, normal operasyonu da incelemektir.

Bir uyarıyla birlikte öğrenme hızını izlerler. Sistem değişikliği üreten postmortem’lerin oranını izlemeyi yararlı buluyorum; incelemelerin gerçek iş yapıp yapmadığına dair gayriresmî bir sinyal olarak. Bu, sektör genelinde standartlaşmamış, yalnızca kendi organizasyonunuza özgü yerel bir göstergedir.

İzlemeye değer birkaç metrik var, hiçbiri manipüle edilmeye değmez. Aksiyon maddesi tamamlanma oranı ve medyan kapanma süresi döngünün kapanıp kapanmadığını gösterir. Tekrar eden olay oranı, sebepleri mi yoksa belirtileri mi düzelttiğinizi gösterir. Tespit etme süresi ve toparlanma süresi, savunmalarınızın ve toparlanmanızın iyileşip iyileşmediğini, bir gurur sayısı olarak değil bir trend olarak gösterir. En sezgilere aykırı olanı ramak kala bildirim oranıdır: sağlıklı bir suçsuz kültürde bu artmalıdır; çünkü insanlar az kalsın olacak olanı yüzeye çıkarmakta kendilerini güvende hisseder.

Kopyalayabileceğiniz Bir Postmortem Şablonu#

Bir postmortem’in, analizin sistemi sessizce atlamaması için sabit bir iskelete ihtiyacı vardır. Aşağıdaki bölümler asgari olandır. Sonuncusu en önemlisidir ve asla boş olmamalıdır.

# Postmortem: [kısa olay başlığı]

## Özet
Bir iki cümle: ne bozuldu, kim etkilendi, ne kadar sürdü.

## Ne oldu (zaman çizelgesi)
Sırayla gerçek olay zinciri. Müdahale edenlerin o an görebildiği
şey üzerinden, her adımda neyin bilindiği. Yorum yok, suçlama
yok, geri görüş (hindsight) yok.

## Etki
Etkilenen kullanıcılar, süre, kapsam ve ölçülebilir herhangi bir
etki. Sıfatlar değil, birimler ve sayılar.

## Tespit boşluğu
Öğrenene kadar ne kadar sürdü. Neden daha erken değil? Hangi
sinyal eksikti, geç geldi ya da kimsenin izlemediği bir yere yönlendi.

## Kontrol boşluğu
Hangi koruma bandı çalışmadı ya da yoktu. Bunu durdurması ya da
küçültmesi gereken ama yapmayan kontrol.

## Katkı sağlayan faktörler
Hatayı mümkün kılan koşullar: süreç, araç, iletişim, sahiplik.
Birkaç tane listeleyin; teke indirgemeye direnin.

## Aksiyon maddeleri
Yalnızca sistem düzeltmeleri. Her madde bir kontrolü, varsayılanı,
otomasyonu ya da arayüzü değiştirir. Her birinin sahibi ve son
tarihi vardır. "Daha dikkatli ol" maddesi yok.

| Aksiyon | Sahip | Son tarih | Durum |
|---------|-------|-----------|-------|
|         |       |           |       |

## Tekrarı nasıl önleriz?
En önemli bölüm. Bu tam hatanın bir sonraki sefere imkânsız ya da
çok daha küçük olmasını neyin sağladığını ve bunu hangi aksiyon
maddesinin getirdiğini açıkça belirtin.

Şablonun neyi içermediğine dikkat edin: olaya kimin sebep olduğuna dair bir alan. Bu eksiklik kasıtlıdır. Müdahale edenler zaman çizelgesinde rolleriyle yer alır (“nöbetçi mühendis”, “dağıtım yapan ekip”), asla suç atfedilecek bir isim olarak değil. PagerDuty’nin rehberi aktörü tam olarak bu nedenle “belirsiz bir müdahale edici” olarak soyutlar; amaç dikkati eylemde ve bağlamında tutmaktır.

Sınır Nerede: Suçsuzluk Sonuçsuzluk Değildir#

Suçsuzluk, sorumluluğun olmaması anlamına gelmez ve bunu liderliğe öyle satmak, biri kötü niyetle davrandığı ilk anda tüm modeli reddettirir. Burada geçerli çerçeve Dekker’in Adil Kültür’üdür (Just Culture): çoğu hata, sistemin izin verdiği dürüst hatalardır ve birkaçı, suçsuz çerçevenin dışında kalan gerçek ihmal, pervasızlık ya da kötü niyettir.

Karar, ortasında bir test olan bir triyajdır.

Evet

Hayir

Hayir

Evet

Evet, muhtemelen

Hayir, makul bir akran yapmazdi

Hayir

Evet

Bir olay meydana geldi

Eylem, sistem o haliyle dusunuldugunde normal, beklenen bir hata miydi?

Dogru oldugu bilinen bir prosedurun bilerek ihlali miydi?

Ikame testi: yetkin bir akran o durumda buyuk olasilikla aynisini yapar miydi?

Pervasiz ya da kotu niyetli miydi?

Sucsuz analiz: kontrolu duzelt, bireysel suclama yok

Yine de sistemi duzelt, arti bir Adil Kultur sorumluluk gorusmesi

Sorumluluk yolu: ve yine de sistem ogrenmelerini geri besle

İkame testi (substitution test) menteşedir. Test, James Reason’ın çalışmasından gelir ve Dekker’in Just Culture yaklaşımıyla yaygınlaştı. Aynı bilgiye ve aynı baskılara sahip başka bir yetkin kişi, büyük olasılıkla aynı seçimi yapar mıydı? Evetse, sorun kişi değil durumdur ve suçsuz analizde kalırsınız. Makul bir akranın bunu yapmayacağı açıksa, gerçek pervasızlığa doğru kaymışsınız demektir ve sorumluluk yolu geçerli olur. O zaman bile sistem öğrenmesi yine de gerçekleşir; bir sorumluluk vakası, organizasyonu koşulları düzeltmekten muaf tutmaz.

PagerDuty ilgili bir noktaya değinir: mükemmel suçsuzluk gerçekçi değildir; çünkü insanın atıf yönündeki önyargısı emirle yok olmaz. Kimsenin tam olarak koruyamayacağı bir saflık iddiası yerine, önyargıyı adlandırarak odanın ona direnmesini sağlayan “suçlama farkındalığını” tercih ederler.

Kısa Bir Örnek#

Bir projede, bir arka plan işi küçük bir kayıt kümesini sessizce iki kez ücretlendirdi. İlk inceleme, değişikliği birleştiren mühendisi buldu, test kapsamının “bunu yakalaması gerektiğini” not etti ve daha fazla test ekleme notuyla kapandı. Aynı tür hata birkaç sürüm döngüsü içinde, farklı bir mühendisten ve farklı bir kod yolundan geri döndü.

İkinci seferinde inceleme bir isimde durmak yerine katmanlardan aşağı indi. Katkı sağlayan faktörler şunlardı: işin idempotency garantisi ve kuru çalıştırma (dry-run) modu yoktu ve iki servis ortak bir kilit olmadan aynı kaydı yazabiliyordu. Aksiyon maddeleri sistemi değiştirdi: işlem üzerinde bir idempotency anahtarı, işte bir dry-run bayrağı ve yinelenen yazmalar için bir alarm; o tür hata bir daha geri gelmedi.

Suçsuz İncelemeyi Boşa Çıkaran Hatalar#

Tekrar tekrar ortaya çıkan birkaç hata modeli:

  • Bir insanda durmak. Tetikleyici bir kişidir; sebep bir sistem boşluğudur.
  • Zaman çizelgesinde geri görüş önyargısı. Zaman çizelgesini yalnızca o an, her müdahale edenin bildiğinden kurun; sizin bugünkü özetinizden değil.
  • Belirsiz aksiyon maddeleri. “Yeniden eğit” ya da “daha dikkatli ol” bir aksiyon maddesi değildir; sahibi ve son tarihi olmayan bir madde de hayata geçmez.
  • Karşı-olgusal dil. “Fark etmeliydiler” var olmayan bir dünyayı tarif eder.

Sonuç#

Suçsuz varsayım, olayların ezici çoğunluğu için geçerlidir: sistemin hataya izin verdiğini varsayın, beş katmandan inin ve aksiyon maddelerini kişilere değil kontrollere karşı yazın. Adil Kültür istisnasına yalnızca yetkin bir akranın açıkça aynı seçimi yapmayacağı durumda başvurun; bu sınır, suçsuz modeli güvenilir kılan ve liderliği yanınızda tutan şeydir.

Kaynaklar#

İlgili yazılar