Kitap 05 · Özet sayfa
DevOps ve Bulut
Yazılımı derlemek, test etmek, paketlemek ve canlı ortama göndermek için kullanılan araçlar ve pratikler.
Software Dictionary · softwaredictionary.org/tr/kutuphane/devops/ozet
- 01Ansible
- Ansible, YAML playbook'larını ajan kurmadan SSH üzerinden çalıştırarak sunucuları yapılandıran ve uygulama dağıtan açık kaynaklı bir otomasyon aracıdır.
- Ansible, sunucu yapılandırmasını ve uygulama dağıtımını otomatikleştirir.
- Görevler YAML playbook'larında yazılır ve bir host envanterine karşı çalıştırılır.
- Ajansızdır: SSH ile bağlanır ve host'larda yalnızca Python'a ihtiyaç duyar.
- 02AWSAmazon Web Services
- AWS (Amazon Web Services), Amazon'un bulut platformudur; sunucu, depolama, veritabanı ve çok daha fazlası için kullandıkça ödenen 200'den fazla servis sunar.
- AWS, kullandıkça ödenen 200'den fazla servisi olan Amazon'un bulut platformudur.
- Temel servisler arasında EC2 (sunucular), S3 (depolama), RDS (veritabanları) ve Lambda vardır.
- Bölgeler, dayanıklılık için birkaç erişilebilirlik alanı içerir.
- 03AzureMicrosoft Azure
- Microsoft Azure, sanal makineler, veritabanları ve yapay zekâ modelleri gibi yüzlerce isteğe bağlı servis sunan, Microsoft'un küresel bulut platformudur.
- Azure, 2010'da başlayan Microsoft'un genel bulut platformudur.
- AWS ve Google Cloud ile birlikte en büyük üç buluttan biridir.
- Servisleri sanal makinelerden ve Kubernetes'ten veritabanlarına, fonksiyonlara ve yapay zekâ modellerine uzanır.
- 04Blue-Green Deployment
- Blue-green deployment, iki özdeş canlı ortam kullanan ve tüm trafiği eski sürümden yeni sürüme tek seferde geçiren bir yayın stratejisidir.
- İki özdeş ortam vardır: biri canlı, biri boşta.
- Yeni sürüm, canlıya geçmeden önce boştaki ortama dağıtılır ve test edilir.
- Trafik, genellikle yük dengeleyicide ve kesintisiz olarak tek seferde geçer.
- 05Bulut Bilişim
- Bulut bilişim, sunucu, depolama ve veritabanı gibi bilişim kaynaklarının internet üzerinden, kullandığın kadar öde modeliyle talep üzerine sunulmasıdır.
- Bulut bilişim; sunucuları, depolamayı ve hizmetleri internet üzerinden talep üzerine kiralar.
- Üç ana hizmet modeli IaaS, PaaS ve SaaS'tır.
- Esneklik, kaynakların talebe göre otomatik büyüyüp küçülmesini sağlar.
- 06Canary Deployment
- Canary deployment, yeni bir yazılım sürümünü önce kullanıcıların küçük bir bölümüne sunar, sağlığını kontrol eder ve ardından kademeli olarak herkese yayar.
- Canary, trafiğin küçük bir yüzdesini önce yeni sürüme gönderir.
- Metrikler izlenirken trafik adım adım artırılır.
- Kötü bir sürüm yalnızca birkaç kullanıcıyı etkiler ve hızla geri alınabilir.
- 07CDNİçerik Dağıtım Ağı
- CDN, dünyanın dört bir yanına yayılmış ve web sitesi içeriğinin kopyalarını saklayıp her kullanıcıya en yakın konumdan sunan bir sunucu ağıdır.
- CDN, içeriği her kullanıcıya yakın sunuculardan sunar.
- Origin sunucusundaki dosyaların kopyalarını önbelleğe alarak çalışır.
- CDN'ler gecikmeyi azaltır, origin yükünü düşürür ve trafik artışlarını ile saldırıları karşılamaya yardımcı olur.
- 08Chaos Engineering
- Chaos engineering, bir sisteme sunucu çökertmek gibi kasıtlı arızalar enjekte ederek sistemin beklendiği gibi çalışmaya devam ettiğini doğrulama pratiğidir.
- Chaos engineering, gizli zayıflıkları ortaya çıkarmak için bilerek gerçek arızalar enjekte eder.
- Her deney ölçülebilir bir kararlı durumdan ve net bir hipotezden başlar.
- Deneyler etki alanını küçük tutar ve istenen her an iptal edilebilir.
- 09CI/CDSürekli Entegrasyon / Sürekli Teslimat
- CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- CI, paylaşılan kod tabanına birleştirilen her değişikliği otomatik olarak derler ve test eder.
- CD, kodu her zaman yayına hazır tutar ya da otomatik olarak yayınlar.
- Pipeline'lar, kodun yanında saklanan yapılandırma dosyalarında tanımlanır.
- 10Container Registry
- Container registry, konteyner imajları için bir depolama ve dağıtım hizmetidir; ekipler derlenmiş imajları push eder, onları çalıştıran her sunucuya pull eder.
- Registry, konteyner imajlarını saklar ve onları çalıştıran makinelere sunar.
- İmajlar repository'lerde gruplanır ve etiketlerle sürümlenir.
- Digest, bir imajın tam içeriğini tanımlar ve bir etiket gibi taşınamaz.
- 11Dağıtık İzleme
- Dağıtık izleme, tek bir isteği birçok servis boyunca takip eden; her adımın ne kadar sürdüğünü ve nerede başarısız olduğunu kaydeden bir tekniktir.
- Trace, tek bir isteği servisler arasında uçtan uca takip eder.
- Trace'ler, her biri bir işlemi ölçen ve üst-alt sırasıyla bağlanan span'lerden oluşur.
- Trace ID'si servisler arasında, genellikle traceparent başlığında iletilir.
- 12Değiştirilemez Altyapı
- Değiştirilemez altyapı, sunucuların dağıtımdan sonra hiç değiştirilmediği, her güncellemede yerlerine sıfırdan kurulan yenilerinin geldiği bir yaklaşımdır.
- Sunucular ve konteynerler dağıtıldıktan sonra asla değiştirilmez.
- Her değişiklik yeni bir imaj üretir; eski örnekler yamalanmaz, değiştirilir.
- Aynı test edilmiş imaj, staging ve canlı ortam arasında değişmeden ilerler.
- 13DevOpsGeliştirme ve Operasyon
- DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- DevOps, geliştirme ve operasyonu tek bir ortak sorumlulukta birleştirir.
- Otomasyon merkezi bir yer tutar: CI/CD, kod olarak altyapı ve izleme.
- Küçük ve sık sürümler riski azaltır, geri bildirimi hızlandırır.
- 14DNSAlan Adı Sistemi
- DNS, internetin adlandırma sistemidir; example.com gibi insanın okuyabileceği alan adlarını bilgisayarların kullandığı sayısal IP adreslerine çevirir.
- DNS, alan adlarını IP adreslerine çevirir.
- Resolver'lar yanıtları root, üst düzey alan adı ve yetkili ad sunucularını sorgulayarak bulur.
- Yaygın kayıt türleri A, AAAA, CNAME, MX ve TXT'tir.
- 15Docker
- Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- Docker, bir uygulamayı ve bağımlılıklarını bir konteyner imajında paketler.
- İmajın nasıl oluşturulacağını bir Dockerfile tanımlar.
- İmaj şablondur; konteyner ise onun çalışan bir örneğidir.
- 16Docker Compose
- Docker Compose, web sunucusu ve veritabanı gibi birkaç container'dan oluşan uygulamaları tek bir YAML dosyası ve tek komutla tanımlayıp çalıştıran araçtır.
- Docker Compose, çok container'lı uygulamaları tek bir YAML dosyasından çalıştırır.
- docker compose up her servisi ortak bir ağ üzerinde başlatır.
- Servisler imajları, portları, ortam değişkenlerini, volume'ları ve sağlık kontrollerini tanımlar.
- 17Edge Computing
- Edge computing, gecikmeyi azaltmak için kodu ve veriyi uzak bir merkezi veri merkezi yerine kullanıcıların ya da cihazların yakınında çalıştırıp işlemektir.
- Edge computing, gecikmeyi ve bant genişliği kullanımını azaltmak için kodu kullanıcılara ya da cihazlara yakın çalıştırır.
- Web'de edge fonksiyonları, çoğunlukla CDN ağlarında olmak üzere birçok konumda çalışır.
- IoT'de uç cihazlar veriyi yerelde işler ve buluta yalnızca sonuçları gönderir.
- 18Feature Flag
- Feature flag, koddaki bir özelliği çalışma zamanında açıp kapatan bir anahtardır; ekipler kodu herkese aynı anda yayınlamadan dağıtabilir.
- Feature flag, yeni bir dağıtım yapmadan işlevi çalışma zamanında açıp kapatır.
- Kodu dağıtmayı, bir özelliği kullanıcılara yayınlamaktan ayırır.
- Hedefleme kuralları bir özelliği belirli kullanıcılar, gruplar ya da trafiğin bir yüzdesi için etkinleştirebilir.
- 19GitHub Actions
- GitHub Actions, GitHub'ın yerleşik otomasyon platformudur; depodaki YAML iş akışları push ya da pull request olduğunda test, derleme ve dağıtım çalıştırır.
- GitHub Actions, otomatik iş akışlarını GitHub'ın içinde çalıştırır.
- İş akışları .github/workflows altındaki YAML dosyalarıdır ve olaylarla tetiklenir.
- İşler GitHub'ın ya da sizin barındırdığınız runner'larda adım adım çalışır.
- 20GitOps
- GitOps, sistemin istenen durumunu Git'te tutan ve otomatik bir ajanın canlı sistemi bununla senkronize ettiği bir altyapı ve dağıtım yönetimi yöntemidir.
- Git, sistemin istenen durumu için tek doğru kaynaktır.
- Değişiklikler elle komutlarla değil, commit'ler ve pull request'ler üzerinden yapılır.
- Bir ajan, canlı sistemi repository ile sürekli uzlaştırır.
- 21Google CloudGoogle Cloud Platform
- Google Cloud, Google'ın kendi ürünlerini çalıştıran küresel altyapıda hesaplama, depolama, veri ve yapay zekâ servisleri sunan genel bulut platformudur.
- Google Cloud, çoğu zaman GCP diye anılan Google'ın genel bulut platformudur.
- 2008'de App Engine ile başladı.
- Compute Engine, Cloud Run ve GKE kod çalıştırır; Cloud Storage ve Cloud SQL veri saklar.
- 22Gözlemlenebilirlik
- Gözlemlenebilirlik, çalışan bir yazılım sisteminin içinde olup biteni log, metrik ve trace verilerini toplayıp analiz ederek anlayabilme yeteneğidir.
- Gözlemlenebilirlik, bir sistemin iç durumunu yaydığı verilerden anlamak demektir.
- Log'lar, metrikler ve trace'ler üç ana telemetri türüdür.
- Dağıtık izleme (distributed tracing), tek bir isteği birçok servis boyunca takip eder.
- 23Grafana
- Grafana; birçok veri kaynağındaki metrik, log ve izleri tek yerde canlı grafiklere ve uyarılara dönüştüren panolar kurmaya yarayan açık kaynaklı bir araçtır.
- Grafana, mevcut veri kaynaklarından panolar ve uyarılar kurar.
- Prometheus'a, Loki'ye, Elasticsearch'e, SQL veritabanlarına ve daha fazlasına bağlanır.
- Farklı kaynaklardan gelen paneller tek bir panoda birleştirilebilir.
- 24Helm
- Helm, Kubernetes'in paket yöneticisidir; uygulamanın yapılandırma dosyalarını tek komutla kurulup güncellenebilen ve geri alınabilen bir chart'ta paketler.
- Helm, Kubernetes'in paket yöneticisidir.
- Bir chart, şablonlanmış manifestoları values.yaml'daki varsayılan değerlerle paketler.
- Her kurulum, güncellenip geri alınabilen bir release'tir.
- 25IaaSHizmet Olarak Altyapı
- IaaS (infrastructure as a service), sanal makine, depolama ve ağı isteğe bağlı kiralayıp işletim sistemini ve üstünü kendiniz yönettiğiniz bulut modelidir.
- IaaS, sanal makineleri, depolamayı ve ağları isteğe bağlı kiralar.
- İşletim sistemini, yazılımı, yamaları ve ölçeklemeyi siz yönetirsiniz.
- 2006'da başlayan Amazon EC2 bu modeli tanımladı.
- 26Jenkins
- Jenkins, yazılımı pipeline'larla derleyen, test eden ve dağıtan açık kaynaklı bir otomasyon sunucusudur; en eski ve en yaygın CI/CD araçlarından biridir.
- Jenkins, CI/CD için kendi sunucunuzda çalışan açık kaynaklı bir otomasyon sunucusudur.
- Hudson'dan ayrıldı ve adını 2011'de aldı.
- Pipeline'lar build, test ve deploy aşamalarıyla bir Jenkinsfile içinde tanımlanır.
- 27Kod Olarak Altyapı
- Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.
- IaC, altyapıyı elle konsol tıklamaları yerine kod dosyalarında tanımlar.
- Bildirimsel araçlar istenen durumu gerçeklikle karşılaştırır ve farkı uygular.
- Altyapı değişiklikleri uygulama kodu gibi sürümlenir, gözden geçirilir ve geri alınır.
- 28Konteyner
- Konteyner, bir uygulamayı bağımlılıklarıyla paketleyip ana makinenin paylaşılan işletim sistemi çekirdeği üzerinde çalıştıran hafif, yalıtılmış bir pakettir.
- Konteyner, bir uygulamayı bağımlılıklarıyla paketler; böylece her yerde aynı davranır.
- Sanal makinelerin aksine konteynerler ana makinenin işletim sistemi çekirdeğini paylaşır.
- Linux namespace'leri yalıtımı sağlar, cgroups ise kaynakları sınırlar.
- 29kubectl
- kubectl, Kubernetes'in komut satırı aracıdır: uygulamaları dağıtmak, incelemek ve değiştirmek için bir cluster'ın API sunucusuna istek gönderir.
- kubectl, Kubernetes'in komut satırı aracıdır; her komut API sunucusuna yapılan bir çağrıdır.
- get, describe, logs ve exec çalışan şeyleri incelemeye yarar.
- kubectl apply -f, cluster'ı istenen durumu tarif eden YAML dosyalarına uydurur.
- 30Kubernetes
- Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- Kubernetes, konteynerleri bir makine kümesi üzerinde orkestre eder.
- İstenen durumu YAML ile bildirirsiniz, Kubernetes de onu o şekilde korur.
- Pod'lar, deployment'lar ve service'ler temel yapı taşlarıdır.
- 31Linux
- Linux, çoğu sunucuyu, bulutu, konteyneri ve Android telefonu çalıştıran, genellikle dağıtım olarak paketlenen açık kaynaklı bir işletim sistemi çekirdeğidir.
- Linux açık kaynaklı bir çekirdektir; dağıtımlar tam bir işletim sistemi oluşturmak için araçlar ekler.
- Sunucuların, bulut altyapısının, süper bilgisayarların ve Android aygıtlarının çoğunu çalıştırır.
- Konteynerler, namespace'ler ve cgroups gibi Linux çekirdeği özelliklerine bağlıdır.
- 32Loglama
- Loglama, çalışan bir programdaki hata ve istek gibi olaylar hakkında zaman damgalı mesajlar kaydetme pratiğidir; insanlar bunları sonradan inceleyebilir.
- Loglama, çalışan bir programın zaman damgalı olaylarını sonradan incelemek üzere kaydeder.
- DEBUG, INFO, WARN ve ERROR gibi log seviyeleri önemi belirtir ve hacmi kontrol eder.
- Yapılandırılmış loglama, kayıtları adlandırılmış alanlarla JSON olarak yazar ve bu da sorgulamayı kolaylaştırır.
- 33Metrikler
- Metrikler, bir sistemden zamanla toplanan istek oranı, hata oranı ve CPU kullanımı gibi sayısal ölçümlerdir; panolar, uyarılar ve planlama için kullanılır.
- Metrikler, zaman içinde kaydedilen ve zaman serisi olarak saklanan sayısal ölçümlerdir.
- Yaygın türler counter, gauge ve histogram'dır.
- p95 ve p99 gibi yüzdelikler, ortalamaların gizlediği yavaş istekleri ortaya çıkarır.
- 34Nesne Depolama
- Nesne depolama, veriyi benzersiz anahtarlı ve meta verili bütün nesneler olarak, HTTP üzerinden çok sayıda dosyaya ölçeklenen düz bucket'larda saklar.
- Nesne depolama, veriyi nesneler olarak saklar: bayt ve meta veri, benzersiz bir anahtarla adreslenir.
- Nesneler düz ad alanına sahip bucket'larda yaşar ve HTTP üzerinden erişilir.
- Nesneler yerinde düzenlenmez, bir bütün olarak değiştirilir.
- 35OpenTelemetry
- OpenTelemetry, yazılımdan trace, metrik ve log toplayıp bunları herhangi bir izleme backend'ine göndermek için açık bir standart ve araç takımıdır.
- OpenTelemetry, trace, metrik ve loglar için hiçbir sağlayıcıya bağlı olmayan bir standarttır.
- Kod bir kez enstrümante edilir ve veriler herhangi bir backend'e gidebilir.
- OTLP onun protokolüdür; Collector verileri alır, işler ve iletir.
- 36Ortam Değişkeni
- Ortam değişkeni, programın dışında işletim sistemi ya da çalışma zamanınca ayarlanan, programın davranışını yapılandırmak için okuduğu adlandırılmış değerdir.
- Ortam değişkenleri, kod tarafından değil ortam tarafından sağlanan anahtar-değer ayarlarıdır.
- Aynı kodun her ortamda farklı yapılandırmayla çalışmasını sağlar.
- Alt süreçler, üst süreçlerinin ortam değişkenlerinin bir kopyasını devralır.
- 37Otomatik Ölçekleme
- Otomatik ölçekleme, sunucu ya da konteyner gibi bilişim kaynaklarının talebe göre otomatik eklenip çıkarılmasıdır; performans sabit, maliyet düşük kalır.
- Otomatik ölçekleme, talebe göre kapasiteyi otomatik olarak ekler ya da çıkarır.
- CPU, bellek, istek oranı veya kuyruk uzunluğu gibi metriklerle yönlendirilir.
- Asgari ve azami sınırlar ölçeklemeyi güvenli, maliyetleri öngörülebilir tutar.
- 38PaaSHizmet Olarak Platform
- PaaS (platform as a service), kodunuzu dağıttığınız, altındaki sunucuları, işletim sistemlerini ve ölçeklemeyi sağlayıcının çalıştırdığı bir bulut modelidir.
- PaaS kodunuzu çalıştırır; sunucuları ve işletim sistemini sağlayıcı yönetir.
- Heroku onu popüler yaptı; Vercel, Render ve App Service birer örnektir.
- Platformlar veritabanları, ölçekleme, log'lar, önizlemeler ve geri alma ekler.
- 39Pod
- Pod, Kubernetes'te dağıtılabilen en küçük birimdir: ağ adresini ve depolamayı paylaşan, tek bir node'da birlikte zamanlanan bir ya da daha çok konteynerdir.
- Pod, Kubernetes'in zamanladığı ve yönettiği en küçük birimdir.
- Aynı pod'daki konteynerler bir IP adresini, localhost'u ve birimleri paylaşır.
- Çoğu pod tek konteyner çalıştırır; aynı pod'daki yardımcı konteynerlere sidecar denir.
- 40Postmortem
- Postmortem, bir olaydan sonra yazılan; ne olduğunu, neden olduğunu ve tekrarlanmaması için ekibin neyi değiştireceğini açıklayan yazılı bir incelemedir.
- Postmortem, bir olayı çözüldükten sonra analiz eder ve öğrenilen dersleri kaydeder.
- Zaman çizelgesi, etki, kök nedenler, katkıda bulunan faktörler ve eylem maddelerini içerir.
- Suçlayıcı olmayan postmortem'ler bireylere değil, sistem ve süreç hatalarına odaklanır.
- 41Prometheus
- Prometheus, uygulama ve sunuculardan metrik toplayıp zaman serisi olarak saklayan ve değerler sınırı aşınca uyarı tetikleyen açık kaynaklı izleme sistemidir.
- Prometheus açık kaynaklı bir izleme sistemi ve zaman serisi veritabanıdır.
- Metrikleri genellikle /metrics olan HTTP uç noktalarını tarayarak çeker.
- Her serinin bir adı ve etiketleri vardır; PromQL onları sorgular.
- 42Reverse Proxy
- Reverse proxy, web sunucularının önünde durup istemci isteklerini onlar adına kabul eden ve her isteği doğru arka uç sunucuya ileten bir sunucudur.
- Reverse proxy, arka uç sunucular adına istek alır ve onlara iletir.
- Genellikle HTTPS sonlandırma, önbellekleme, sıkıştırma ve yönlendirmeyi üstlenir.
- Arka uç sunucular özel bir ağda gizli kalabilir.
- 43Rollback
- Rollback, yeni bir dağıtım hatalara, kesintilere ya da beklenmedik başka sorunlara yol açtığında yazılımı önceki, sorunsuz sürüme döndürme işlemidir.
- Rollback, kötü bir yayından sonra uygulamanın çalışan son sürümünü geri yükler.
- Bir olay sırasında kullanıcı etkisini azaltmanın genellikle en hızlı yoludur.
- Blue-green dağıtımlar ve sürümlü konteyner imajları rollback'i hızlandırır.
- 44SaaSHizmet Olarak Yazılım
- SaaS (software as a service), internet üzerinden abonelikle sunulan yazılımdır; kullanıcı giriş yapar, sağlayıcı ise her şeyi çalıştırır, günceller ve korur.
- SaaS, internet üzerinden abonelikle kullanılan yazılımdır.
- Sağlayıcı uygulamayı barındırır, günceller, güvenceye alır ve yedekler.
- PaaS ve IaaS'ın üstünde, en az yönetim gerektiren en üst katmandır.
- 45Sanal Makine
- Sanal makine, paylaşılan fiziksel donanımda kendi işletim sistemini çalıştıran, aynı ana makinedeki diğerlerinden yalıtılmış yazılım tabanlı bilgisayardır.
- VM, kendi işletim sistemine sahip, yazılımla taklit edilen bir bilgisayardır.
- Hypervisor, tek bir fiziksel ana makinenin donanımını yalıtılmış birçok VM arasında paylaştırır.
- VM, ana makinesinden farklı bir işletim sistemi çalıştırabilir.
- 46Serverless
- Serverless, sağlayıcının kodu talep üzerine çalıştırıp sunucuları yönettiği, otomatik ölçeklediği ve yalnızca gerçek kullanıma ücret aldığı bulut modelidir.
- Serverless, sunucu yok demek değildir; sunucuları sizin yönetmediğiniz anlamına gelir.
- Kod, HTTP istekleri ya da dosya yüklemeleri gibi olaylara yanıt olarak çalışır.
- Otomatik ölçeklenir; boştayken sıfıra kadar iner.
- 47Service Mesh
- Service mesh, mikroservisler arası trafiği yöneten; kod değiştirmeden şifreleme, yeniden deneme, yönlendirme ve izleme ekleyen bir altyapı katmanıdır.
- Service mesh, mikroservis sistemindeki servisten servise trafiği yönetir.
- Proxy'ler veri düzlemini oluşturur ve bir kontrol düzlemi onları yapılandırır.
- Mutual TLS, yeniden denemeler, zaman aşımları, trafik bölme ve telemetri sağlar.
- 48Site Reliability Engineering
- Site reliability engineering, operasyona yazılım mühendisliğini uygulayan ve hizmetleri otomasyon ile ölçülebilir hedeflerle güvenilir tutan bir disiplindir.
- SRE, operasyon ve altyapı işlerine yazılım mühendisliğini uygular.
- Güvenilirlik, kullanıcıların deneyimini yansıtan SLI ve SLO'larla ölçülür.
- Hata bütçesi, yeni sürümlerin hızı ile kararlılık arasında denge kurar.
- 49SLAHizmet Seviyesi Anlaşması
- SLA (service level agreement), sağlayıcının müşterilerine %99,9 erişilebilirlik gibi hizmet seviyesi ve karşılanmazsa ne olacağına dair verdiği taahhüttür.
- SLA, erişilebilirlik gibi hizmet kalitesine dair resmî bir sözdür.
- Karşılanmadığında müşteriler genellikle hizmet kredisi kazanır.
- %99,9 ayda yaklaşık 43 dakika, %99,99 yaklaşık 4,3 dakika kesintiye izin verir.
- 50SLOHizmet Seviyesi Hedefi
- SLO, bir hizmetin ölçülebilir güvenilirlik hedefidir (örneğin 30 günde isteklerin %99,9'unun başarılı olması) ve yeterince güvenilirin ne olduğunu belirler.
- SLO, bir zaman penceresi boyunca bir güvenilirlik ölçümü için hedef değerdir.
- Ölçümün kendisine SLI denir; örneğin başarılı isteklerin payı.
- İzin verilen hata, yani %100 eksi SLO, hata bütçesidir.
- 51Terraform
- Terraform, kod olarak altyapı aracıdır; bulut kaynaklarını yapılandırma dosyalarında tarif edersiniz, tek komut onları buna göre oluşturur ya da günceller.
- Terraform bulut altyapısını HCL dosyalarında kod olarak tarif eder.
- terraform plan değişiklikleri önizler; terraform apply onları uygular.
- State dosyası, Terraform'un hangi gerçek kaynakları yönettiğini kaydeder.
- 52YAMLYAML Ain't Markup Language
- YAML, parantez yerine girinti kullanan, insanın okuyabileceği bir veri biçimidir; DevOps araçlarında ve CI/CD pipeline'larında yapılandırma için yaygındır.
- YAML, yapılandırılmış veri ve yapılandırma için insan tarafından okunabilir bir biçimdir.
- Yapıyı boşluklarla girinti tanımlar; sekmelere izin verilmez.
- JSON'un aksine # ile yorumları destekler.
- 53Yapılandırma Yönetimi
- Yapılandırma yönetimi, sunucuların ve yazılımın istenen durumunu kodla tanımlama ve araçlarla bunu otomatik olarak uygulayıp koruma pratiğidir.
- Yapılandırma yönetimi, sistemlerin istenen durumunu sürüm kontrolündeki kodda tutar.
- Araçlar bu durumu otomatik uygular ve mevcut makinelerdeki kaymayı düzeltir.
- Idempotency, aynı yapılandırmayı birçok kez uygulamayı güvenli kılar.
- 54Yük Dengeleyici
- Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- Yük dengeleyici, istekleri birden çok sunucu arasında dağıtır.
- Sağlık kontrolleri, arızalanan sunucuları otomatik olarak rotasyondan çıkarır.
- Yaygın algoritmalar arasında round robin, least connections ve IP hash bulunur.