Mühendislik

Site Reliability Engineering (SRE) Kariyer Rehberi: Güvenilirlik Mühendisi Olma Yolu

CVANALIZ Editör Ekibi 7 dk okuma

Uzman incelemesi: Can Demir

Site Reliability Engineer nedir konulu blog yazısının kapak görseli
Fotoğraf: John Guccione www.advergroup.com / Pexels

Site reliability engineering (SRE) nedir?

Pratikte, SRE, en basit tanımıyla bir yazılım mühendisliği yaklaşımının operasyonel problemlere uygulanmasıdır. Google tarafından popüler hale getirilen bu disiplin, sistemlerin yüksek erişilebilirliğini, performansını ve ölçeklenebilirliğini sağlamayı amaçlar. Geleneksel sistem yönetimi (SysAdmin) ile yazılım geliştirme arasındaki uçurumu kapatan SRE, "operasyonel işleri kodla çözme" felsefesini benimser.

Somut olarak, bir SRE mühendisi, sistemin sadece çalışmasını sağlamaz; aynı zamanda sistemin neden çöktüğünü analiz eder. Hata bütçelerini (Error Budgets) yönetir ve manuel müdahale gerektiren tekrarlayan işleri (Toil) otomatize eder. Bir noktada, bu rol, hem derinlemesine sistem bilgisi hem de güçlü bir kodlama yeteneği gerektirir.

SRE ve devOps arasındaki farklar

SRE ve DevOps terimleri sıkça birbirinin yerine kullanılır ancak aralarında temel bir ayrım vardır. Aslına bakılırsa, devOps, bir kültür ve metodolojidir; geliştirme (Dev) ve operasyon (Ops) ekipleri arasındaki duvarları yıkmayı hedefler. SRE ise bu kültürel hedeflerin nasıl hayata geçirileceğine dair somut bir uygulama yöntemidir.

DevOps "yazılımı daha çabuk ve güvenli dağıtın" derken, SRE "yazılımın dağıtımı sırasında güvenilirliği nasıl ölçeriz ve sürdürülebilir kılarız" sorusuna odaklanır. SRE, DevOps'un pratik bir implementasyonu olarak görülebilir.

Genelde, site reliability mühendisi olmak için temel teknik beceriler

SRE olmak, çok yönlü bir yetkinlik seti geliştirmeyi gerektirir. Şöyle ki, sadece bir araç öğrenmek yeterli değildir; sistemlerin nasıl çalıştığına dair temel prensipleri kavramak gerekir.

1. Programlama ve betikleme dilleri

SRE'lerin en hatırı sayılır silahı otomasyondur. Manuel işleri ortadan kaldırmak için güçlü bir programlama bilgisine ihtiyaç vardır.

  • Python: Genel amaçlı kullanım, otomasyon betikleri ve veri analizi için endüstri standardıdır.
  • Go (Golang): Yüksek performanslı sistem araçları ve bulut yerel (cloud-native) uygulamalar geliştirmek için tercih edilir.
  • Açıkçası, bash/Shell: Linux ortamında süratli müdahaleler ve basit otomasyonlar için olmazsa olmazdır.

2. İşletim sistemleri ve linux iç yapısı

Pratikte, sRE'lerin çoğu zaman sistemin en derin katmanlarına inmesi şarttır. Linux çekirdeği (Kernel), süreç yönetimi (Process Management), bellek yönetimi ve dosya sistemleri hakkında derin bilgi sahibi olmalısınız.

SSH, systemd, journalctl gibi araçları etkin kullanabilmeli; CPU kullanımı. I/O bekleme süreleri ve ağ gecikmeleri gibi metrikleri analiz edebilmelisiniz.

3. Konteynerizasyon ve Orkestrasyon

Modern altyapılar artık sanal makinelerden ziyade konteynerler üzerine kuruludur. Bundan ötürü aşağıdaki teknolojiler önemlidir:

  • Açıkçası, docker: Uygulamaların izole edilmiş ortamlarda paketlenmesi ve taşınması.
  • Kubernetes (K8s): Konteynerlerin yönetimi, ölçeklendirilmesi ve kendi kendini iyileştirme (self-healing) mekanizmalarının kurulması.

4. Bulut platformları (Cloud computing)

SRE'lerin çoğu AWS, Google Cloud Platform (GCP) veya Microsoft Azure üzerinde çalışır. Bulut servislerinin (Computing, Storage, Networking) nasıl yapılandırılacağını ve maliyet optimizasyonunun nasıl yapılacağını bilmek iyi olur.

SRE'nin Temel Kavramları ve Metrikleri

Genelde, bir SRE mühendisi, sistem başarısını hislerle değil, verilerle ölçer. Bu noktada karşımıza çıkan en önemli kavramlar şunlardır:

SLI, SLO ve SLA

Sistem güvenilirliğini tanımlamak için kullanılan bu üç terim, SRE'nin temel taşıdır:

  • SLI (Service Level Indicator): Hizmet Seviyesi Göstergesi. Mesela, "başarılı tamamlanan HTTP isteklerinin oranı".
  • SLO (Service Level Objective): Hizmet Seviyesi Hedefi. Söz gelimi, "Ay süresince isteklerin %99.9'u 200ms altında yanıt vermelidir".
  • SLA (Service Level Agreement): Hizmet Seviyesi Sözleşmesi. Bir noktada, SLO karşılanmadığında müşteriye verilen taahhüt (ekseriyetle finansal iadeler içerir).

Hata bütçesi (Error budget)

SRE felsefesinde %100 güvenilirlik imkansız ve gereksizdir. Hata bütçesi, SLO'nun izin verdiği "hata payı"dır. Net konuşmak gerekirse, eğer hata bütçesi dolmuşsa, taze özellik geliştirmeleri durdurulur ve tüm odak sistemin kararlılığını artırmaya yönlendirilir.

Toil (Yorucu iş) yönetimi

Kısaca, toil, manuel olarak yapılan, tekrarlayan ve uzun vadede değer katmayan operasyonel işlerdir. Bir SRE'nin temel amacı, zamanının en az %50'sini bu işleri otomatize eden mühendislik projelerine ayırmaktır.

SRE yol haritası: adım adım gelişim planı

Sıfırdan veya farklı bir rolden (Backend veya SysAdmin) SRE'liğe geçmek istiyorsanız şu yolu izleyebilirsiniz:

Aşama 1: temelleri sağlamlaştırın

Önce Linux dünyasına hakim olun. Kendi sunucunuzu kurun, web sunucuları (Nginx, Apache) yapılandırın ve ağ protokollerini (TCP/IP, DNS, HTTP/S) öğrenin.

Aşama 2: kodlama yeteneğinizi geliştirin

Sadece betik yazmakla yetinmeyin. Genelde, veri yapıları, algoritmalar ve nesne yönelimli programlama prensiplerini öğrenin. Karmaşık bir sistemi kodla nasıl yönetebileceğinizi deneyimleyin.

Aşama 3: altyapıyı kodla yönetin (IaC)

Manuel kurulumlar yerine Terraform, Ansible veya Pulumi gibi araçlarla altyapıyı kod olarak tanımlamayı (Infrastructure as Code) öğrenin. Bu, sistemlerin tekrarlanabilir ve hatasız kurulmasını sunar.

Aşama 4: izleme ve gözlemlenebilirlik (Observability)

Bir sistemin ne yaptığını görmeden onu yönetemezsiniz. Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana) gibi araçlarla metrik toplama, log yönetimi ve alarm sistemleri kurun.

SRE kariyeri için özgeçmiş hazırlama stratejileri

SRE rolleri hem geliştirme hem de operasyon yetkinliği beklediği için. Standart bir yazılımcı veya sistemci özgeçmişi yeterli olmayabilir. Kısaca, işverenler, karmaşık sorunları nasıl çözdüğünüzü ve sistemleri nasıl optimize ettiğinizi görmek ister.

Teknik becerileri gruplandırın

Yetkinliklerinizi rastgele sıralamak yerine kategorize edin. Aslına bakılırsa, mesela; "Programlama: Python, Go", "Orkestrasyon: Kubernetes, Docker", "Bulut: AWS, GCP" şeklinde bölümlendirme yapın. Bu, Cv analiz süreçlerinde hem insan kaynakları uzmanlarının hem de otomatik sistemlerin aradıkları anahtar kelimeleri kolayca bulmasını sunar.

Başarılarınızı verilerle kanıtlayın

"Sistemi hızlandırdım" demek yerine, "Uygulama yanıt sürelerini optimizasyonlar sayesinde %30 oranında düşürdüm" veya "Manuel dağıtım süreçlerini otomatize ederek yayına alma süresini 2 saatten 10 dakikaya indirdim" gibi ifadeler kullanın.

Doğru formatı seçin

SRE gibi teknik rollerde sade, okunabilir ve modern bir yapı tercih edilmelidir. Karmaşık grafiklerden kaçının. Profesyonel bir Cv şablon kullanarak bilgilerinizi hiyerarşik bir düzende sunun. Deneyimlerinizi en yeniden en eskiye doğru sıraladığınız ters kronolojik format en idealidir.

SRE odaklı bir CV nasıl oluşturulur?

Etkili bir Cv oluştur sürecinde şu bölümlere odaklanmalısınız:

  • Genelde, özet Bölümü: SRE felsefesine olan hakimiyetinizi ve uzmanlık alanlarınızı (örn: Kubernetes uzmanı. Cloud Migration deneyimli) belirten 2-3 cümlelik bir giriş.
  • Projeler: Açık kaynak katkılarınız veya kendi başınıza kurduğunuz karmaşık altyapı projeleri (örn: "Kendi Kubernetes kümemi bare-metal üzerinde kurdum").
  • Sertifikalar: CKA (Certified Kubernetes Administrator) veya AWS Solutions Architect gibi sektörde kabul görmüş belgeler.

SRE mülakatlarında karşınıza çıkabilecek konular

SRE mülakatları çoğu zaman üç ana kısımdan oluşur: Kodlama, Sistem Tasarımı ve Linux/Ağ Bilgisi.

Kodlama Soruları

Çoğunlukla algoritma sorularından ziyade, sistemle etkileşime giren problemler sorulur. Örneğin; "Bir log dosyasındaki en çok tekrar eden 10 hata mesajını bulan bir script yazın" gibi gerçek hayat senaryoları karşınıza çıkabilir.

Sistem tasarımı (System design)

Sizden milyonlarca kullanıcıya hizmet verecek ölçeklenebilir bir mimari tasarlamanız istenebilir. Burada şu kavramları tartışmanız beklenir:

  • Yük Dengeleyiciler (Load Balancers)
  • Önbellekleme (Caching - Redis, Memcached)
  • Veritabanı Sharding ve Replikasyon
  • Mesaj Kuyrukları (Kafka, RabbitMQ)

Troubleshooting (Sorun giderme) senaryoları

"Bir servis aniden %500 hata vermeye başladı. İlk bakacağınız 3 yer neresidir?" gibi sorularla analitik düşünme yeteneğiniz ölçülür. Burada adım adım ilerlemek (Metrikler -> Loglar -> Kaynak Kullanımı) en doğru yaklaşımdır.

SRE'lerin Günlük Rutini ve Sorumlulukları

SRE'lerin günü sadece yangın söndürmekle geçmez. İdeal bir SRE takviminde şunlar yer alır:

  • On-Call Nöbetleri: Sistemde bir problem çıktığında müdahale etmek için belirlenen nöbet süreleri.
  • Post-Mortem Analizleri: Bir kesinti yaşandıktan sonra "suçlamadan" (blameless) yapılan kök neden analizleri.
  • Kapasite Planlama: Gelecek dönemdeki trafik artışlarını öngörerek altyapı kaynaklarını planlamak.
  • Şöyle ki, otomasyon Geliştirme: Tekrarlayan işleri kodla çözerek operasyonel yükü azaltmak.

SRE kariyerinde ileri seviye uzmanlaşma alanları

SRE temelini attıktan sonra belirli alanlarda derinleşebilirsiniz:

Performance Engineering

Açıkçası, sistemin darboğazlarını (bottlenecks) bulmak, CPU profilleme yapmak ve uygulama kodundaki performans sorunlarını gidermek üzerine odaklanır.

Platform Engineering

Geliştiricilerin kendi altyapılarını kolayca kurup yönetebilecekleri "Internal Developer Platforms" (IDP) inşa etmeye odaklanır. SRE'nin bir üst aşaması olarak görülebilir.

Chaos Engineering

Sistemlerin dayanıklılığını ölçmek için kasıtlı olarak hatalar üretme pratiğidir (örn. Netflix'in Chaos Monkey aracı). "Sistem çökecek mi?" diye beklemek yerine "Sistemi çökerterek nasıl hayatta kaldığını görmek" prensibine dayanır.

SRE olmak isteyenlere tavsiyeler

Bu yolculuk sabır ve sürekli öğrenme gerektirir. İşte süreci hızlandıracak bazı ipuçları:

Her zaman "Neden?" diye sorun. Bir araç çalışıyorsa, arka planda hangi sistem çağrılarını (syscalls) yaptığını anlamaya çalışın. Kısaca, sadece aracı kullanmayı değil, aracın nasıl çalıştığını bilmek sizi kıdemli bir mühendis yapar.

İşin aslı, hata yapmaktan korkmayın ama aynı hatayı iki kez yapmamak için mutlaka dökümantasyon tutun. Kendi "bilgi bankanızı" oluşturmak, kriz anlarında en ciddi yardımcınız olacaktır.

Açık kaynak dünyasına dahil olun. Kısaca, kubernetes, Prometheus veya Terraform gibi araçların GitHub depolarındaki issue'ları inceleyin ve sınırlı katkılar sağlayın. Bu hem teknik gelişiminizi kazandırır hem de portfolyonuz için harika bir referans olur.

Özet: SRE yolculuğunun anahtarları

İşin aslı, SRE olmak, yazılım geliştirme disiplinini sistem yönetimi tutkusuyla birleştirmektir. Teknik beceriler (Linux. Python, K8s, Cloud) temel oluştururken; SLI/SLO gibi metrik odaklı düşünme biçimi sizi bu rolde başarılı kılar.

Kariyerinizin başında yerinde bir strateji izlemek. Gerçekte, teknik yetkinliklerinizi doğru sergilemek ve sürekli gelişime açık olmak sizi hedefinize ulaştıracaktır. SRE'lik sadece bir unvan değil, sistemlere bakış açısını değiştiren bir mühendislik kültürüdür.

ATS uyumlu CV'ni dakikalar içinde hazırla.

Ücretsiz Başla
İçindekiler