SRE Nedir?
Site Reliability Engineering (SRE), Google tarafından geliştirilen, yazılım mühendisliği yaklaşımlarını sistem yönetimi görevlerine uygulayan bir disiplindir. SRE, sistemlerin güvenilirliğini, ölçeklenebilirliğini ve performansını artırmak için yazılım mühendisliği prensiplerini kullanır.
SRE, DevOps'un bir uygulaması olarak düşünülebilir; ancak daha spesifik pratikler, ölçümler ve roller içerir. SRE ekipleri, sistemlerin güvenilirliğini artırmak için otomasyona, ölçümlere ve sürekli iyileştirmeye odaklanır.
SRE'nin Temel Prensipleri
- Hata Bütçesi
- SLI, SLO ve SLA
- Toil Azaltma
- Otomasyon
- Kademeli Alarm
- Hata Sonrası İnceleme
SRE'nin Temel Prensipleri
Hata Bütçesi (Error Budget)
Hata bütçesi, bir sistemin ne kadar güvenilmez olabileceğini belirleyen bir ölçüdür. SRE, %100 güvenilirliğin gerçekçi olmadığını ve çok maliyetli olduğunu kabul eder. Bu nedenle, belirli bir zaman diliminde kabul edilebilir hata miktarını tanımlar.
Örnek: %99.9 kullanılabilirlik hedefi, ayda yaklaşık 43 dakikalık kesinti anlamına gelir.
SLI, SLO ve SLA
SLI (Service Level Indicator): Hizmet seviyesini ölçen metrikler (örn. yanıt süresi, hata oranı).
SLO (Service Level Objective): SLI'lar için hedefler (örn. yanıt süresi < 200ms).
SLA (Service Level Agreement): Hizmet sağlayıcı ve müşteri arasındaki resmi anlaşma, SLO'ları içerir ve ihlal durumunda sonuçları belirtir.
Toil Azaltma
Toil, manuel, tekrarlayan ve otomatikleştirilebilir görevlerdir. SRE, toil'i azaltmaya odaklanır çünkü bu görevler değer katmaz ve ekibin zamanını alır.
Toil Özellikleri:
- Manuel
- Tekrarlayan
- Otomatikleştirilebilir
- Taktiksel (stratejik değil)
- Ölçeklenebilir değil
Otomasyon
SRE, manuel görevleri otomatikleştirerek, insan hatalarını azaltmayı ve ekibin daha değerli görevlere odaklanmasını sağlar.
Otomasyon Hedefleri:
- Toil'i azaltmak
- Tutarlılığı artırmak
- Ölçeklenebilirliği sağlamak
- Hızlı yanıt vermek
SRE vs. DevOps
Özellik | SRE | DevOps |
---|---|---|
Köken | Google tarafından geliştirildi | Endüstri genelinde ortaya çıktı |
Odak Noktası | Sistem güvenilirliği ve ölçeklenebilirlik | Geliştirme ve operasyon arasındaki iş birliği |
Yaklaşım | Mühendislik odaklı, ölçüm tabanlı | Kültür odaklı, süreç tabanlı |
Roller | Spesifik SRE rolleri (SRE Mühendisi) | Çeşitli roller (DevOps Mühendisi, vb.) |
Metrikler | SLI, SLO, hata bütçesi | Dağıtım frekansı, değişiklik başarısı oranı |
İlişki | DevOps'un bir uygulaması | Daha geniş bir kültür ve felsefe |
SRE Pratikleri
Monitoring ve Alerting
SRE, sistem durumunu sürekli izler ve anormallikler için uyarılar oluşturur. Uyarılar, gerçek sorunları göstermeli ve eylem gerektirmelidir.
Prensipler:
- Semptomları izle, nedenleri değil
- Eylem gerektiren uyarılar oluştur
- Kademeli uyarı sistemi kullan
Olay Yönetimi
SRE, olayları (incidents) etkili bir şekilde yönetmek için süreçler ve araçlar kullanır. Olay yönetimi, hızlı yanıt vermeyi ve etkiyi azaltmayı amaçlar.
Süreç:
- Tespit ve bildirim
- Sınıflandırma ve önceliklendirme
- Araştırma ve teşhis
- Çözüm ve kurtarma
- Hata sonrası inceleme
Hata Sonrası İnceleme
SRE, olaylardan öğrenmek için hata sonrası inceleme (postmortem) yapar. Bu incelemeler, suçlama yapmadan, sistemik sorunları tespit etmeyi amaçlar.
İçerik:
- Olay özeti
- Zaman çizelgesi
- Kök neden analizi
- Etki ve zarar değerlendirmesi
- Eylem maddeleri
- Öğrenilen dersler
SRE Ölçümleri
Güvenilirlik Ölçümleri
Kullanılabilirlik: Sistemin kullanılabilir olduğu zaman yüzdesi.
Formül: Kullanılabilirlik = Çalışma Süresi / (Çalışma Süresi + Kesinti Süresi)
Örnek SLO'lar:
- %99.9 (üç dokuz): Ayda yaklaşık 43 dakika kesinti
- %99.99 (dört dokuz): Ayda yaklaşık 4.3 dakika kesinti
- %99.999 (beş dokuz): Ayda yaklaşık 26 saniye kesinti
Performans Ölçümleri
Gecikme (Latency): Bir isteğin işlenmesi için gereken süre.
Trafik: Sistem üzerindeki talep miktarı (örn. RPS - saniyedeki istek sayısı).
Hata Oranı: Başarısız isteklerin yüzdesi.
Doygunluk (Saturation): Sistemin ne kadar dolu olduğu (örn. CPU kullanımı, bellek kullanımı).
SRE Rolleri ve Sorumlulukları
SRE Mühendisi
SRE Mühendisi, sistemlerin güvenilirliğini, ölçeklenebilirliğini ve performansını artırmak için çalışan bir yazılım mühendisidir.
Sorumluluklar:
- Otomasyon araçları geliştirmek
- Monitoring ve alerting sistemleri kurmak
- Kapasite planlama yapmak
- Performans optimizasyonu yapmak
- Olay müdahalesi yapmak
SRE Yöneticisi
SRE Yöneticisi, SRE ekibini yöneten ve SRE pratiklerinin organizasyon genelinde uygulanmasını sağlayan kişidir.
Sorumluluklar:
- SRE ekibini yönetmek
- SLO'ları belirlemek ve izlemek
- Hata bütçesini yönetmek
- Organizasyon genelinde SRE pratiklerini yaymak
- Üst yönetimle iletişim kurmak
SRE'yi Uygulamaya Başlamak
- SLI ve SLO Tanımlama: Hizmetleriniz için önemli metrikleri ve hedefleri belirleyin.
- Monitoring ve Alerting: Sistemlerinizi izlemek ve anormallikler için uyarılar oluşturmak için araçlar kurun.
- Olay Yönetimi: Olayları etkili bir şekilde yönetmek için süreçler ve araçlar oluşturun.
- Toil Azaltma: Manuel ve tekrarlayan görevleri belirleyin ve otomatikleştirin.
- Hata Sonrası İnceleme: Olaylardan öğrenmek için hata sonrası inceleme süreci oluşturun.
- Kapasite Planlama: Gelecekteki büyümeyi karşılamak için kapasite planlama yapın.