Kendi platformumuzda nöbet — 100 site, 5 kişi ve gece 3'teki alarm
Kendi XCP-ng hipervizörümüz + NIP Platform 97 siteyi çalıştırıyor. 5 kişilik bir nöbet rotasyonu, bir alarm bütçesi ve tek kural: gece 3'te neyin uyandırabileceği, neyin sabahı bekleyeceği.
İyi bir nöbet rotasyonu, hiç uyandırılmayan değildir. Nöbetçinin neden uyandırıldığını tam olarak bildiği rotasyondur.
2024 ortasından beri tüm altyapımızı kendi XCP-ng hipervizör kümemizde çalıştırıyoruz — Nortinia NIP Platform üzerinden yönetilen 8 fiziksel makine, 47 sanal makine. Bugün üzerinde 97 müşteri sitesi, ~340 mikroservis + worker + zamanlayıcı örneği ve 11 milyon Postgres satırı çalışıyor. Nöbet rotasyonumuz 5 kişiden oluşuyor. Her yeni müşteri soruyor: "Gece 3'te çökerse ne olur?" Bu yazı bunun cevabı — ve neden 3 aydır gece hiç uyandırılmadığımın.
Alarm bütçesi — gece 3 kuralı
En büyük karar izleme altyapısı (Pino + Loki + Grafana + OpenTelemetry) değil, "alarm bütçesi" oldu. Tüm rotasyon için haftada en fazla 2 alarm gece (22:00–06:00) nöbetçiyi uyandırabilir. Bundan fazlası nöbetçinin sorunu değil — sistem önceliğidir. Pazar öğleden sonra rotasyon sorumlusu alarmların neden arttığını inceler; ya sorunu giderir ya da alarmı "sabah" alarmı olarak yeniden sınıflandırır. Oyun teorisi basit: pazartesi 5 gece alarmına izin verirseniz perşembeye 12 olur ve kimse uyuyamaz.
Gece 3'te neyin uyandırmasına izin var
- Bir müşteri sitesinin 3 dakikadan uzun süre tamamen çökmesi (HTTP 5xx veya zaman aşımı > %95)
- Postgres birincil sunucusunun çökmesi veya replikasyon gecikmesinin 2 dakikadan uzun süre 60 saniyeyi aşması
- Bir XCP-ng düğümünün tamamen kesilmesi (diğer düğümler ICMP ile ulaşamıyor)
- Ödeme hattının çökmesi (5 dakikadır Stripe webhook'u gelmiyor, BullMQ kuyruğunda > 1000 bekleyen iş)
- Veri kaybı riski: yedekleme hattı 12 saattir başarıyla çalışmadı
Neler sabahı bekler
- Yeniden başlatma döngüsündeki tek bir worker örneği (Kubernetes yeniden başlatıyor, durum kontrol altında)
- 95. yüzdelik normalken 99. yüzdelikte gecikme anomalisi
- 14 gün içinde süresi dolacak TLS sertifikası (Let's Encrypt otomatik yenileme zaten yeniden deniyor)
- Disk kullanımı > %70 ama < %85 (%85 eşiği gece alarmını tetikler)
- Müşteriye özel bir entegrasyonun (ör. bir CRM webhook'u) başarısız olması — yalnızca o müşterinin destek kanalında görünür
12 ay sonra rakamlar
Son 12 ayda rotasyon gece 67 kez uyandırıldı — haftada 1,3 kez, 2'lik bütçenin altında. 41'i gerçek olaydı (%61), 26'sı yanlış alarm (%39). Yanlış alarmların %80'i 3 alarm kuralından geliyordu; bu kuralları o zamandan beri sıkılaştırdık veya sabah alarmı olarak yeniden sınıflandırdık. Sabah görev listesinde 312 kayıt birikti — en yaygın "sessiz" sorunlar; asıl iş de bunlar, gece 3 paniği değil. 5 kişilik rotasyonda kişi başı alarm yorgunluğu: uyku bölünmeleri arasında ~9,5 hafta.
İyi nöbet bir kahramanlık değildir. Bir süreçtir — sistemi kişinin değil, sistemin kendisinin ayakta tuttuğu bir süreç.