DevOps Danışmanlığı ve Platform Mühendisliği
DevOps; yazılımın geliştirilmesi, test edilmesi ve üretime alınmasının otomasyonla ve ortak sorumlulukla yürütüldüğü çalışma biçimidir. Kapsamı ihtiyaca göre belirliyoruz: kimi zaman tek bir uygulamanın CI/CD (sürekli entegrasyon ve sürekli teslimat) hattı, kimi zaman birden fazla ekibin ortak kullandığı Kubernetes platformu, altyapı otomasyonu ve izleme. Bulutta, kendi veri merkezinizde ya da hibrit ortamlarda çalışıyoruz.
- Ortamlar
- AWS, Azure, Google Cloud, yerel bulut sağlayıcıları, veri merkezi, hibrit
- Platformlar
- Kubernetes (EKS, AKS, GKE), OpenShift, Rancher
- Çalışma modeli
- Proje · sürekli danışmanlık · yönetilen hizmet
- İlk adım
- Ücretsiz ön görüşme ya da ücretsiz değerlendirme
DevOps desteği hangi durumlarda gündeme gelir?
Yazılım ekibi ve sistem sayısı arttıkça teslimat sürecinin de buna göre olgunlaşması gerekir. Hangi noktadan başlanacağını mevcut durumunuza göre birlikte belirleriz.
- Yayınlar elle yapılan adımlara dayanıyor. Yayın sıklığını artırmak ve geri dönüşü öngörülebilir kılmak için adımların otomatikleştirilmesi gerekiyor.
- Ortamlar arasında farklar var. Test ve üretim ortamlarının aynı tanımlardan üretilmesi, beklenmedik farkları azaltır.
- Kubernetes kullanılıyor ve işletim yükü artıyor. Sürüm yükseltmeleri, kapasite planlaması ve standart bir işletim düzeni ihtiyacı doğuyor.
- Altyapı değişikliklerinin kayıt altına alınması gerekiyor. Kimin neyi ne zaman değiştirdiğinin izlenebilmesi hem işletim hem denetim için önemli.
- İzleme ve alarm düzeninin yeniden ele alınması gerekiyor. Sorunları kullanıcılar fark etmeden görebilmek için metrik, log ve alarmların tek bir düzende toplanması.
- Ekipler benzer altyapı işlerini ayrı ayrı yapıyor. Ortak şablonlar ve self-servis ortamlar, tekrarlayan işi ve bekleme sürelerini azaltır.
Çalışmayla ne değişir?
Amaç araç kurmak değil, ekibinizin günlük işinin nasıl yürüdüğünü iyileştirmek. Tablo, sık karşılaştığımız başlangıç noktalarını ve hedeflenen yapıyı özetler.
Çalışma ilkelerimiz
- Altyapı, teslimat hatları (pipeline) ve politikalar kod olarak tanımlanır.
- Değişiklikler gözden geçirilir ve kayıt altında tutulur.
- Platformun kendisi de test edilir ve sürümlenir.
- Başarı, kurulan araç sayısıyla değil teslimat göstergeleriyle ölçülür.
- Mümkün olan yerde taşınabilir ve açık araçlar tercih edilir.
| Başlangıç noktası | Hedeflenen yapı |
|---|---|
| Elle yapılan yayın adımları | Her değişiklikte çalışan, tekrarlanabilir otomatik hat |
| Konsoldan yapılan altyapı değişiklikleri | Sürümlenen ve gözden geçirilen altyapı kodu |
| Ekipten ekibe farklı pipeline'lar | Ortak şablonlar ve önerilen bir yol |
| Talep üzerine açılan ortamlar | Kuralları önceden tanımlı self-servis ortamlar |
| Dağınık loglar ve alarmlar | Tek yerde izleme ve anlamlı alarmlar |
| Kişilere bağlı işletim bilgisi | İşletim kılavuzları (runbook) ve belgelenmiş adımlar |
DevOps ve platform mühendisliğinde neler yapıyoruz?
İhtiyacınıza göre tek bir başlıkla ya da uçtan uca.
Kubernetes platformu
Kurulum, sürüm yükseltme, çoklu küme yönetimi ve kapasite planlaması; EKS, AKS, GKE, OpenShift, Rancher ya da kendi veri merkezinizde.
CI/CD hatları
Derleme, test, güvenlik taraması ve dağıtımı otomatikleştiren, ortak şablonlara dayanan ve ekipler arasında tekrarlanabilir hatlar.
Altyapı kodu (IaC) ve GitOps
Altyapı kaynaklarının Terraform/OpenTofu, sunucu yapılandırmasının Ansible, uygulama dağıtımlarının Argo CD ya da Flux ile Git'ten yönetimi; her değişiklik kayıtlı.
Gözlemlenebilirlik
Metrik, log ve izleri tek yerde toplayan panolar; anlamlı alarmlar ve hizmet düzeyi hedefleri (SLO).
İç geliştirici platformu
Ekiplerin ortam, servis ve pipeline'ı tanımlı kurallar içinde kendisinin açabildiği self-servis yapı.
Konteynerleştirme
Uygulamaların konteynere alınması ve Kubernetes'e geçişi; altyapı ve kod tarafıyla birlikte planlanır.
Platform mühendisliği nedir, ne zaman gerekir?
Platform mühendisliği, DevOps uygulamalarını ekip sayısı arttığında da sürdürülebilir kılmak için ekiplerin ortak kullandığı self-servis bir iç platform kurmaktır. Ekipler altyapıyı yeniden kurmak yerine platformun hazır ve onaylı yollarını kullanır.
Önerilen yol (golden path)
Yeni bir servis için hazır ve onaylı yol: şablon, pipeline, izleme ve güvenlik kontrolleri baştan içinde gelir.
Self-servis
Ekipler ortamı, veritabanını ya da pipeline'ı talep açmadan, tanımlı sınırlar içinde kendileri oluşturur.
Kurallar platformda
Güvenlik, maliyet ve uyum kuralları platformun içine yerleşir; her ekibin ayrı ayrı uygulaması gerekmez.
Ne zaman gerekir?
Birkaç ekip benzer altyapı işlerini ayrı ayrı yapıyorsa platform gerekir; tek ekipte iyi bir CI/CD çoğu zaman yeterlidir.
Önce pilot, sonra yaygınlaştırma.
Değişiklikleri aşamalı ilerletiriz. Her aşamanın çıktısı ve başarı ölçütü işe başlarken tanımlanır; ilerlemeyi siz de aynı ölçütlerle izlersiniz.
Neyi ölçüyoruz?
DORA araştırma programının teslimat performansı için kullandığı beş gösterge. Hangilerinin izleneceğini mevcut verilerinize göre birlikte seçeriz:
- Dağıtım sıklığı
- Değişikliğin üretime ulaşma süresi
- Hataya yol açan değişiklik oranı
- Başarısız dağıtım sonrası toparlanma süresi
- Plansız düzeltme gerektiren dağıtımların oranı
Keşif ve değerlendirme
Mevcut mimariyi, yayın sürecini, ekip yapısını ve riskleri inceleriz.
Çıktı: Bulgular ve hedeflerHedef mimari ve yol haritası
Araç ve platform seçimlerini gerekçeleriyle belirler, işi önceliklendiririz.
Çıktı: Mimari doküman, aşamalı planPilot
Bir uygulama ve bir ekiple uçtan uca kurar, ölçer ve iyileştiririz.
Çıktı: Çalışan pilot ve ilk ölçümlerYaygınlaştırma
Pilotta doğrulanan yapıyı diğer servis ve ekiplere taşırız.
Çıktı: Hatlar ve ortamlarDevir ve işletme
Ekibinizi eğitir, runbook'ları teslim ederiz; isterseniz yönetilen hizmetle birlikte işletiriz.
Çıktı: Dokümantasyon, eğitimli ekipDevOps çalışmasının sonunda elinizde olanlar.
Çıktılar işin kapsamına göre belirlenir; belgelenmiş ve ekibinizin kullanabileceği biçimde, sizin araçlarınızda teslim edilir.
Mimari dokümantasyon
Hedef mimari, karar kayıtları ve gerekçeleri.
Altyapı kodu
Terraform ve Ansible kodu, modüller ve kullanım rehberi.
CI/CD tanımları
Pipeline'lar, şablonlar ve dağıtım stratejileri.
İzleme panoları ve alarmlar
Hazır panolar, alarm kuralları ve SLO tanımları.
Runbook'lar
Olay müdahalesi, yedekleme, geri dönüş ve yükseltme prosedürleri.
Eğitim ve bilgi aktarımı
Ekibinize uygulamalı oturumlar ve kayıtları.
Mevcut yatırımınızla çalışırız.
Önce elinizdeki araçları değerlendiririz; değişikliği yalnız belirgin bir kazanç varsa öneririz.
Konteyner ve orkestrasyon
- Kubernetes
- OpenShift
- Rancher
- Amazon EKS
- Azure AKS
- Google GKE
- Docker
- Helm
CI/CD ve GitOps
- GitLab CI
- GitHub Actions
- Jenkins
- Azure DevOps
- Argo CD
- Flux
Altyapı kodu (IaC)
- Terraform
- OpenTofu
- Ansible
- Packer
Platform mühendisliği
- Backstage
- Crossplane
- HashiCorp Vault
Gözlemlenebilirlik
- Prometheus
- Grafana
- Loki
- OpenTelemetry
- Elastic / OpenSearch
Bulut ve sanallaştırma
- AWS
- Microsoft Azure
- Google Cloud
- Yerel bulut sağlayıcıları
- VMware
- Proxmox
Ekip ölçeğinize göre nereden başlanır?
KOBİ'ler ve küçük ekipler
Çoğu zaman tek bir uygulamanın CI/CD hattı, temel izleme ve yedeklemeyle başlanır; sade ve işletmesi kolay bir yapı hedeflenir.
Büyüyen yazılım ekipleri
Ekip sayısı arttıkça ortak şablonlar, Kubernetes ve self-servis ortamlarla yayın sürecini ölçeklenebilir hale getirmek.
Kurumsal BT ekipleri
Mevcut ekibin yanında belirli bir alanda uzman desteği; modernizasyon ve regülasyon gereksinimlerini gözeten tasarım.
İlk görüşmeyi verimli kılmak için.
Hiçbiri ön koşul değil; elinizde ne varsa ilk görüşmeyi o kadar somut kılar.
Varsa hazırlayabilecekleriniz
- Mevcut mimari şemalar ve ortam listesi
- Yayın sürecinin kısa bir anlatımı ve son dönemde yaşanan kesinti örnekleri
- Ekip yapısı: kim neyden sorumlu
- Regülasyon veya müşteri kaynaklı gereksinimler
DevOps danışmanlığı hakkında
Kaynaklar ve standartlar
- DORA metrikleri rehberi (yeni sekmede açılır)Teslimat performansı göstergeleri
- Kubernetes belgeleri (yeni sekmede açılır)Resmî proje belgeleri
- OpenTofu belgeleri (yeni sekmede açılır)Açık kaynak altyapı kodu aracı
- Argo CD belgeleri (yeni sekmede açılır)GitOps ile sürekli teslimat
- Google SRE: hizmet düzeyi hedefleri (yeni sekmede açılır)SLO kavramı
İhtiyacınızı birlikte netleştirelim.
Ücretsiz ön görüşmede mevcut durumunuzu ve hedeflerinizi ele alıyor; ilk izlenimimizi ve olası sonraki adımları aynı görüşmede paylaşıyoruz.
- Konunuza uygun uzmanlarla teknik bir görüşme
- Durumunuza ilişkin ilk izlenim ve olası yaklaşımlar
- Uygunsa sonraki adım: değerlendirme, proje önerisi ya da danışmanlık
- Gerektiğinde görüşme öncesinde gizlilik sözleşmesi
- Taleplere mesai saatlerinde 4 saat içinde dönüş
DevOps uygulamadan örnekler
Sık kurduğumuz yapıların adım adım nasıl işlediğini temsili senaryolarla gösteriyoruz.
Koddan üretime CI/CD hattı
Bir değişikliğin birleştirme isteğinden üretime kadar otomatik ve kontrollü ilerleyişi. Her adımın bir geçme ölçütü vardır; ölçüt sağlanmazsa hat durur.
Birleştirme isteği
Değişiklik ayrı bir dalda gelir; birleştirme isteği açıldığında hat kendiliğinden başlar.
- $ git push origin feature/odeme-limiti
- Merge request !214 açıldı
- Pipeline #4821 başlatıldı
Derleme ve test
Uygulama konteyner imajı olarak derlenir; birim ve entegrasyon testleri çalışır.
- $ docker build -t registry.ornek.local/odeme-api:1.9.0 .
- => naming to registry.ornek.local/odeme-api:1.9.0
- $ pytest -q
- ✓ 214 passed in 38.2s
Güvenlik taraması
İmaj bilinen açıklara karşı taranır; yüksek ya da kritik bulgu varsa hat durur.
- $ trivy image --severity HIGH,CRITICAL --exit-code 1 odeme-api:1.9.0
- Total: 0 (HIGH: 0, CRITICAL: 0)
- ✓ kalite kapısı geçildi
Test ortamına dağıtım
Yeni sürüm etiketi yapılandırma deposuna yazılır; Argo CD test ortamını bu tanıma eşitler.
- $ argocd app sync odeme-api-staging
- Sync Status: Synced
- ✓ Health Status: Healthy
Kademeli üretim yayını
Onaydan sonra yeni sürüm önce trafiğin küçük bir bölümüne açılır; metrikler hedefteyse oran artırılır.
- $ kubectl argo rollouts get rollout odeme-api
- Step: 1/3 SetWeight: 10
- $ kubectl argo rollouts promote odeme-api
- ✓ SetWeight: 100 Status: Healthy
İzleme
Hata oranı ve yanıt süresi panolarda izlenir; eşik aşılırsa alarm üretilir ve önceki sürüme dönülebilir.
- PromQL: hata oranı (5 dk)
- → 0.0021 (eşik 0.01)
- ✓ hizmet düzeyi hedefi içinde
- GitLab CI
- Docker
- Trivy
- Argo CD
- Argo Rollouts
- Prometheus
Terraform ve Ansible ile ortam kurulumu
Yeni bir ortamın kodla tanımlanması, gözden geçirilmesi ve kurulması. Terraform altyapı kaynaklarını, Ansible sunucuların iç yapılandırmasını yönetir.
Tanım
Ağ, sanal makineler ve yük dengeleyici Terraform modülleriyle tanımlanır; ortam farkları değişken dosyalarında tutulur.
- $ terraform fmt -check && terraform validate
- ✓ Success! The configuration is valid.
Plan
Hat, yapılacak değişikliği bir plan olarak çıkarır ve birleştirme isteğine ekler.
- $ terraform plan -out=tfplan
- Plan: 12 to add, 0 to change, 0 to destroy.
Gözden geçirme
Plan bir ekip üyesi tarafından incelenip onaylanır; onay kayıt altında kalır.
- Merge request !87 · 1 onay
- ✓ inceleme tamamlandı
Uygulama
Onaylanan plan aynen uygulanır; durum dosyası kilitli olarak uzak depoda tutulur.
- $ terraform apply tfplan
- ✓ Apply complete! Resources: 12 added, 0 changed, 0 destroyed.
Sunucu yapılandırması
İşletim sistemi ayarları, paketler ve servisler Ansible ile bütün sunucularda aynı biçimde kurulur.
- $ ansible-playbook -i inventories/prod site.yml
- web-01 : ok=38 changed=6 unreachable=0 failed=0
- web-02 : ok=38 changed=6 unreachable=0 failed=0
Sapma kontrolü
Planlı bir iş, elle yapılmış değişiklikleri düzenli olarak kodla karşılaştırır.
- $ terraform plan -detailed-exitcode
- ✓ No changes. Your infrastructure matches the configuration.
- Terraform / OpenTofu
- Ansible
- GitLab CI
GitOps ile Kubernetes dağıtımı
Uygulamanın kümede nasıl çalışacağı Git'te tanımlıdır; Argo CD kümeyi bu tanıma eşitler. Geri dönüş, Git'teki değişikliği geri almaktır.
İstenen durum Git'te
Sürüm, kopya sayısı ve ayarlar yapılandırma deposunda tanımlıdır.
- # values-prod.yaml
- image.tag: 1.9.0
- replicaCount: 3
Fark tespiti
Argo CD kümedeki durumu depodaki tanımla sürekli karşılaştırır ve farkı gösterir.
- $ argocd app get odeme-api-prod
- ! Sync Status: OutOfSync from main (a41c9e2)
Senkronizasyon
Onaylı değişiklik kümeye uygulanır; Kubernetes eski kopyaları sırayla yenileriyle değiştirir.
- $ argocd app sync odeme-api-prod
- deployment.apps/odeme-api configured
- ✓ Synced · Healthy
Geri dönüş
Sorun görülürse değişiklik Git'te geri alınır ve önceki tanım yeniden uygulanır. Veriler bundan etkilenmez; onlar için ayrı yedekleme planı vardır.
- $ git revert a41c9e2 && git push
- ✓ Synced to main (7be2d10)
Kayıt
Her değişiklik kimin, ne zaman ve neden yaptığıyla Git geçmişinde kalır.
- $ git log --oneline -2
- 7be2d10 Revert "odeme-api 1.9.0"
- a41c9e2 odeme-api 1.9.0
- Argo CD
- Helm
- Kubernetes
- Git
İzleme, hizmet düzeyi hedefi ve alarm
Alarm, sunucu metriklerinden değil kullanıcının gördüğü hizmet kalitesinden üretilir. Nöbetçi, yalnız gerçekten müdahale gerektiren durumda bilgilendirilir.
Veri toplama
Uygulama metrikleri, logları ve istek izleri OpenTelemetry ile standart biçimde toplanır.
- $ kubectl get pods -n observability
- otel-collector-6d9f 1/1 Running
- prometheus-0 2/2 Running
Hizmet düzeyi hedefi
Kullanıcının gördüğü başarı oranı için hedef belirlenir; örneğin 30 günde %99,9 başarılı istek.
- SLO: başarılı istek ≥ %99,9 / 30 gün
- hata bütçesi: 43 dk 12 sn
Alarm
Hata bütçesi hızla tükenmeye başlarsa nöbetçi bilgilendirilir; kısa dalgalanmalar alarm üretmez.
- ! ALERT ErrorBudgetBurn severity=page
- tükenme hızı 14.4x (1 sa) · 14.4x (5 dk)
- → nöbetçi bilgilendirildi
Teşhis
Pano, loglar ve istek izleri aynı zaman aralığında açılır; işletim kılavuzu (runbook) adımları izlenir.
- {app="odeme-api"} |= "timeout"
- 12:04:31 upstream timeout: banka-servisi 3000ms
Olay sonrası değerlendirme
Kök neden ve kalıcı iyileştirmeler yazılı olarak paylaşılır; alarm ve panolar gerekiyorsa güncellenir.
- Olay #23 · süre 18 dk
- ✓ aksiyon: zaman aşımı ve yeniden deneme ayarı güncellendi
- OpenTelemetry
- Prometheus
- Alertmanager
- Grafana
- Loki