irdaweb Bilgi Teknolojileri
Telefon numaramız +90 541 209 02 05
E-posta adresimiz [email protected]
Konu 04 · DevOps & Otomasyon

Sürüm hızı ve güveni aynı anda büyütelim.

DevOps bir araç seti değil, kodun bilgisayardan üretime nasıl ulaştığını şekillendiren bir kültür. Otomatik test ve dağıtım hattından kod olarak altyapıya, üretimde olanı görmenizi sağlayan observability'den ekibin gerçek hızını ölçen DORA metriklerine — bu sayfa, hız ile güvenin birlikte nasıl büyütüldüğünü sadeleştirmek için hazırlandı.

01 — Hat

Commit'ten üretime kadar tek bir hat.

Bir geliştirici dalı (branch) ana çizgiye birleştirdiğinde, kodun üretime ulaşana kadar geçtiği her duraktan oluşan bu hat ne kadar otomatik, hızlı ve güvenilirse ekibin gerçek hızı da o kadar yüksek olur. Sürüm hattının üç aşamasını ayırmak — sık karıştırılan iki "CD" dahil — kurulumu netleştirir.

Aşama · 01 CI

Continuous Integration

Her commit otomatik olarak derlenir; birim ve entegrasyon testleri, statik analiz ve güvenlik taraması koşar. Amaç, ana dalın her an "yeşil" kalması — bir sonraki adıma sağlam bir taban hazırlanmasıdır.

Aşama · 02 Delivery

Continuous Delivery

Yeşil her build, üretime gidebilir kalitede bir paket olarak hazırlanır ve stage ortamında doğrulanır. Üretime geçiş için elle bir onay bekler. Sürümün ne zaman çıkacağı hâlâ insan kararıdır.

Aşama · 03 Deployment

Continuous Deployment

Onay adımı da otomasyona devredilmiştir: testten geçen her build doğrudan üretime gider. Geri alma kolay, dağıtım küçük olmalıdır; "büyük sürüm" diye bir konu artık masada değildir.

İki tamamlayıcı pratik. Risk büyüdükçe sürüm kademeli ilerlemeli: canary dağıtım önce trafiğin küçük bir yüzdesini yeni sürüme yönlendirir, metrikler iyi görünürse oran büyür. Blue/green ise iki paralel ortam tutar; yeni sürüm hazırsa trafiği saniyeler içinde yeni ortama çevirirsiniz, sorun çıkarsa aynı hızda geri alırsınız.
02 — Kod olarak altyapı

Sunucu odası, depoya taşınsın.

Konsoldan tıklayarak kurulan altyapı kimsenin tam olarak hatırlamadığı bir geçmişe dönüşür — yedek bir bölgeyi acilen ayağa kaldırmak gerektiğinde bu boşluk maliyetli olur. IaC, sunucu, ağ ve servis yapılandırmasını sürüm kontrolüne alır. GitOps ise bir adım daha ileri gider: deponun durumu üretimin durumudur; arada el ile yapılan değişiklik sürüklenme olarak tespit edilir, ya geri alınır ya da depoya yazılır.

Doğru ayrım: IaC nasıl tanımlandığı (kod), GitOps nereden uygulandığı (Git, çekme akışı) konusudur. İkisi birlikte çalışır.

terraform plan
# depo, üretimin tek doğru tanımıdır

resource "aws_db_instance" "primary" {
  instance_class      = "db.r6g.large"
  allocated_storage   = 200
  backup_retention    = 14
  deletion_protection = true
}

# plan, gerçek ile depo arasındaki farkı gösterir

Plan: 1 to add, 2 to change, 0 to destroy

# GitOps döngüsü
  push  →  PR  →  review  →  merge
                                ↓
                          cluster otomatik senkronize olurdrift varsa uyarı / geri alma
IaC
Bildirimsel olmalı, betik değil
"Şuna benziyor olsun" der, "şunu yap, sonra şunu yap" demez. Terraform, OpenTofu ve Pulumi bu yaklaşımı uygular; aynı kod tekrar koşturulduğunda yeni bir kopya değil aynı sonuç çıkar — bu özelliğe idempotency denir.
GitOps
Çekme modeli güvenliği artırır
CI/CD'nin "itme" yaklaşımında dağıtım, üretime giriş izni olan bir hesap ister. GitOps'ta cluster içindeki bir ajan depoyu izler ve değişikliği çeker; üretime giden tek yön içeriden dışarıya kalır.
Drift
Sürüklenme görünür olmalı
Konsoldan yapılan elle bir değişiklik, depo ile üretimi ayırır. İyi bir GitOps kurulumu bu farkı otomatik fark eder; bir alarm üretir, kararı ekibe bırakır: depoya yaz ya da geri al.
03 — Üretimde olanı görmek

Observability ve hata bütçesi.

Monitoring "önceden bildiğim soruları sormak", observability ise "yeni bir sorun çıktığında onu sorabilecek veriyi elimde bulundurmak"tır. Üç sinyalin bir arada yorumlanması bu farkı yaratır.

Sinyaller toplandıktan sonra SLO ile bir vaat tanımlanır. Hata bütçesi, ekibe ne kadar risk alabileceğini söyler; tükendiğinde dağıtım yavaşlatılır, kazanıldığında yeni özelliklere alan açılır. Sinyal toplama ve burn-rate alarm tasarımı için Observability & Loglama.

Metrics

Sayısal, ucuz, hızlı

Zaman serisinde toplanan sayılar — istek oranı, gecikme, hata yüzdesi. Uyarı kurmak ve trend izlemek için en uygun sinyal; "neden" sorusunu yalnız başına yanıtlayamaz.

Logs

Olayların metin kaydı

Bir isteğin neden başarısız olduğunu metin olarak anlatır. Yapılandırılmış (JSON) loglar arama ve filtrelemeyi sadeleştirir; hacmi büyüdüğü için saklama politikası gerektirir.

Traces

Bir isteğin tam hikâyesi

Bir kullanıcı isteğinin servisler arasındaki yolculuğunu adım adım gösterir. Mikroservislerde "gecikme nereden geliyor?" sorusunu yanıtlayan tek sinyaldir; OpenTelemetry ortak standarttır.

SLO & hata bütçesi
# bir vaat — ve bütçesi

SLI    = başarılı istek / toplam istek
SLO    = %99.9 (30 günlük pencere)
hata bütçesi = %0.1  ≈  43 dakika / 30 gün

# bütçe nasıl harcanır
   bütçe sağlamsa  →  sürüm hızı serbest, deney yapılabilir
   bütçe yarıladı  →  yeni özelliklere yavaşla
   bütçe bitti     →  freeze — yalnızca güvenilirlik işi
04 — DORA metrikleri

Ekibin gerçek hızını dört sayı söyler.

Google'ın yıllarca süren DORA araştırması, yüksek performanslı ekipleri ayırt eden dört metrik tanımladı. Hız (deployment frequency, lead time) ve istikrar (change failure rate, MTTR) ikilisini birlikte okumak gerek; biri yükselirken diğeri çökerse iyileşme değil, başka bir yere ödenmiş bir maliyet vardır.

Deployment frequency
Hız
Günde birden fazla
Üretime sürüm çıkma sıklığı. Yüksek olması yalnız başına iyi değildir; düşük change failure rate ile birlikte anlamlıdır. Küçük ve sık sürüm, risk yönetiminin en pratik yoludur.
Lead time for changes
Hız
Saatler içinde
Bir commit'in üretime ulaşması ne kadar sürüyor? Otomasyon, küçük PR ve hızlı code review burada belirleyicidir. Bekleme süreleri — onay, build kuyruğu — genelde en uzun pay.
Change failure rate
İstikrar
%5'in altında
Üretime giden değişikliklerin ne kadarı sorun çıkardı? Testin kalitesini ve sürüm büyüklüğünü ölçer. Büyük sürümler daha fazla kırar — bu metrik düşmeyince hız artırmak ek borç biriktirir.
MTTR / kurtarma süresi
İstikrar
Bir saatin altında
Bir olay başladığında üretim ne kadar hızlı normale döner? Geri alma kolaylığı, oncall vardiyası ve runbook kalitesi belirler. Sorunsuz sistem değil, hızlı toparlanan sistem hedeftir.
Beşinci metrik: operasyonel güvenilirlik. DORA'nın son raporları dörtlüye bir beşinciyi ekledi: SLO'lara uyum oranı. Yüksek sürüm hızı ile yüksek istikrar bir arada anlamlı; tek başına hız, müşterinin değil tabloların hoşuna giden bir rakam olabilir.
05 — Sık karıştırılanlar

Benzer görünen ama ayrı işler yapan kavramlar.

Delivery vs. Deployment

Her ikisi de "CD" kısaltmasıyla yazılır ama farklı anlama gelir. Continuous Delivery her yeşil build'i üretime hazır tutar; çıkış için bir onay bekler. Continuous Deployment bu onayı da kaldırır — testten geçen her şey otomatik üretime gider. Hangisinde olduğunuzu netleştirin; karışıklık genelde "otomatik dağıtım" tartışmasının kaynağıdır.

Monitoring vs. Observability

Monitoring önceden bildiğiniz soruları sorar: CPU yüksek mi, hata oranı arttı mı? Observability daha önce karşılaşmadığınız bir sorunu, sistemden çekebileceğiniz veriyle çözebilme yetisidir. İkincisinin temeli yapılandırılmış log, yüksek kardinaliteli metric ve dağıtık trace'tir; biri olmadan diğeri eksik kalır.

SLI vs. SLO & SLA

SLI ölçtüğünüz şeydir (başarılı istek oranı, p99 gecikme). SLO hedefiniz ("%99.9"). SLA ise müşteriye verilen sözleşmesel taahhüt — ihlal edildiğinde tazminat doğurur. SLO içeride sıkı tutulur, SLA dışarıda daha gevşek anlatılır; arada bir tampon bırakmak sağlıklıdır.

Canary vs. Blue/Green

Canary dağıtım, yeni sürümü önce trafiğin küçük bir yüzdesine açar; metrikler iyiyse oran kademeli büyür — risk küçük adımlara bölünür. Blue/Green iki paralel ortam tutar, yeni sürüm hazırsa trafik bir anda değişir; geri alma da bir o kadar hızlıdır. Stateful sistemlerde blue/green veri tabanı senkronizasyonu nedeniyle daha pahalıdır.

IaC vs. GitOps

IaC altyapının nasıl tanımlandığı (Terraform/OpenTofu/Pulumi gibi kod) konusudur. GitOps bu kodun nereden uygulandığı (Git deposundan, çekme modeliyle) konusudur. IaC olmadan GitOps olmaz; GitOps olmadan IaC manuel apply'larla yine de kullanılabilir.

Birinci el kaynaklar

Sürüm hattı, observability ve DORA metrikleri üzerine temel kuruluşların yayınları.

Sıradaki adım

Sürüm hattınıza birlikte bakalım.

Mevcut CI/CD kurulumunuzu, altyapı kodu kapsamınızı ve observability sinyallerinizi masaya yatıralım — hız ile güveni aynı anda büyüten bir kurulumu birlikte planlayalım.