Senior DevOps mülakat soruları ve cevapları: Docker, gözlemlenebilirlik ve güvenilirlik
Senior DevOps mülakat soruları ve cevapları: Docker, gözlemlenebilirlik ve güvenilirlik
DevOps seniorlığı araç listesi değil, sistemin başarısızlık altında ne kadar anlaşılır ve geri döndürülebilir olduğudur.
1. Production Docker image'ını nasıl güvenli tutarsınız?
Multi-stage build kullanır, derleyici ve paket yöneticisini runtime katmanına taşımam. Uygulama non-root kullanıcıyla çalışır; minimum base image seçer, gereksiz paketleri dahil etmem. Image sürümünü digest veya belirli tag ile sabitler, bağımlılık ve image taramasını CI'a eklerim.
Amaç “en küçük image” yarışını kazanmak değil; çalışma anında gerekli olmayan bileşenleri ve saldırı yüzeyini azaltmaktır.
2. Liveness ve readiness farkı nedir?
Liveness, process'in kilitlenip kilitlenmediğini anlamak içindir; başarısızsa yeniden başlatma tetiklenebilir. Readiness ise instance'ın trafik almaya hazır olup olmadığını söyler: veritabanına bağlanmış mı, gerekli konfigürasyonu yüklemiş mi?
Bu ayrımı yapmazsanız geçici veritabanı sorunu sağlıklı process'leri sürekli yeniden başlatabilir veya hazır olmayan instance'a trafik gönderebilirsiniz. Health endpoint'leri bağımlılıkları bilinçli ve timeout'lu kontrol etmelidir.
3. Log, metric ve trace neden üç ayrı şey?
Log belirli bir olayın ayrıntısıdır. Metric zaman içindeki sayısal eğilimi gösterir: hata oranı, gecikme, CPU, kuyruk derinliği. Trace ise tek bir isteğin servisler arasındaki yolculuğudur.
Bir incident'te metric alarmı sorunu fark ettirir, trace yavaş zinciri gösterir, correlation ID'li log kök ayrıntıyı verir. Sadece log toplamak gözlemlenebilirlik değildir.
4. Kapasiteyi nasıl planlarsınız?
Tahminle değil, trafik ve kaynak profiliyle başlarım: p95/p99 gecikme, istek oranı, CPU/memory, bağlantı havuzu kullanımı ve bağımlılık limitleri. Peak senaryoları ile yük testi yapar, kapasiteye güvenlik payı eklerim.
Yatay ölçekleme API için kolay görünebilir; fakat session, cache invalidation, dosya depolama ve migration gibi stateful noktalar önceden tasarlanmalıdır.
5. Backup var demek yeterli mi?
Hayır. Yedek ancak belirlenen RPO/RTO hedefini karşılayan, şifreli, erişimi sınırlı ve düzenli geri yükleme testi yapılmışsa anlamlıdır. MariaDB dump'ı ile MinIO obje deposu yedeğinin kapsamı ve retention süresi belgelenmelidir.
Docker Compose production deploy rehberinde uygulama container'larının veritabanı ve storage altyapısından neden ayrı işletildiğini anlattım. Bu ayrım, uygulama deploy'unu geri döndürülebilir tutarken veri yaşam döngüsünü ayrıca yönetmeyi sağlar.