Site Reliability Engineering (SRE) Nedir?
Site Reliability Engineering (SRE), Google tarafından 2003 yılında ortaya konulan ve yazılım mühendisliği yaklaşımlarını IT operasyonlarına uygulayan bir disiplindir. Google'ın VP of Engineering'i Ben Treynor Sloss tarafından kurulan bu yaklaşım, "bir yazılım mühendisine operasyon sorunlarını çözmesini söylediğinizde ne olur?" sorusunun yanıtıdır.
Geleneksel operasyon ekipleri, sistemlerin çalışır durumda kalmasını sağlamak için manuel süreçlere ve reaktif müdahalelere dayanıyordu. SRE ise bu sorunları otomasyon, ölçüm ve mühendislik prensipleri ile çözmeyi hedefler. Bir SRE ekibi, zamanının en az yüzde ellisini yazılım geliştirmeye ayırır; kalan zaman operasyonel görevlere ayrılır.
2026 yılında SRE, sadece büyük teknoloji şirketlerinin değil, her ölçekteki organizasyonun benimsediği bir yaklaşım haline gelmiştir. Dijital hizmetlerin kesintisiz çalışması iş sürekliliği açısından kritik olduğundan, güvenilirliği sistematik olarak yönetmek artık bir tercih değil zorunluluktur.
Google'ın SRE Prensipleri
Google, SRE yaklaşımının temelini oluşturan bir dizi prensip belirlemiştir. Bu prensipler, güvenilir sistemler inşa etmek isteyen her organizasyon için yol göstericidir.
Risk Kabul Edilebilir
Yüzde yüz kullanılabilirlik hedefi, hem teknik olarak neredeyse imkansızdır hem de ekonomik olarak anlamlı değildir. SRE, belirli bir düzeyde başarısızlığın kabul edilebilir olduğunu savunur. Önemli olan, bu başarısızlık düzeyinin bilinçli olarak belirlenmesi ve yönetilmesidir.
Toil Azaltılmalı
Toil (angarya iş), tekrarlayan, manuel, otomatize edilebilir, taktik nitelikli, kalıcı değer üretmeyen ve sistemin büyümesiyle orantılı olarak artan operasyonel görevlerdir. SRE ekipleri, toil'i sürekli olarak tespit edip otomatize ederek ortadan kaldırmayı hedefler.
Monitoring Her Şeydir
Gözlemlenemeyen bir sistem güvenilir sayılamaz. SRE, kapsamlı monitoring, logging ve tracing altyapısını zorunlu kılar. Sistemin durumunu gerçek zamanlı olarak anlamak, proaktif müdahale için temel oluşturur.
Otomasyon Birinci Önceliktir
İnsanlar hata yapar ve tutarsızdır. SRE, mümkün olan her sürecin otomatize edilmesini savunur. Otomasyon hem hızı artırır hem de insan kaynaklı hataları azaltır.
Değişiklik Yönetimi
Sistem arızalarının büyük çoğunluğu değişikliklerden kaynaklanır. SRE, değişiklik yönetimini sıkı kontroller altına alır. Kademeli yayılım (progressive rollout), canary deployment ve otomatik rollback mekanizmaları, değişiklik riskini minimize eder.
SLI, SLO ve SLA Kavramları
SRE'nin en temel kavramları, hizmet güvenilirliğini ölçmek ve yönetmek için kullanılan üç metrik kategorisidir.
SLI (Service Level Indicator)
SLI, bir hizmetin performansını ölçen spesifik metriklerdir. İyi bir SLI, kullanıcı deneyimini doğrudan yansıtmalıdır. Yaygın SLI örnekleri şunlardır:
- Kullanılabilirlik (Availability): Başarılı isteklerin toplam isteklere oranı
- Gecikme (Latency): İsteklerin yanıt süresi (genellikle p50, p95, p99 percentile'ları)
- Hata Oranı (Error Rate): Hata ile sonuçlanan isteklerin oranı
- Verimlilik (Throughput): Birim zamanda işlenen istek sayısı
- Doğruluk (Correctness): Doğru sonuç döndüren isteklerin oranı
SLO (Service Level Objective)
SLO, bir SLI için belirlenen hedef değerdir. SLO'lar, ekibin güvenilirlik hedefini somutlaştırır ve karar alma süreçlerine yön verir. SLO örnekleri:
- Kullanılabilirlik SLO: Aylık kullanılabilirlik oranı en az yüzde 99.9 olmalıdır
- Gecikme SLO: İsteklerin yüzde 99'u 200 milisaniyenin altında yanıtlanmalıdır
- Hata Oranı SLO: Saatlik hata oranı yüzde 0.1'in altında kalmalıdır
SLA (Service Level Agreement)
SLA, müşterilerle yapılan ve SLO'ların karşılanamaması durumunda uygulanacak yaptırımları içeren resmi anlaşmadır. SLA'lar genellikle SLO'lardan daha gevşek hedefler içerir çünkü ihlal durumunda finansal veya hukuki sonuçlar doğurur.
SLI, SLO ve SLA İlişkisi
| Kavram | Tanım | Örnek | Kim Belirler? |
|---|---|---|---|
| SLI | Ölçülen metrik | Başarılı HTTP yanıt oranı | Mühendislik ekibi |
| SLO | Hedef değer | %99.9 kullanılabilirlik | Mühendislik + Ürün ekibi |
| SLA | Müşteri taahhüdü | %99.5 (ihlalde %10 kredi) | İş birimi + Hukuk |
Error Budget (Hata Bütçesi)
Error budget, SRE'nin en yenilikçi kavramlarından biridir. Bir hizmetin SLO'suna göre ne kadar hataya "hakkı" olduğunu belirler. Örneğin, aylık yüzde 99.9 kullanılabilirlik SLO'su olan bir hizmet, ayda yaklaşık 43 dakika kesintiye izin verir. Bu 43 dakika, o hizmetin error budget'ıdır.
Error Budget Nasıl Kullanılır?
Error budget, güvenilirlik ile yenilik arasındaki dengeyi yönetmek için güçlü bir araçtır:
- Bütçe yeterli olduğunda: Ekip yeni özellikler geliştirmeye ve riskli değişiklikler yapmaya devam edebilir
- Bütçe azaldığında: Ekip daha temkinli olmalı, değişiklik hızını yavaşlatmalıdır
- Bütçe tükendiğinde: Yeni özellik geliştirme durdurulur ve tüm çaba güvenilirliği artırmaya yönlendirilir
Error Budget Politikası
Etkili bir error budget politikası aşağıdaki unsurları içermelidir:
- Error budget tükendiğinde hangi aksiyonların alınacağı (feature freeze, code freeze)
- Error budget'ın ne zaman sıfırlanacağı (aylık, çeyreklik)
- Planlı bakımların error budget'a dahil olup olmayacağı
- Harici bağımlılıklardan kaynaklanan kesintilerin nasıl ele alınacağı
- Error budget ihlallerinin üst yönetime nasıl raporlanacağı
Toil Azaltma
Toil, SRE'nin en büyük düşmanıdır. Google'ın tavsiyesi, bir SRE ekibinin zamanının en fazla yüzde ellisini toil'e harcamasıdır. Kalan yüzde elli, mühendislik çalışmalarına (otomasyon, araç geliştirme, sistem iyileştirme) ayrılmalıdır.
Toil'in Özellikleri
Bir görevin toil sayılması için aşağıdaki özelliklerden birkaçını taşıması gerekir:
- Manuel: İnsan müdahalesi gerektirir
- Tekrarlayan: Düzenli olarak yapılması gerekir
- Otomatize edilebilir: Bir betik veya araçla yapılabilir
- Taktik: Stratejik değil, anlık müdahale gerektirir
- Kalıcı değer üretmeyen: Hizmetin durumunu değiştirmez, sadece mevcut durumu korur
- Doğrusal büyüyen: Hizmet büyüdükçe iş miktarı artar
Toil Azaltma Stratejileri
- Tekrarlayan görevleri tanımlayın ve otomasyon önceliği belirleyin
- Toil'i ölçün (haftalık/aylık toil saatleri takibi)
- Self-service araçlar geliştirin
- Runbook'ları otomatize edin
- Self-healing mekanizmaları oluşturun
Monitoring ve Alerting
Etkili monitoring, SRE'nin temel taşıdır. Doğru yapılandırılmış bir monitoring sistemi, sorunları kullanıcılardan önce tespit etmenizi ve proaktif müdahale etmenizi sağlar.
Monitoring'in Üç Sütunu
- Metrikler (Metrics): Sayısal ölçümler (CPU kullanımı, istek sayısı, hata oranı). Prometheus, Datadog ve Grafana bu alanda öne çıkan araçlardır.
- Loglar (Logs): Olayların detaylı kayıtları. ELK Stack (Elasticsearch, Logstash, Kibana), Loki ve Splunk yaygın log yönetimi araçlarıdır.
- İzler (Traces): Dağıtık sistemlerde bir isteğin tüm servisler arasındaki yolculuğu. Jaeger, Zipkin ve OpenTelemetry tracing çözümleri sunar.
Alerting Best Practice'leri
Alerting, monitoring'in aksiyona dönüşen kısmıdır. Kötü yapılandırılmış alertler, alarm yorgunluğuna (alert fatigue) yol açar ve gerçek sorunların gözden kaçmasına neden olur.
- Semptom bazlı alerting: Altta yatan nedenleri değil, kullanıcıyı etkileyen semptomları alert'e bağlayın
- Aksiyona dönüştürülebilir: Her alert, net bir aksiyon gerektirmelidir
- Önceliklendirilmiş: Kritik, uyarı ve bilgi seviyelerini ayırın
- Gürültü azaltma: Aynı sorundan kaynaklanan birden fazla alert'i gruplandırın
- Düzenli gözden geçirme: Aylık olarak alert'leri gözden geçirin ve gereksiz olanları kaldırın
Incident Management (Olay Yönetimi)
Her ne kadar proaktif önlemler alsak da, arızalar kaçınılmazdır. SRE, arızaları hızlı ve etkili bir şekilde yönetmek için yapılandırılmış bir incident management süreci tanımlar.
Incident Seviyeleri
| Seviye | Tanım | Yanıt Süresi | Örnek |
|---|---|---|---|
| SEV-1 | Kritik, geniş çaplı etki | 5 dakika | Ana hizmet tamamen çalışmıyor |
| SEV-2 | Ciddi, önemli etki | 15 dakika | Performans ciddi düşüş, kısmi kesinti |
| SEV-3 | Orta, sınırlı etki | 1 saat | Bir özellik çalışmıyor ama workaround var |
| SEV-4 | Düşük, minimal etki | 4 saat | Kozmetik sorun, düşük trafikli özellik |
Incident Yönetim Rolleri
Etkili bir incident yönetimi, net rollerin tanımlanmasını gerektirir:
- Incident Commander (IC): Olayın genel koordinasyonunu yönetir, kararları verir
- Operations Lead: Teknik müdahaleyi yönetir
- Communications Lead: Paydaşlara ve müşterilere iletişimi sağlar
- Subject Matter Experts: Sorunun kökenini araştıran uzmanlar
Incident Yaşam Döngüsü
- Tespit: Monitoring sistemi veya kullanıcı bildirimi ile sorun tespit edilir
- Triyaj: Sorunun ciddiyeti ve etkisi değerlendirilir, seviye belirlenir
- Müdahale: Uygun ekipler harekete geçer, ilk müdahale yapılır
- Çözüm: Sorunun kök nedeni bulunur ve düzeltilir
- İyileşme: Sistem normal durumuna döndürülür, veriler doğrulanır
- Postmortem: Olay sonrası analiz yapılır ve öğrenilen dersler belgelenir
Postmortem Kültürü
Postmortem, bir olay sonrasında yapılan detaylı analizdir. SRE'nin en değerli pratiklerinden biri olan postmortem, suçlama değil öğrenme odaklı olmalıdır. Blameless (suçsuz) postmortem kültürü, ekip üyelerinin hatalarını açıkça paylaşmasını ve organizasyonun bu hatalardan öğrenmesini sağlar.
Postmortem Şablonu
Etkili bir postmortem aşağıdaki bölümleri içermelidir:
- Özet: Olayın kısa açıklaması, etki süresi ve kapsamı
- Zaman Çizelgesi: Olayın başlangıcından çözümüne kadar tüm adımların kronolojik sıralaması
- Kök Neden Analizi: Olayın gerçek nedeninin detaylı analizi (5 Neden tekniği kullanılabilir)
- Etki: Kullanıcı etkisi, gelir kaybı, SLO etkisi
- Öğrenilen Dersler: Ne iyi gitti, ne kötü gitti, nereden şanslı çıktık
- Aksiyon Kalemleri: Benzer olayları önlemek için yapılacak somut görevler, sahipleri ve son tarihleri
Kapasite Planlaması
Kapasite planlaması, hizmetin gelecekteki talepleri karşılayabilmesi için gerekli kaynakların önceden belirlenmesi sürecidir. SRE, kapasite planlamasını proaktif bir mühendislik görevi olarak ele alır.
Kapasite Planlaması Adımları
- Mevcut kullanımı ölçün: CPU, bellek, disk, ağ kullanımını sürekli izleyin
- Büyüme trendlerini analiz edin: Geçmiş verilerden büyüme oranını hesaplayın
- Projeksiyon yapın: Mevcut büyüme oranına göre gelecek kaynak ihtiyaçlarını tahmin edin
- Yük testi yapın: Sistemin mevcut kapasitesinin sınırlarını belirleyin
- Tampon hesaplayın: Beklenmedik trafik artışları için yeterli tampon bırakın
- Ölçekleme stratejisi belirleyin: Dikey veya yatay ölçekleme, otomatik ölçekleme kuralları
SRE vs. DevOps
SRE ve DevOps sıklıkla karıştırılan ancak birbirini tamamlayan yaklaşımlardır. DevOps bir kültür ve felsefeyi temsil ederken, SRE bu felsefenin somut bir uygulamasıdır.
| Özellik | SRE | DevOps |
|---|---|---|
| Odak | Güvenilirlik ve performans | Geliştirme ve operasyon işbirliği |
| Köken | Google (2003) | Topluluk hareketi (2008) |
| Yaklaşım | Preskriptif (kuralcı) | Normatif (ilke bazlı) |
| Metrikler | SLI, SLO, Error Budget | DORA metrikleri |
| Ekip Yapısı | Ayrı SRE ekibi | Çapraz fonksiyonel ekipler |
| Otomasyon | Toil azaltma odaklı | CI/CD odaklı |
Pratikte birçok organizasyon, hem DevOps hem de SRE pratiklerini birlikte uygular. DevOps kültürü organizasyonun tamamına yayılırken, SRE pratikleri güvenilirlik gereksinimleri yüksek olan hizmetlere uygulanır.
Organizasyonunuzda SRE Uygulamaya Başlama
SRE'yi organizasyonunuzda uygulamaya başlamak için aşağıdaki adımları izleyebilirsiniz:
Aşama 1: Temelleri Atma
- Kritik hizmetlerinizi belirleyin ve önceliklendirin
- Her hizmet için SLI'ları tanımlayın
- Gerçekçi SLO'lar belirleyin
- Temel monitoring altyapısını kurun
- On-call rotasyonu oluşturun
Aşama 2: Süreçleri Olgunlaştırma
- Error budget politikası oluşturun
- Incident management sürecini tanımlayın
- Postmortem kültürünü yerleştirin
- Toil ölçümüne başlayın
- Runbook'ları oluşturun ve güncel tutun
Aşama 3: Mühendislik Yatırımları
- Toil azaltma projeleri başlatın
- Otomasyon araçları geliştirin
- Chaos engineering pratiklerini benimseyin
- Kapasite planlaması süreçlerini oluşturun
- SRE ekibini büyütün ve uzmanlaştırın
Aşama 4: Sürekli İyileştirme
- SLO'ları düzenli olarak gözden geçirin ve güncelleyin
- Postmortem aksiyonlarının takibini sağlayın
- SRE pratiklerini daha fazla hizmete yayın
- Organizasyonel öğrenmeyi teşvik edin
- Endüstri trendlerini takip edin ve uyum sağlayın
Sonuç
Site Reliability Engineering, modern yazılım organizasyonlarının güvenilir, ölçeklenebilir ve sürdürülebilir sistemler inşa etmesi için vazgeçilmez bir disiplindir. SLI, SLO ve error budget kavramları, güvenilirlik ile yenilik arasındaki dengeyi ölçülebilir ve yönetilebilir hale getirir. Toil azaltma ve otomasyon, ekiplerin stratejik çalışmalara odaklanmasını sağlar.
SRE yolculuğuna başlarken, mükemmeliyetçilik yerine pragmatizmi tercih edin. Küçük adımlarla başlayın, en kritik hizmetlerinize odaklanın ve sürekli iyileştirme kültürünü yerleştirin. Blameless postmortem'ler, organizasyonunuzun hatalardan öğrenmesini ve aynı hataları tekrar etmemesini sağlayacaktır. Güvenilirlik bir hedefe ulaşmak değil, sürekli devam eden bir yolculuktur.