Amazon DOP-C02: Kod Olarak Altyapı ve Yapılandırma Yönetimi — Çalışma kılavuzu
Şunun bir parçası: AWS DevOps Engineer Professional DOP-C02 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Amazon sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Genel Bakış
AWS’te Kod Olarak Altyapı (IaC) ve konfigürasyon yönetimi, altyapı ve uygulamaların tekrarlanabilir, denetlenebilir ve yönetilen bir şekilde sağlanmasını ve yapılandırılmasını mümkün kılar. CloudFormation ve AWS Cloud Development Kit (CDK), kaynakları bildirimsel olarak veya CloudFormation’a sentezlenen kod aracılığıyla tanımlar. AWS OpsWorks ve AWS Systems Manager gibi konfigürasyon katmanları, EC2 ve hibrit filolardaki sunucularda istenen durumu zorunlu kılar ve raporlar. Sırlar, parametreler ve imaj oluşturma (image-baking), yaşam döngüsünü tamamlayarak büyük ölçekte değişmez ve güvenli dağıtımları mümkün kılar.
CloudFormation Stack’leri, Değişiklik Kontrolü ve Yönetişim
CloudFormation stack’leri dağıtım birimidir. Patlama yarıçapını en aza indirmek için stack’leri yaşam döngüsü sınırları ve sahiplik etrafında tasarlayın. Parametreleri idareli kullanın ve eşlemeler (mappings) veya SSM sorguları ile yönlendirilmiş varsayılanları tercih edin. Sıkı bağımlılığı önlemek için yalnızca kararlı, paylaşılan değerleri Çıktılar (Outputs) ve Fn::ImportValue aracılığıyla dışa aktarın ve içe aktarın.
İç içe stack’ler (Nested stacks), yeniden kullanılabilir bileşenleri kapsar ve ana şablonları küçük tutar. Bir ana stack, alt stack’lere parametreler geçirebilir ve onların çıktılarını kullanabilir, bu da modüler mimarileri mümkün kılar (örneğin, bir uygulama stack’i tarafından kullanılan paylaşılan bir ağ iç içe stack’i). İç içe stack’leri tek bir sorumluluğa (VPC, veri katmanı, uygulama katmanı) odaklayın ve bunları bağımsız olarak sürümleyin.
StackSet’ler, tek bir şablonu hesaplar ve Bölgeler (Regions) arasında dağıtır. OU’lara otomatik dağıtım yapmak ve yeni hesapları otomatik olarak dahil etmek için AWS Organizations ile hizmet tarafından yönetilen izin modelini kullanın. Dağıtım sürecini kontrol etmek için operasyon tercihlerini (maksimum eşzamanlı hesap/Bölge, hata toleransı) yapılandırın. Hesap veya Bölge başına parametre geçersiz kılmaları, standart bir şablonu yerel kısıtlamalara uyarlamanıza olanak tanır. Bant dışı değişiklikleri tespit etmek için StackSet ve stack örneği (stack instance) sürüklenmesini izleyin.
Değişiklik setleri (Change sets), güvenli, insan tarafından incelenebilir güncellemeler sağlar. ExecuteChangeSet’i çalıştırmadan önce daima CreateChangeSet komutunu kullanın ve kaynak bazındaki etkiyi, değiştirmeleri ve potansiyel veri kaybını inceleyin. Aşamalı onaylar için değişiklik setlerini otomatikleştirilmiş işlem hatlarına (pipeline) entegre edin.
Sürüklenme tespiti (Drift detection), stack kaynaklarının şablonla eşleştiğini doğrular. Kritik stack’ler ve StackSet’ler üzerinde rutin olarak sürüklenme tespiti çalıştırın; tüm kaynak türleri için tüm özelliklerin değerlendirilmediğini unutmayın (desteklenmeyen özellikler “kontrol edilmedi” olarak raporlanır). Sürüklenmeyi bir olay olarak ele alın: araştırın, bağlamı yakalayın ve ya bir stack güncellemesiyle ya da sürüklenmeyi kod haline getirip yeniden uygulayarak düzeltin.
Stack politikaları (Stack policies), güncellemeler sırasında kritik kaynakları koruyan JSON belgeleridir. Yeri doldurulamaz kaynaklara (örneğin, üretim veritabanları, Route 53 bölgeleri) yönelik güncellemeleri reddedin ve belirli bir değişiklik için geçici olarak hassas bir yol açmak üzere StackPolicyDuringUpdateBody’yi kullanın, ardından daha katı politikayı geri yükleyin. Koruma mekanizmaları için sonlandırma koruması (termination protection) ve DeletionPolicy (Retain/Snapshot) ile birleştirin. Harici duruma sahip kaynaklar (S3 bucket’ları) için silme davranışlarını planlayın. Bir bucket’ın silinmeden önce boşaltılması gerekiyorsa, stack silme işleminde nesneleri temizlemek için özel bir kaynak (custom resource) uygulayın.
AWS CDK ve CloudFormation Genişletilebilirliği
AWS CDK, altyapıyı tanıdık dillerde (TypeScript, Python, Java, .NET, Go) modeller. Construct’lar CDK’nin yapı taşlarıdır:
- L1 construct’ları (CfnXxx), CloudFormation spesifikasyonundan oluşturulur ve kaynaklarla bire bir eşleşir.
- L2 construct’ları, yüksek seviyeli amaç ve makul varsayılanlar ekler (örneğin, ApplicationLoadBalancedFargateService).
- L3 “pattern"leri, kullanıma hazır mimariler için birden fazla L2’yi bir araya getirir.
Bir CDK uygulaması bir veya daha fazla stack içerir. cdk synth sırasında, uygulama bağlam sorgularını (örneğin, VPC ID’leri) çözer, asset’leri oluşturur ve bir CloudFormation şablonu üretir. Dağıtımdan önce, cdk bootstrap komutu ortamın asset bucket’larını ve rollerini oluşturur. Değişiklikleri önizlemek için cdk diff kullanın, ardından şablonları ve asset’leri göndermek için cdk deploy komutunu çalıştırın; CDK dahili olarak değişiklik setlerini kullanır ve güvenlikle ilgili hassas değişiklikleri (IAM veya kaynak değiştirmeleri) gösterir ve onay ister. Kuruluş çapında etiketlemeyi zorunlu kılmak için Aspects aracılığıyla stack’leri ve kaynakları etiketleyin. L2 soyutlamalarının yetersiz kaldığı durumlarda, kaçış yollarını (escape hatches) (node.defaultChild) kullanın veya L1 construct’larına inin.
CloudFormation özel kaynakları (custom resources), IaC’yi API’ler aracılığıyla erişilebilen her şeye genişletir. Lambda destekli bir özel kaynak, bir RequestId, PhysicalResourceId ve özellikler içeren Create, Update ve Delete olaylarını alır. Fonksiyon şunları yapmalıdır:
- İdempotent olmalı ve zaman aşımı süresi içinde önceden imzalanmış ResponseURL’e başarı/başarısızlık durumunu döndürmelidir.
- Güncellemeleri izlemek ve Delete işleminde temizliği yönlendirmek için sabit bir PhysicalResourceId ayarlamalıdır.
- Nihai tutarlı (eventually consistent) alt hizmetler için yeniden denemeleri ve stabilizasyon beklemelerini yönetmelidir.
Lambda için en az ayrıcalığa sahip IAM yürütme rollerini kullanın, API çağrılarına üssel geri çekilme (exponential-backoff) ekleyin ve RequestId aracılığıyla log korelasyonu sağlayın. Büyük veya uzun süren operasyonlar için, bir yürütme token’ı bekleyen bir özel kaynak ile Step Functions kullanmayı düşünün. Uygulanabilir olduğunda, yeniden kullanılabilir, sürümlenmiş sağlayıcılar için CloudFormation Registry’yi tercih edin.
Kod Olarak Altyapıda (IaC) Gizli Bilgiler ve Parametreler
Gizli bilgileri asla şablonlara veya koda sabit olarak yazmayın. Hassas değerleri dağıtım zamanında çözümlemek için dinamik referanslar kullanın:
- Secrets Manager: {{resolve:secretsmanager:secret-id:SecretString:json-key:version-stage}}
- SecureString Parameter Store: {{resolve:ssm-secure:parameter-name:version}}
Dinamik referanslar, gizli bilgilerin yığın şablonunda veya olaylarda saklanmasını önler. Gizli bilgileri, CloudFormation’ın düz metin olarak kaydettiği Çıktılara (Outputs) veya kaynak özelliklerine yerleştirmeyin. CloudFormation’ın yürütme rolüne, başvurulan değerlerin şifresini çözme veya alma izni verin ve KMS CMK’lerini erişmesi gereken kimliklere (principals) göre kapsayın.
Parameter Store, gizli olmayan yapılandırmalar (özellik bayrakları, AMI ID’leri, uç noktalar) için idealdir. Ortamlar arasında güvenli geri almalar ve atomik yükseltmeler oluşturmak için sürümlenmiş SSM parametrelerini kullanın. CDK’da, güvenli değerler için ssm.StringParameter.fromStringParameterName veya fromSecureStringParameterAttributes ile değerleri içe aktarın ve parametre okumalarını kullanıcı verilerine (user data) veya uygulama başlangıç betiklerine (bootstraps) bağlayın.
Secrets Manager, yaşam döngüsü kontrolleri, rotasyon ve denetim için tasarlanmıştır. Rotasyonu, desteklenen motorlarla (RDS, Aurora) veya özel Lambda’larla entegre edin. Eskimiş materyallerin yayılmasını önlemek için gizli bilgilere AMI’lere gömmek yerine çalışma zamanında başvurun. Konteynerleştirilmiş veya sunucusuz iş yükleri için, gizli bilgileri Secrets Manager referansları tarafından desteklenen ortam değişkenleri aracılığıyla enjekte edin veya ECS/TaskDefinition gizli bilgileri aracılığıyla bağlayın (mount); kısa TTL’li bağlantı havuzları ve yeniden denemeler kullanarak minimum kesintiyle rotasyon yapın.
Yapılandırma Yönetimi ve Değişmez Altyapı
AWS OpsWorks, kuralcı bir yapılandırma yönetimi sağlar. OpsWorks Stacks, uygulama yapılandırmasını ve dağıtımlarını düzenlemek için Chef cookbook’larını ve yaşam döngüsü olaylarını (Kurulum, Yapılandırma, Dağıtım, Dağıtımı Geri Alma, Kapatma) kullanır ve örnekleri durduran/başlatan veya değiştiren sağlık kontrolleri ile otomatik iyileştirmeyi destekler. Geçmişte OpsWorks, yönetilen Chef Automate ve Puppet Enterprise de sunuyordu; günümüzde birçok ekip, ajan tabanlı orkestrasyon için Systems Manager’ı standartlaştırıyor veya Ansible/Chef/Puppet kontrol düzlemlerini kendileri çalıştırıyor. Ansible, OpsWorks ile yerel olarak entegre değildir; bunun yerine, playbook’ları çalıştırmak için Systems Manager State Manager’ı veya SSM Session Manager bağlantısı ve EC2 dinamik envanteri ile AWX/Ansible Automation Platform’u kullanın.
AWS Systems Manager, hibrit yapılandırma için modern kontrol düzlemidir:
- State Manager, SSM belgelerini (YAML/JSON) bir programa, olaya veya örnek başlangıcına göre çalıştıran İlişkilendirmeler (Associations) aracılığıyla istenen durumu zorunlu kılar. Yapılandırmayı yakınsatmak için AWS-RunShellScript, AWS-ApplyAnsiblePlaybooks, AWS-ConfigureDocker ve özel belgeleri kullanın. Filo genelinde değişiklikler için ilişkilendirmeleri parametrelendirin ve etiketlere göre hedefleyin.
- Yapılandırma uyumluluğu, ilişkilendirme durumunu ve Patch Manager sonuçlarını gösterir. Onaylanmış sınıflandırmaları tanımlamak, Bakım Pencereleri’ne (Maintenance Windows) bağlamak ve örnek etiketi, yama grubu veya kaynak grubuna göre uyumluluğu izlemek için yama temellerini (patch baselines) kullanın. Hibrit Aktivasyonlar (Hybrid Activations), tek tip yönetişim için şirket içi düğümleri yönetilen örnekler olarak sisteme dahil eder.
- Envanter; paketleri, dosyaları ve Windows güncellemelerini kaydeder; Kaynak Veri Senkronizasyonu (Resource Data Sync), kurumsal raporlama için S3 ve Athena’ya veri aktarır. Tespit’ten düzeltmeye kadar olan döngüyü tamamlamak için SSM uyumluluğunu AWS Config kuralları ve otomatik düzeltme (Systems Manager Automation runbook’ları) ile birleştirin.
Değişmez altyapı, yapılandırma kaymasını (drift) ortadan kaldırır ve geri almayı (rollback) hızlandırır. EC2 Image Builder, imaj boru hatlarını (pipelines) şu şekilde kod haline getirir:
- Belgeler olarak ifade edilen Bileşenler (kurulum, sıkılaştırma, doğrulama adımları).
- Bileşenleri ve temel imajları bir araya getiren İmaj tarifleri (Image recipes).
- Alt ağları, güvenlik gruplarını, örnek profillerini ve günlüklemeyi tanımlayan Altyapı yapılandırmaları.
- AMI’ları Bölgelere çoğaltmak ve hesaplarla paylaşmak için Dağıtım yapılandırmaları.
CIS ölçütlerini, ajan sağlığını (SSM/CloudWatch) ve uygulama duman testlerini (smoke checks) doğrulamak için test bileşenleri ekleyin. İmajları sürümleyin ve anlamsal etiketlerle etiketleyin. AMI ID’lerini Parameter Store’a (örneğin, /app/frontend/ami) yayınlayın ve Auto Scaling başlatma şablonlarında referans gösterin. Kademeli (rolling) veya mavi/yeşil stratejileriyle dağıtım yapın; değişmezliği korumak için yerinde yama yapmak yerine örnekleri değiştirin. Güvenlik açığı taramalarını (Amazon Inspector) boru hattı terfi kapılarına (promotion gates) besleyin. Sırları (secrets) imajların içine gömmeyin; önyükleme sırasında Instance Metadata Service v2 ve SSM/Secrets Manager referansları aracılığıyla alın.
Pratik Problem Senaryosu
Capital One, sıkı yönetişim, sır yönetimi ve yapılandırma kaymasını ortadan kaldırma zorunluluğuyla, müşteri odaklı bir platform için çoklu hesap, çoklu Bölge dağıtımlarını standartlaştırmalıdır. Ortam, AWS Organizations’da yüzlerce hesabı kapsamakta ve veritabanı erişimi ile işletim sistemi sıkılaştırması etrafında katı kontrollere sahiptir.
- Altyapıyı AWS CDK ile modelleyin ve CloudFormation’a sentezleyin
- VPC’ler, ALB’ler, Auto Scaling grupları ve Aurora için L2/L3 yapılarını (constructs) uygulayın. Şablonları ve değişiklik kümelerini (change sets) oluşturmak ve doğrulamak için CI’da
cdk synthvecdk diffkullanın. - Neden CDK: Yapılar aracılığıyla güçlü kompozisyon ve yeniden kullanım, organizasyon genelinde etiketleme ve koruma mekanizmaları (guardrails) için Aspects aracılığıyla programatik politikalar ve denetlenebilirlik için CloudFormation ile yerel entegrasyon.
- Temel ağ ve koruma mekanizması yığınlarını CloudFormation StackSets aracılığıyla dağıtın
- Paylaşılan VPC uç noktalarını, standart CloudWatch alarmlarını ve IAM sınırlarını dağıtmak için güvenlik ve sanal alan (sandbox) OU’larını hedefleyen hizmet tarafından yönetilen StackSet’ler oluşturun. Hata toleransı ve eşzamanlılık kontrolleri ile yeni hesaplara otomatik dağıtımı etkinleştirin.
- Neden StackSets: Organizasyon ölçeğinde, yeni hesapların otomatik dahil edilmesi ve yerleşik kayma tespiti ile tutarlı dağıtım.
- Kritik kaynakları yığın politikaları (stack policies) ve değişiklik kümeleri (change sets) ile koruyun
- Aurora kümelerine ve Route 53 bölgelerine güncellemeleri reddeden yığın politikaları uygulayın. Üretim için boru hattında
ExecuteChangeSetöncesindeCreateChangeSetve manuel onay gerektirin. - Neden yığın politikaları/değişiklik kümeleri: En az ayrıcalıkla yapılan değişiklikleri zorunlu kılmak ve yüksek riskli değişikliklerden önce insan incelemesi sağlamak.
- IaC’yi Lambda destekli özel kaynaklarla (custom resources) genişletin
- Yığın silindiğinde uygulama bucket’larını boşaltmak için bir
Custom::S3BucketCleanupve oluşturma sonrası motor parametrelerini uygulayan birCustom::AuroraParameterTuneruygulayın. - Neden özel kaynaklar: Yaşam döngüsünü yığına bağlı tutarken bildirimsel kaynak sağlamadaki (declarative provisioning) fonksiyonel boşlukları kapatmak.
- Sırları ve yapılandırmayı Secrets Manager ve Parameter Store ile merkezileştirin
- Veritabanı kimlik bilgilerini ve API anahtarlarını rotasyon Lambda’ları ile Secrets Manager’da saklayın; AMI ID’lerini, özellik bayraklarını (feature flags) ve uç noktaları Parameter Store’a yayınlayın. Değerlere, CloudFormation’daki dinamik referanslar ve uygulamalar için çalışma zamanında CDK içe aktarmaları aracılığıyla referans verin.
- Neden bu hizmetler: Sorumlulukların ayrılması—rotasyon ve denetim ile sırlar, sır olmayan yapılandırma ve kolay terfi için parametreler.
- İstenen durumu ve uyumluluğu Systems Manager State Manager aracılığıyla zorunlu kılın
- Ajanları kurmak, işletim sistemi ayarlarını yapılandırmak ve gerektiğinde Ansible playbook’larını uygulamak için ilişkilendirmeler (associations) oluşturun. Mesai dışı yama yapmak için Bakım Pencereleri (Maintenance Windows) ile Patch Manager’ı ve Kaynak Veri Senkronizasyonu (Resource Data Sync) ile toplanan uyumluluk panolarını kullanın.
- Neden State Manager: EC2 ve şirket içi ortamlarda sürekli uyumluluk raporlaması ve ölçekte düzeltme ile ajan tabanlı yakınsama.
- EC2 Image Builder ile değişmez altyapıyı benimseyin
- CIS temelleri, SSM/Inspector ajanları ve uygulama çalışma zamanı bağımlılıkları için bileşenlerle güvenliği sıkılaştırılmış AMI’lar oluşturun. Testleri çalıştırın, AMI ID’lerini Parameter Store’a yayınlayın ve Auto Scaling başlatma şablonlarını sürümlenmiş parametrelere bağlayın. Kademeli güncellemeler (rolling updates) yoluyla dağıtım yapın; AMI güncellemelerinde örnek yenilemeyi (instance refresh) tetikleyin.
- Neden Image Builder: Kaymayı ortadan kaldıran ve hızlı geri almalar yoluyla ortalama kurtarma süresini (MTTR) azaltan, tekrarlanabilir, test edilebilir imajlar.
- Boru hattı orkestrasyonu ve yönetişim
cdk synth/diffçalıştıran, değişiklik kümeleri oluşturan, onay için duraklayan ve ardından yürüten çok aşamalı bir boru hattı uygulayın. Depo değişikliklerinde StackSet güncellemelerini tetiklemek için EventBridge’i kullanın. Gecelik olarak kayma tespit taramaları ekleyin ve tutarsızlıklar için OpsCenter öğeleri açın.- Neden bu yaklaşım: Denetlenebilir terfiler, proaktif kayma tespiti ve iyi tanımlanmış hizmet sorumlulukları aracılığıyla otomatikleştirilmiş düzeltme ile sürekli teslimat.
← CI · Tüm alanlar · İzleme →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →