SRE Prensipleri

Site Reliability Engineering - Sistem Güvenilirlik Mühendisliği

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

  1. SLI ve SLO Tanımlama: Hizmetleriniz için önemli metrikleri ve hedefleri belirleyin.
  2. Monitoring ve Alerting: Sistemlerinizi izlemek ve anormallikler için uyarılar oluşturmak için araçlar kurun.
  3. Olay Yönetimi: Olayları etkili bir şekilde yönetmek için süreçler ve araçlar oluşturun.
  4. Toil Azaltma: Manuel ve tekrarlayan görevleri belirleyin ve otomatikleştirin.
  5. Hata Sonrası İnceleme: Olaylardan öğrenmek için hata sonrası inceleme süreci oluşturun.
  6. Kapasite Planlama: Gelecekteki büyümeyi karşılamak için kapasite planlama yapın.

DevOps Bültenimize Abone Olun

En son DevOps haberleri, araçları ve best practice'leri hakkında güncel kalın.