Production'daki bir full stack uygulamayı nasıl izlersiniz? Log, metrik, trace ve alarm stratejiniz nedir?
Cevap
Gözlemlenebilirliğin üç temel sinyali vardır: log (ne oldu), metrik (ne kadar/ne sıklıkta), trace (istek hangi servislerden geçti ve nerede yavaşladı). Bunlara frontend tarafında hata takibi ve gerçek kullanıcı ölçümü (RUM) eklenir.
Katmanlar
- Frontend: Sentry gibi bir araçla JS hataları (source map yüklenmiş), Core Web Vitals ölçümü, kullanıcı oturum bağlamı.
- Backend: yapılandırılmış (JSON) loglar, her istekte bir
request_id/ trace ID; RED metrikleri: Rate (istek sayısı), Errors (hata oranı), Duration (p50/p95/p99 latency). - Altyapı: CPU, bellek, DB bağlantı sayısı, yavaş sorgular, kuyruk uzunluğu.
- Dağıtık trace: OpenTelemetry ile frontend'den backend'e ve DB'ye kadar tek bir trace;
traceparentbaşlığı servisler arasında taşınır.
// Express: her log satırında istek kimliği
app.use((req, res, next) => {
req.id = req.headers["x-request-id"] || crypto.randomUUID();
res.setHeader("x-request-id", req.id);
next();
});
logger.info({ reqId: req.id, userId, route: "/orders" }, "order created");Alarm stratejisi
- Belirtiye göre alarm: "CPU %80" yerine "son 5 dakikada hata oranı %2'yi geçti" veya "p95 latency 1 sn'yi aştı". Kullanıcıyı etkileyen şeye alarm kurun.
- SLO tanımlayın: örneğin "aylık isteklerin %99,9'u başarılı". Error budget tükenirken alarm verin.
- Uptime kontrolü dışarıdan yapılmalı (sağlık endpoint'i
/healthz). - Alarm yorgunluğundan kaçının: her alarm aksiyon alınabilir olmalı ve bir runbook'a bağlanmalı.
Loglara parola, token veya kişisel veri yazılmamalıdır.
İlgili Bulut & Deploy soruları
- Bulut faturası beklenenden çok yüksek geldi. Maliyeti nasıl analiz eder ve düşürürsünüz?
- Edge function ve edge rendering nedir? Kodu ne zaman edge'de, ne zaman tek bir bölgede (region) çalıştırırsınız?
- Veritabanı şema değişikliklerini (migration) kesintisiz (zero-downtime) nasıl deploy edersiniz? Expand-contract nedir?
- Blue-green deployment ile canary deployment arasındaki fark nedir? Rollback nasıl yapılır?
- Serverless (ör. AWS Lambda, Vercel Functions) ile container tabanlı deploy (Cloud Run, ECS, Kubernetes) arasında nasıl seçim yaparsınız?
- Uygulamanıza özel bir alan adı bağlayıp HTTPS'i nasıl kurarsınız? A, CNAME kayıtları ve TTL ne işe yarar?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.