Freelance’den küçük ekibe geçiş sırasında en çok eksiğini hissettiğim şey on-call rotation oldu. Solo çalışırken alarm her zaman sizin. Telefonda müşteri, kanalda kritik bug, gece yarısı deploy hepsi size geliyor. Ekip kurunca işleri doğru dağıtmayı öğrenmek gerekiyor, yoksa kimse bir yıl dayanmıyor.
Son 18 ayda 3 farklı ekip büyüklüğünde on-call setup yaptım. 2, 4, 8 kişilik ekipler. Her büyüklükte başka pattern işe yarıyor. Bu yazıda öğrendiklerim.
On-call’ın amacı
On-call’ı stres kaynağı değil, sistemin sağlık barometresi olarak düşünmek gerek. İyi bir on-call rotation’ı şu 3 hedefi yakalıyor:
- Hızlı müdahale: production outage fark edildiği andan çözüme minimum süre
- Dağıtık bilgi: herkes sistemin kritik parçasını anlıyor, tek kişinin silo’su yok
- Sürdürülebilir yaşam: kimse bir yıl sonra tükenmiş hissetmiyor
Solo developer bu 3 hedeften sadece 1’inciyi yakalar. Dağıtık bilgi yok, sürdürülebilirlik yok. Ekipleşmenin asıl kazancı bu.
Rotation sıklığı
Ekip büyüklüğüne göre:
2 kişi: haftalık rotation, cuma akşamı el değiştirir. Hafta sonu önceki hafta on-call olan kişi sessizce geçer (yoğun yaşar). Burn-out hızlı.
4 kişi: haftalık rotation, her ay 1 hafta nöbet. Toparlanmak için 3 hafta aralık yeterli.
8 kişi: haftalık veya 2-haftalık, primary + secondary olarak 2 kişi paralel. Primary ilk çağrıyı alıyor, secondary yedek.
Günlük rotation bana doğru gelmiyor: context switch çok fazla, incident’lar 24 saatte kapanmıyor, devir alan yeni kişi henüz ısınmadan biriktiremez.
Aylık rotation ise çok uzun: 1 ay nöbet kimseyi bozar, ondan sonra 3 ay iyileşme bile yetmiyor.
Haftalık tatlı orta nokta.
Tool: PagerDuty, Opsgenie, veya basit
İlk ekipte Discord bot + manuel takip ile başladık, 3 ay sonra çöktü. Eksik çağrı, yanlış eskalasyon, rotation kaydı tutulmuyor.
PagerDuty veya Opsgenie şart:
– Rotation schedule tanımlama
– Escalation policy (primary yanıt vermezse secondary’ye, sonra manager’a)
– Alarm kaynaklarının (Datadog, Sentry, UptimeRobot) entegrasyonu
– Incident timeline otomatik oluşturma
– Mobile app (uyandıracak ama uyandıracak)
PagerDuty küçük ekipler için biraz pahalı (kişi başı aylık ~$30+), Opsgenie Atlassian eklosisteminde (Jira kullanıyorsanız iyi).
Bütçe yoksa: Grafana OnCall (open source, self-hosted), veya basit bir rotation sheet + Discord/Slack alert bot kombinasyonu. Gelişim aşamasında tutar.
Alert fatigue: gerçek tehdit
Bir ekibi yıkmanın en hızlı yolu on-call’u spam alarm’la doldurmak. “CPU %85’e ulaştı” alarm’ı bir haftada 50 kere gelirse kimse ciddiye almaz, gerçek incident kaçar.
Disiplin:
Alarm’ın her biri actionable olmalı. Gözlem için değil, müdahale için alarm. “CPU high” bilgisel metrik, alarm değil. “CPU p95 %90+ son 15 dakika” + tıklayınca runbook varsa alarm.
Alarm threshold’unu sıkı ayarlayın. Geniş threshold yanlış alarm üretir, sıkı threshold kimse bakmaz. İdeal: alarm gelince %90 gerçek bir sorun var.
Her alarm’ın runbook’u olsun. Alarm tıklandığında on-call engineer şu adımları uygulayacak: çöktü mü? → şunu kontrol et → şu logu oku → şu komutu çalıştır → çözmezse eskalate et.
Runbook yoksa engineer kör şekilde debug ediyor, çözüm süresi artıyor, stres artıyor, herkes nefret ediyor.
Alert review haftalık. Her hafta on-call’dan çıkan kişi gelen alarm’ları review ediyor. “Bu bir alarm olmamalı”, “bunun threshold’u yanlış”, “bu 3 alarm aslında 1 root cause” tespit edip düzeltiyor.
Bu disiplini uygulayan ekip 3 ay sonra alarm sayısı yarıya iniyor, kalan alarm’ların her biri ciddiye alınıyor.
Severity seviyeleri
Tüm alarm’ı P1 yapmak = hiçbirini P1 yapmamak.
Kullandığım seviyeler:
- P1 (critical): production’ın önemli bir kısmı down, revenue impact. Anında müdahale, on-call derhal kalkıyor.
- P2 (major): feature degradation, bazı kullanıcılar etkileniyor. 1 saat içinde müdahale.
- P3 (minor): ufak problem, kullanıcı etkisi sınırlı. Mesai içinde çözüm.
- P4 (low): kozmetik, non-urgent. Bilet açılır, rotasyon dışı ele alınır.
P1 sadece gece uyandırır. P2 mesai dışı Slack notification, hemen kalkma. P3-P4 e-posta, mesai başına bırakılır.
Incident response protocol
On-call engineer alarm aldığında sıralama:
- Acknowledge (5 dakika içinde): PagerDuty’de “ack” veriyor, rahatsız olmayacak
- Triage: etki seviyesi nedir, kritik mi escalate edelim mi?
- Communicate: Slack incident channel açılıyor, status page update
- Mitigate: en kısa yoldan etkiyi azalt (rollback, circuit break, traffic redirect)
- Resolve: kök nedene git, fix et, doğrula
- Postmortem: 24-48 saat içinde blameless postmortem yaz
Blameless postmortem
Incident sonrası en kritik iş postmortem. İyi postmortem şunu yapıyor:
- Ne oldu, kronolojik
- Neden oldu, kök nedene inmek (5 Whys)
- Nasıl fark edildi (detection time)
- Nasıl çözüldü (mitigation time)
- Tekrarlamamak için aksiyon item’ları (owner + due date ile)
- “Kimse suçlu değil” – sistem problemi, kişi hatası değil
Blameless kültür önemli. Birisi “Ali’nin deploy’u bozdu” yazılırsa kimse bir daha risk almaz, postmortem’e gelmez, öğrenme ölür.
Compensation
On-call emek. Haftalık nöbet tutuyorsanız karşılığını almalısınız. Seçenekler:
- Hourly on-call pay: her saate ücret (ücretsiz yedek rotation + ücretli nöbet)
- Flat weekly bonus: nöbet haftası sabit prim
- Comp time: nöbet haftasında uyanmışsanız ertesi gün izin
- Equity / bonus pool dağılımı: yıl sonu bonus’ta on-call saatleri ağırlık
Compensation olmayan on-call tükenmişlik garantisidir. Şirket politikası olarak açık olsun.
Solo’dan ekibe geçiş ipucu
2 kişiye büyürken ilk çalışan düşüyor. “Ben zaten yapıyordum, yardım etmesin” diye devretmeme eğilimi. Bu 3 ay sonra yeni adamın yarı ayağa kalkamamış olmasına ve kurucunun yine tek başına boğuşmasına dönüşüyor.
Tam tersine: yeni adam ilk haftadan rotation’a alınsın. Kurucu secondary olsun, yeni adam primary. Tüm alarm’lar önce yeni adama geliyor, o bakamazsa kurucuya escalate oluyor. Bu bilgi transferini hızlandırıyor, sorumluluğu paylaşıyor, senin rahatlamana izin veriyor.
Son not
On-call kültürü şirket kültürünün aynası. Spam alarm, silent sufferer, burn-out’lu ekip = şirket yönetimi yok. İyi rotation + runbook + blameless postmortem + adil compensation = sağlıklı mühendislik organizasyonu.
Bu discipline yatırım yapan ekipler uzun vadeli çok daha iyi çıkıyor.