Amazon DVA-C02: Veritabanları ve Önbellekleme (RDS, Aurora, ElastiCache, Timestream, Proxy) — Çalışma kılavuzu
Şunun bir parçası: AWS Developer Associate DVA-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.
RDS ve Aurora: tasarım, ölçeklendirme ve şifreleme
RDS veya Aurora üzerinde ilişkisel veritabanları tasarlamak, tek düğümlü (single-node) provisioned RDS ile Aurora’nın dağıtık depolaması arasındaki iş yükü ödünleşimlerini (tradeoff) değerlendirmekle başlar. Yüksek okuma ölçeklenebilirliği ve hızlı failover’a (yük devretme) ihtiyacınız olduğunda Aurora’yı seçin: Aurora replikaları cluster volume’ü paylaştığı için yükseltme (promotion) hızlıdır, oysa RDS MySQL/Postgres okuma replikaları asenkron binlog tabanlı replikasyon kullanır ve geride kalabilir. Okuma işlemlerini ölçeklendirmek için okuma replikaları (read replica) ekleyin ve uygulama okuma trafiğini bunlara yönlendirin; replikalar arasında otomatik olarak denge kurmak için Aurora’daki reader endpoint’lerini kullanın. Yazma işlemleri için dikey ölçeklendirme (instance sınıfı) ve dikkatli şema/indeks tasarımı önemlidir. Her zaman oluşturma anında bir KMS CMK ile bekleme durumunda şifrelemeyi (encryption at rest) etkinleştirin — şifrelemeyi sonradan etkinleştirmek, bir snapshot alıp yeni, şifreli bir instance’a geri yüklemeyi gerektirir; bu sık düşülen bir tuzaktır. Aktarım sırasında koruma (in-transit protection) için TLS/SSL bağlantılarını zorunlu kılın (RDS, CA paketleri sağlar). Kimlik bilgileri (credentials) için, yerleşik RDS rotasyon Lambda şablonunu kullanarak otomatik rotasyon özelliğine sahip AWS Secrets Manager’ı tercih edin; SDK’larda
undefined
ile secret’ları programatik olarak alın. Statik parolaları ortadan kaldırmak için IAM DB kimlik doğrulamasını değerlendirin: SDK’da
undefined
veya
undefined
aracılığıyla bir token oluşturun, ardından bu kısa ömürlü token ile bağlanın. Performance Insights, Enhanced Monitoring ve CloudWatch kullanarak sistemi izleyin (instrument); darboğazlar (hotspot’lar) için yavaş sorgu log’larını ve
undefined
komutunu kullanın.
Bağlantı havuzlama (Connection pooling), RDS Proxy ve sunucusuz (serverless) desenler
Sunucusuz fonksiyonlar ve yoğun bağlantı kullanan uygulamalar genellikle veritabanı bağlantı limitlerini tüketir. Node.js’de en basit desen, Lambda global scope’una bir
undefined
havuzu yerleştirmek ve bunu çağrımlar (invocation’lar) arasında yeniden kullanmaktır, ancak bu durum çok büyük eş zamanlı ölçeklenmeyi çözmez. RDS Proxy bu soruna yönelik yönetilen (managed) çözümdür:
undefined
ile proxy’yi oluşturun, onu Secrets Manager’daki secret’lar ve hedef RDS/Aurora instance’ları ile ilişkilendirin ve uygulamanızdan proxy endpoint’ini kullanın. RDS Proxy bağlantı çoklamayı (multiplexing), IAM kimlik doğrulama entegrasyonunu ve failover’ı yönetir. Sunucusuz Aurora Serverless için veya HTTP tarzı çağrıları tercih ettiğinizde, RDS Data API’yi kullanın:
undefined
, Lambda’ların kalıcı TCP bağlantıları olmadan SQL çalıştırmasına olanak tanır. Sık karşılaşılan bir pürüz, Data API’yi provisioned cluster’larla karıştırmaktır — Data API, sunucusuz cluster’lar için tasarlanmıştır ve farklı gecikme/transaction semantiklerine sahiptir. Ayrıca RDS Proxy’nin bir bağlantı havuzu zaman aşımı ve
undefined
getirdiğini unutmayın; Lambda’nın anlık yoğunlukları (burst) için boştaki istemci zaman aşımını (idle client timeout) ve bağlantı ödünç almayı (connection borrowing) ayarlayın. Kimlik bilgileri için
undefined
kullanın ve
undefined
ile rotasyon yapın veya konsol/SDK üzerinden otomatik rotasyonu etkinleştirin.
Önbellekleme (Caching) stratejileri: ElastiCache, DAX ve önbellek tasarımı
Önbellekleme seçimleri, veri deposuna ve erişim desenlerine (access patterns) bağlıdır. DynamoDB için DAX,
undefined
‘ı sarmalayan
undefined
aracılığıyla mikrosaniye seviyesinde okuma gecikmesi ve şeffaf SDK entegrasyonu sağlar; okuma ağırlıklı, nihai tutarlı (eventually-consistent) iş yükleri için idealdir. İlişkisel veya gelişigüzel anahtar-değer (key-value) önbelleklemesi için, gelişmiş veri yapıları, kalıcılık (AOF/RDB anlık görüntüleri), replikasyon ve cluster modunda sharding için ElastiCache Redis’i; basit, yatay olarak ölçeklenebilir önbellekleme için ise Memcached’i kullanın. Okumalar için cache-aside desenini; tutarlılık ve karmaşıklık açısından kabul edilebilir olduğunda ise write-through/write-behind desenlerini uygulayın. Anahtar (key) tasarımı kritiktir: anahtarları uygulama ve sürüm bazında öneklerle (prefix) belirleyin, makul TTL’ler kullanın ve sınırsız kardinaliteden kaçının. Cache stampede (önbellek izdihamı) durumlarını, kilitle ve yenile (lock-and-refresh) desenleri (
undefined
veya Redlock) veya olasılıksal erken TTL yenileme ile yönetin. Redis’i multi-AZ ve otomatik failover ile yapılandırın;
undefined
aracılığıyla otomatik failover ve anlık görüntülere (snapshot) sahip replikasyon grupları oluşturun. Sık düşülen tuzaklar arasında yazma işlemlerinden sonra bayatlayan önbellekler, şema değişikliklerinde önbelleği geçersiz kılmamak ve mutlak tutarlılık beklemek yer alır. CloudWatch’ta önbellek isabet oranını (cache hit ratio) ve çıkarma (eviction) metriklerini izleyin ve bellek veya CPU bir darboğaz haline geldiğinde düğüm tiplerini veya küme shard’larını ölçeklendirin.
Timestream ile zaman serisi ve okuma replikası (read-replica) desenleri
Amazon Timestream, zaman serisi verileri için özel olarak oluşturulmuştur: SDK’dan toplu WriteRecords çağrıları ile WriteRecords API’sini kullanarak veri alın ve TimestreamQuery.query(sql) ile sorgulama yapın. Yazma amplifikasyonunu (write amplification) azaltmak için kayıt şemanızı düşük kardinaliteye sahip boyutlarla (dimension) tasarlayın ve çoklu ölçüm (multi-measure) kayıtları kullanın. Yeni verileri “hot” (hızlı erişilebilir) tutmak ve eski verileri ucuza depolamak için tablo başına bellek (memory) ve manyetik (magnetic) saklama kuralları yapılandırın; saklama süresini ayarlamak kritik öneme sahiptir çünkü bellek katmanının saklama boyutu maliyeti ve sorgu performansını etkiler. Analitik için, taranan veri miktarını en aza indirmek amacıyla zaman serisine özgü sorguları (time_bin veya bin) kullanın ve filtreleri boyutlara (dimension) doğru itin (push down). Zaman serisi verilerini ilişkisel depolarla entegre ederken, geçmişe dönük değişmez (immutable) verileri Timestream’e aktarın ve “hot” meta verileri RDS/Aurora’dan ElastiCache ile sunun. İlişkisel okuma ölçeklendirmesi için okuma replikaları (read replica) ekleyin ve salt okunur (read-only) trafiği yönlendirin; Aurora için okuyucu uç noktalarını (reader endpoint) kullanın ve kritik okumaları yönlendirmeden önce replika gecikmesini (CloudWatch ReplicaLag) inceleyin. Geliştiricilerin sık düştüğü bir tuzak, Timestream’de yüksek kardinalite kullanmak veya istek başına önbellekleme anahtarları (caching key) üretmektir; bu durum depolamayı şişirir ve performansı düşürür. Yoğun anları yumuşatmak ve kısıtlamayı (throttling) önlemek için yazma işlemlerinde toplu işlem (batching) ve asenkron veri alım hatları (Kinesis, Firehose) kullanın.
Pratik Problem: Kullanım Senaryosu
Senaryo: NovaShop, AWS üzerinde çok bölgeli (multi-region) bir e-ticaret platformu işletmektedir. Siparişler için us-east-1 bölgesinde Aurora MySQL, Lambda tabanlı API’ler ve DynamoDB’de küresel bir müşteri kataloğu kullanmaktadır. Geliştiriciler tek bir AWS hesabında CI/CD kullanmakta ve veritabanı kimlik bilgilerini Secrets Manager’da saklamaktadır.
Zorluk: Satışların zirve yaptığı dönemlerde, Lambda fonksiyonları veritabanı bağlantılarını tüketmekte ve katalog mikrosaniye düzeyinde okuma hızına ihtiyaç duymaktadır. Geliştiriciler, döndürülen (rotated) kimlik bilgileriyle güvenliği sağlamalı ve ürün okumaları için minimum gecikmeyi korumalıdır.
Önerilen Yaklaşım:
CreateDBProxykullanarak Aurora kümesi için bir RDS Proxy oluşturun, Secrets Manager gizli anahtarının ARN’sini bağlayın ve IAM kimlik doğrulamasını yapılandırın; Lambda’yı proxy uç noktasını (endpoint) kullanacak ve kimlik bilgileri içinSecretsManager.getSecretValue()çağrısı yapacak şekilde güncelleyin.- Katalog için bir Amazon DAX kümesi dağıtın ve mikrosaniye düzeyinde okumalar için DynamoDB
DocumentClient‘ı sarmalayan (wrap)AmazonDaxClient({endpoints})istemcisine geçiş yapın. - RDS rotasyon Lambda şablonunu (
rotate-secretveya konsol üzerinden yapılandırma) kullanarak Aurora gizli anahtarı için Secrets Manager otomatik rotasyonunu etkinleştirin ve Lambda IAM rolününsecretsmanager:GetSecretValueçağrısı yapabildiğinden emin olun. - Oturum önbelleklemesi (session caching) için bir ElastiCache Redis kümesi (küme modu - cluster mode) ekleyin ve yığılmaları (stampede) önlemek amacıyla TTL’ler ve bir
SETNXyenileme kilidi ile cache-aside desenini uygulayın.
Gerekçe: RDS Proxy kullanmak, Lambda ölçeklenmesinden kaynaklanan bağlantı fırtınalarını önlerken, IAM/Secrets Manager otomatik rotasyon ile kimlik bilgilerini korur. DAX, mikrosaniye düzeyinde DynamoDB okumaları sağlar ve ElastiCache geçici oturum/okuma önbelleklemesini yönetir. Bu yaklaşım, sunucusuz (serverless) ölçeklenme ve güvenlik en iyi uygulamalarıyla uyumludur.
← Depolama · Tüm alanlar · Mesajlaşma →
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 →