İçeriğe geç
Contentin
ContentinKaydol

Post-mortem

Linkback checker yayını engelledi: Hipotetik bir post-mortem

Kurgu bir ekip, kurgu bir olay, gerçek mekanikler. Olayı, bir on-call mühendisin yazacağı şekilde sıralı olarak anlatıyoruz.

Küçük bir fabrika ortamında bir paket taşıyan bir konveyör bantı duran kırmızı mekanik bir kol
Bu bir örnektir

Aşağıdaki ekip, ürün ve zamanlamalar, bir hatanın nasıl işlediğini göstermek için uydurulmuştur. Gerçek bir şirket, müşteri veya ölçüm anlatılmamaktadır.

Olay, sırasıyla

  1. 1

    09:10, bir lansman sayfası CMS'ye giriyor

    Altı kişilik bir ürün ekibi, headless bir CMS ve statik bir derleme üzerinde bir pazarlama sitesi yönetiyor. Editör, bir hafta önce kaydedilmiş bir ortak etki alanına link veren bir ortak duyurusu hazırlıyor.

  2. 2

    09:14, editör yayınlamaya tıklıyor

    Yayın webhook'u bir fonksiyonu çağırıyor. Fonksiyon, ortak etki alanına bir linkback checker çağrısı yapıyor ve her başarılı olmayan yanıtta yayını engellemek üzere yazılmış.

  3. 3

    09:14, derleme hiç başlamıyor

    İki şey aynı anda başarısız oluyor. Etki alanı çok yeni, bu yüzden indeksimiz henüz onu bilmiyor olabilir. Ayrı olarak, ekibin anahtarının ön ödemeli bakiyesi boştu, bu nedenle ücretli takip çağrısı HTTP 402 döndürdü.

  4. 4

    09:40, ekip bunu fark ediyor

    Editör belirsiz bir hata bildiriyor. Bir mühendis, fonksiyon loglarını okuyor, 402'yi ve boş sonucu görüyor ve iki şeyden hangisinin engelleme yarattığını anlamak için yirmi dakika harcıyor.

  5. 5

    10:05, lansman manuel olarak yapılıyor

    Birisi hook'u manuel bir dağıtımla atlıyor. Lansman 55 dakika gecikiyor ve atlama, hangi kontrollerin atlandığına dair bir iz bırakmıyor.

Bir bahçıvan, küçük bir bahçe yatağında üç farklı bitki türüyle ilgileniyor

Ekip lansmandan önce neleri kontrol etmişti

Oldukça az, ortaya çıktı. Test listesi yalnızca iyi bilinen etki alanlarını içeriyordu, bu yüzden boşluk bir ortak linki gelene kadar gizli kaldı. Ünlü bir sitede yapılan bir test, borulamanın çalıştığını kanıtlar, henüz indeksin görmediği bir etki alanı hakkında hiçbir şey söylemez.

Daha iyi test listeleri üç tür etki alanı içermelidir: yerleşik bir tane, küçük bir niş tane ve yakın zamanda kaydedilmiş bir etki alanı. Herkes ona güvenmeden önce hepsini hook üzerinden çalıştırın.

Test hangi etki alanlarını kapsıyordu?

Yalnızca kolay olanları. Listeki her etki alanının arkasında yıllarca geçmiş vardı, bu yüzden her yanıt tam olarak geldi ve kimse boş bir yanıtın yayına nasıl etki ettiğini görmedi.

Gerçekten yeni bir etki alanı ekleyin ve sonucunu elle okuyun. Not, bilinmesi gereken yerde 'bad' (hatalı) yerine 'unknown' (bilinmeyen) diyorsa, kural lansmandan önce yeniden yazılmalı.

Staging çalışması neyi dışarıda bıraktı?

Staging çalışması sağlıklı bir bakiyesi olan bir anahtar kullandı, bu yüzden boş bakiye yolu hiç çalışmadı. Krediyet kasıtlı olarak bitirecek bir test yazan kimse yoktu.

Bu yolu test altında tutun. Çeyrek yılda bir 402'yi zorlayın ve editörün sonrasında ne gördüğünü okuyun, çünkü kimse tarafından çalıştırılmayan bir hata yolu, kimse tarafından güvenilen bir yol değildir.

Neden oldu

Kapı, her başarılı olmayan durumu bir karar olarak ele aldı. Bu kök nedimdi. Bir bakiye sorunu ve bilinmeyen bir etki alanı, araçlar ve indeks hakkında gerçeklerdir ve sayfa hakkında hiçbir şey söylemezler.

Grafiğimiz ayda bir kez yeniden oluşturulur. Son yenilemeden sonra kaydedilen bir etki alanı boş görünebilir ve yeni bir ortak, bir lansman sayfası için normal bir durumdur. Kimse kontrol etmemişti. Ekip, hook'u yalnızca nytimes.com gibi eski, iyi bilinen etki alanlarıyla test etmişti.

İkinci eksiklik sessizlikti. Fonksiyon hatayı logladı ancak uyarı göndermedi ve editör, kredinin bitip bitmediğine dair bir ipucu içermeyen genel bir hata mesajı gördü.

Maliyet asla sorun değildi. Çağrı başına 2 kredi ile, bu kurgu site için tüm ayın kontrolleri yaklaşık 0,60 $'a mal oldu, bu rakam maliyet tablosu içindeki 3.000 yayın satırıyla aynıydı. Kapı ucuzdu ve yine de 2026'da onlara bir saat kaptırdı.

402 kendi satırını hak eder. Ön ödemeli bir bakiye, izlenebilecek bir durumdur, bu nedenle 10.000 kredide (1 $'a denk gelir) basit bir alarm, günler önce tetiklenirdi.

Ekip tarafından yazılan aksiyon maddeleri

Sorumlular rollerdir, kişiler değil. Tüm maddeler örneğin parçasıdır.
DeğişiklikSorumluNeden
402'yi bir atlama ve platform kanalına bir uyarı olarak ele alınPlatformKredi, bir sayfa durumu değil, bir faturalandırma durumudur
Yeni bir etki alanı için boş sonucu 'bad' (hatalı) yerine 'unknown' (bilinmeyen) olarak ele alınPlatformİndeks yaklaşık bir ay geridedir
Editöre nedeni sade kelimelerle gösterinEditoryal araçlarLoglar okunarak kaybedilen 20 dakika
Atlanan kontrolleri girişe kaydedinPlatformManuel dağıtımlar bir iz bırakmadı
Hook'u bu hafta kaydedilmiş bir etki alanıyla test edinQAEski etki alanları boşluğu gizler

Lansman haftası için bir prova

Bunları bir sonraki başarısızlıktan sonra değil, bir sonraki lansmandan önce çalıştırın.

  1. 1

    Kimse tarafından kontrol edilmemiş bir etki alanı seçin

    Yakın zamanda kaydedilmiş bir etki alanı seçin ve üzerinde ücretsiz genel bakış işlevini çağırın. İnce bir yanıtın bir blok olarak değil, 'unknown' (bilinmeyen) olarak loglandığını onaylayın.

  2. 2

    Test bakiyesini boşaltın

    Küçük bir bakiyesi olan bir test anahtarı kullanın ve kasıtlı olarak sıfıra kadar çalışmasına izin verin. 402'nin geldiğini, alarmın tetiklendiğini ve yayının derlemeye devam ettiğini izleyin.

  3. 3

    Editörün mesajını sesli olarak okuyun

    Hook'u görmemiş bir meslektaşınıza hata metnini okutun. Sonraki adımı söyleyemiyorlarsa, mesajı lansmandan önce yeniden yazın.

  4. 4

    Atlama girişe yazılsın

    Atlanan bir kontrolün girişe tarihi ve nedeni olan bir not bıraktığını onaylayın. Manuel bir dağıtım, kimse tarafından açıklanamayan bir boşluk bırakmamalıdır.

Üç ayrı renkli alet kutusu, küçük bir sahnede bir atölye tezgahında duruyor

Düzeltme nasıl yazıldı

Ekip, her yanıtın farklı bir sorumlusu olduğu için tek bir genel hatayı üçe böldü. Bir 401 bir anahtar sorunudur, bir 402 bir faturalandırma durumudur ve yeni bir etki alanı için boş bir sonuç yalnızca bilinmeyendir. Her biri kendi dalını ve kendi mesajını alır. Bu tüm değişikliktir.

Hangisinin gerçekleştiğini bilmek için bir yığın izleme okumaya gerek yoktu. Uyarı durumu adlandırır ve editör, sonraki adımı ne yapması gerektiğini söyleyen bir cümle görür.

Neden bir bakiye alarmı sıfırın çok üzerinde ayarlanır?

On bin kredi, yayımlanan fiyata göre 1 $'a mal olur; erken geldiğinde hâlâ bolca uyarı veren küçük bir miktar. Alarmı bir insanın göreceği yere, kimse tarafından Cuma günleri açılmayan bir loga değil ayarlayın.

Günde bir kez gürültülü başarısız olan bir kontrol, bir lansman sırasında sessizce başarısız olan birinden iyidir.

Sayıyı ekip ile anlaşın ve anahtarları döndürme kuralının yazıldığı aynı yere yazın, böylece ikisi birlikte gözden geçirilir.

Yeni bir etki alanı bir başarısızlık olarak sayılmalı mı?

Hayır. İndeks tarafından henüz görülmeyen bir etki alanı, sayfa hakkında değil, indeks hakkında bir gerçektir. Tarihle birlikte 'unknown' (bilinmeyen) olarak kaydedin ve editörün bir sonraki yenileme için bekleyip beklemeyeceğine karar vermesine izin verin.

Aynı kural herhangi bir ince yanıt için geçerlidir. Eksik veri olarak ele alın, ortağın bir kararı olarak değil.

Bilinmeyen yanıtı kendi listelerinde loglayın, böylece bir kalıp genel logda gömülü kalmak yerine bir sonraki incelemeye görünür hale gelir.

Ne alınmalı

Link verilerinde açık hata verin, uyarıda gürültülü hata verin

Bir link kontrolü, bir editör ile bir lansman arasında duran tek şey asla olmamalıdır. Sayfayı geçirin, girişi etiketleyin ve anahtara sahip kişi için hatayı gözden kaçırılmaz kılın.

  • Kodda 401, 402 ve boş bir sonucu ayırt edin
  • Bakiye alarmını sıfırın çok üzerinde tutun (bkz. maliyet tablosu)
  • Lansman gününden önce staging'de hatayı prova edin

Ekip tarafından sonradan sorulan sorular

İnceleme toplantısı, bu hikayenin her versiyonunda aynı soru yığınını ortaya çıkardı. İşte kurgu ekibin bunlara nasıl cevap verdiği ve bu cevapların bir organizasyondan diğerine neden farklı olacağı.

Bu cevapların hiçbiri evrensel değildir ve her biri sayfanın amacına bağlıdır. Nokta, bir sonraki sürümden önce kağıt üzerinde bir cevaba sahip olmaktır.

Kapı kapalı devre çalışmalı mıydı?

Bu kurgu ekip için hayır. Bir link kontrolü, aylık bir indeks üzerine inşa edilmiş bir sinyaldir ve editör ile bir lansman arasında duran tek şey olmamalıdır.

Politikayı bir cümle olarak yazın, böylece bir sonraki mühendis kasıtlı bir engeli bir hatadan ayırt edebilir.

Daha büyük bir bakiye bunu önler miydi?

Sorunu çözmek yerine ertelerdi. Daha büyük bir bakiye de bitebilir ve her başarılı olmayan durumu bir karar olarak ele alan bir kapı, ilk bilinmeyen etki alanında yine de engelleyecektir.

Düzeltme, üç yanıtta bölünme ve erken tetiklenen bir alarmdır. Bakiye hikayenin yalnızca bir parçasıdır.

Yaptığınız her kapı için aynı soruyu sorun: Hangi hata sessiz kalacak ve bunu ilk kim fark edecek?

Hipotetik hakkında bir not

Gerçek ekipler farklılık gösterecektir. Sizin iyi nedenlerle kapalı devre çalışabilir, örneğin her dış linkin bir kişi tarafından gözden geçirildiği düzenlenmiş bir site. Peki ya? Sadece bunu bir tercih olarak yapın.

Webhook runbook'u aynı kararları bir kontrol listesi olarak listeler ve mit listesi bu kurgu ekibi tuzak içine sokan inançları kapsar.