Soru bankası · Altyapı

AWS'ye giriş: backend geliştirici için

Region ve AZ, IAM, VPC ve subnet'ler, EC2-ECS-EKS-Lambda seçimi, S3, RDS-Aurora-DynamoDB, SQS-SNS-EventBridge, secret yönetimi, gözlemlenebilirlik, yüksek erişilebilirlik ve maliyet tuzakları. Spring Boot servisini AWS'de çalıştıran bir geliştiricinin bilmesi gerekenler.

20 soru12 çoktan seçmeli
Konu özeti

Backend mülakatlarında AWS soruları sertifika sınavı gibi servis ezberi ölçmez. Beklenen şudur: bir Spring Boot servisini AWS'de nerede çalıştıracağını, veriyi nerede tutacağını, servislerin birbirine nasıl güvenli eriştiğini ve bir AZ çöktüğünde ne olacağını anlatabilmek. Aşağıdaki özet bu çerçeveye odaklanır. Fiyat ve limitler değişebilir; buradaki sayılar yazım tarihindeki AWS dokümantasyonuna göredir ve kesin değer için ilgili servis sayfası kontrol edilmelidir.

Region, AZ ve edge

  • Region: coğrafi bir bölge (örneğin eu-central-1 Frankfurt). Veri, siz taşımadıkça region dışına çıkmaz; KVKK ve bankacılık düzenlemeleri region seçimini belirler.
  • Availability Zone (AZ): bir region içinde birbirinden fiziksel olarak ayrı, kendi enerji ve ağ altyapısı olan veri merkezi grupları. Region'lar genelde en az üç AZ içerir. AZ'ler arası gecikme düşük (tek haneli milisaniye) olduğu için senkron replikasyon yapılabilir.
  • Edge location: CloudFront (CDN) ve Route 53 gibi servislerin kullanıcıya yakın uç noktaları.

Yüksek erişilebilirliğin temel kuralı: en az iki, tercihen üç AZ'ye yay. Tek AZ'de çalışan bir sistem, o AZ'deki bir arızada tamamen durur.

IAM: kim neye erişebilir

KavramNe işe yarar
UserBir insan ya da (kaçınılması gereken) uzun ömürlü erişim anahtarı
RoleÜstlenilen (assume) kimlik; STS'den kısa ömürlü kimlik bilgisi verir
PolicyJSON belge: hangi Action, hangi Resource, hangi Condition
Trust policyBir role'ü kimin üstlenebileceğini söyler

Değerlendirme kuralı: varsayılan ret; bir Allow erişim verir; açık bir Deny her şeyi ezer. Uygulamalar asla kod ya da ortam değişkeninde access key taşımaz; EC2'de instance profile, ECS'te task role, EKS'te IRSA ya da EKS Pod Identity ile role üstlenir ve AWS SDK kimlik bilgisini kendisi alır. CI/CD de OIDC ile kısa ömürlü role üstlenir. En az yetki ilkesi: s3:* ve Resource: "*" yerine belirli eylem ve belirli kaynak.

Ağ: VPC

Bir VPC, kendi IP aralığın (örneğin 10.0.0.0/16) olan özel ağdır. İçinde her AZ'de subnet'ler açılır:

  • Public subnet: route table'ında Internet Gateway'e çıkış vardır; load balancer ve NAT gateway burada durur.
  • Private subnet: internetten doğrudan erişilemez; uygulama ve veritabanı burada durur. Dışarı çıkış NAT gateway üzerinden yapılır.
text
           Internet
               │
        Internet Gateway
               │
  ┌─────── public subnet (AZ a/b/c) ───────┐
  │   ALB            NAT gateway           │
  └────┬──────────────────▲────────────────┘
       │                  │ dışarı çıkış
  ┌─── private subnet (AZ a/b/c) ──────────┐
  │   ECS/EKS servisleri ──► RDS / Aurora   │
  └────────────────────────────────────────┘

Security group kaynak (ENI) seviyesinde, durumlu (stateful) bir güvenlik duvarıdır: sadece izin kuralı yazılır, dönen trafiğe otomatik izin verilir; kaynak olarak başka bir security group gösterilebilir ("sadece uygulama SG'sinden gelen 5432"). Network ACL subnet seviyesindedir, durumsuzdur (dönüş trafiğine ayrıca izin gerekir), izin ve ret kuralı yazılabilir ve kurallar numara sırasıyla değerlendirilir. Günlük işte asıl araç security group'tur.

AWS servislerine (S3, DynamoDB, Secrets Manager, ECR) private subnet'ten erişirken trafiği NAT'tan geçirmek yerine VPC endpoint kullanılır: S3 ve DynamoDB için gateway endpoint ücretsizdir, diğerleri için interface endpoint (PrivateLink) saatlik ücretlidir.

Compute: nerede çalıştırmalı

SeçenekNe yönetirsinİyi olduğu yerDikkat
EC2İşletim sistemi, yama, ölçeklemeTam kontrol, özel donanımEn çok operasyon yükü
ECS + FargateSadece container ve task tanımıBasit container servisleriKubernetes ekosistemi yok
EKSKubernetes nesneleri, node'lar (ya da Fargate)Çok servisli platform, taşınabilirlikÖğrenme ve işletme maliyeti
LambdaSadece fonksiyon koduOlay odaklı, düzensiz yük, kısa işler15 dk sınırı, cold start

Lambda limitleri: en fazla 900 saniye (15 dakika) çalışma süresi, 128 MB ile 10.240 MB arası bellek (CPU bellekle orantılı artar), senkron çağrıda 6 MB istek ve cevap, bölge başına varsayılan 1.000 eşzamanlı çalışma. Java'da cold start birkaç saniyeye çıkabilir; SnapStart başlatılmış ortamın anlık görüntüsünü alıp oradan devam ederek bunu ciddi azaltır, provisioned concurrency ise ortamları önceden sıcak tutar.

Depolama ve veritabanı

S3 nesne deposudur: dosya sistemi değil, anahtar-değer gibi çalışır. Tüm işlemlerde güçlü okuma-sonrası-yazma tutarlılığı vardır (2020 sonundan beri). Depolama sınıfları erişim sıklığına göre seçilir (Standard, Intelligent-Tiering, Standard-IA, Glacier sınıfları) ve lifecycle kurallarıyla nesneler otomatik taşınır. Yeni bucket'larda Block Public Access varsayılan olarak açıktır ve nesneler varsayılan olarak şifrelenir. Büyük dosya yüklemelerinde dosyayı uygulamadan geçirmek yerine istemciye kısa ömürlü presigned URL verilir.

İhtiyaçSeçenek
İlişkisel, transaction, karmaşık sorguRDS for PostgreSQL ya da Aurora PostgreSQL
Anahtarla erişim, çok yüksek ölçek, öngörülebilir gecikmeDynamoDB
Cache, oturum, rate limit sayacıElastiCache (Redis/Valkey)
AramaOpenSearch

RDS'te Multi-AZ yüksek erişilebilirlik içindir: başka bir AZ'de senkron bir yedek tutulur ve arızada otomatik failover olur (klasik Multi-AZ instance'ta yedek okunamaz). Read replica okuma ölçeği içindir ve asenkron çalışır, yani replikada gecikme (lag) olabilir. Aurora depolamayı üç AZ'de altı kopya olarak tutar ve replikalar aynı depolamayı paylaştığı için failover genelde daha hızlıdır.

DynamoDB'de tasarım erişim desenlerinden başlar: partition key yükü dağıtır, sort key aralık sorgusu sağlar. Bir öğe en fazla 400 KB'tır. Koşullu yazma (ConditionExpression) ile idempotency ve iyimser kilitleme yapılır; JOIN yoktur.

Mesajlaşma

ServisModelKullanım
SQSKuyruk; bir mesajı bir tüketici işlerİş dağıtımı, yük tamponu
SNSPub/sub; bir mesaj birçok aboneyeFan-out (genelde SNS → birden çok SQS)
EventBridgeKurallara göre olay yönlendirmeServisler ve SaaS arası olay yolu
Kinesis / MSKSıralı, tekrar okunabilir akış (log)Yüksek hacim, replay, Kafka uyumluluğu

SQS standard kuyruk en az bir kez teslim eder ve sıra garantisi vermez; tüketici idempotent olmalıdır. FIFO kuyruk mesaj grubu içinde sıra ve tekilleştirme penceresi içinde tek işlem sağlar ama throughput sınırı daha düşüktür. Bir mesaj alındığında visibility timeout süresince diğer tüketicilere görünmez; bu sürede silinmezse tekrar görünür. Belirli sayıda başarısız alımdan sonra mesaj DLQ'ya taşınır (redrive policy, maxReceiveCount). Mesaj boyutu sınırı 2025'te 256 KiB'tan 1 MiB'a çıktı; daha büyük yükler S3'e konup kuyruğa referansı yazılır.

Secret, konfigürasyon ve şifreleme

  • Secrets Manager: veritabanı şifresi, API anahtarı; otomatik rotation desteği; secret başına ücretli.
  • SSM Parameter Store: konfigürasyon ve basit secret'lar (SecureString); standart parametreler ücretsiz.
  • KMS: şifreleme anahtarları; anahtarın kendisi dışarı çıkmaz, envelope encryption ile veri anahtarı şifrelenir. Erişim key policy ve IAM ile kontrol edilir ve her kullanım CloudTrail'e düşer.

Spring Boot'ta Spring Cloud AWS ile spring.config.import=aws-secretsmanager:... ya da aws-parameterstore:... kullanılabilir; ECS ve EKS'te secret'lar container'a ortam değişkeni olarak da enjekte edilebilir.

Gözlemlenebilirlik ve denetim

  • CloudWatch Logs / Metrics / Alarms: log toplama, metrik, eşik ve anomali alarmları.
  • X-Ray ya da OpenTelemetry (AWS Distro for OpenTelemetry): dağıtık trace.
  • CloudTrail: hesap üzerindeki her API çağrısının kaydı ("bu security group'u kim değiştirdi?"). Bankacılıkta denetim izi için vazgeçilmezdir.

Maliyet tuzakları

Faturayı şaşırtıcı biçimde büyüten kalemler genelde compute değildir:

  • NAT gateway: saatlik ücret artı işlenen GB başına ücret (us-east-1'de ikisi de 0,045 USD). S3'e giden yoğun trafik NAT'tan geçiyorsa gateway endpoint ile ücretsiz hâle gelir.
  • AZ'ler arası veri transferi: her yönde GB başına ücretlidir; konuşkan servisler AZ'ler arasında çok veri taşır.
  • Genel IPv4 adresi: Şubat 2024'ten beri her genel IPv4 adresi saatlik ücretlidir (0,005 USD).
  • CloudWatch Logs: yüksek hacimli debug logu alım ücretiyle pahalıya patlar.
  • Boşta kalan kaynaklar: unutulmuş EBS diskleri, snapshot'lar, ölçeği küçültülmemiş ortamlar.

Sorular (20)

01BaşlangıçTahminiregionazyuksek-erisilebilirlik

Region ve Availability Zone nedir? Bir servisi neden birden çok AZ'ye yayarsın?

02BaşlangıçTahminiiamrolepolicyen-az-yetki

IAM'de user, role ve policy arasındaki fark nedir? Uygulama AWS'ye nasıl erişmeli?

03BaşlangıçTahminivpcsubnetnat-gatewayinternet-gateway

Public ve private subnet arasındaki fark nedir? Veritabanı hangisinde durur?

04BaşlangıçTahminisecurity-groupnaclguvenlik-duvari

Security group ile Network ACL arasındaki fark nedir?

05BaşlangıçTahminiec2ecsfargateeks

Bir Spring Boot servisini EC2, ECS/Fargate, EKS ya da Lambda'da çalıştırmak arasında nasıl seçim yaparsın?

06BaşlangıçTahminis3nesne-deposusifrelemepresigned-url

S3 nedir, dosya sisteminden farkı ne? Güvenli kullanım için nelere dikkat edersin?

07BaşlangıçTahminicloudwatchx-raycloudtrailgozlemlenebilirlik

CloudWatch, X-Ray ve CloudTrail ne işe yarar?

08BaşlangıçTahminialbnlbload-balancerhealth-check

ALB ile NLB arasındaki fark nedir? Health check neden önemli?

09OrtaTahminirdsauroramulti-azread-replica

RDS Multi-AZ ile read replica arasındaki fark nedir? Aurora ne zaman tercih edilir?

10OrtaTahminisqssnseventbridgekinesis

SQS, SNS, EventBridge ve Kinesis arasında nasıl seçim yaparsın?

11OrtaTahminisqsvisibility-timeoutdlqidempotency

SQS'te visibility timeout ve DLQ nasıl çalışır? Mesajın iki kez işlenmesini nasıl önlersin?

12OrtaTahminilambdacold-startsnapstartjava

Lambda'da cold start nedir? Java ile Lambda kullanırken nelere dikkat edersin?

13OrtaTahminisecrets-managerparameter-storekmssecret-yonetimi

Secret'ları AWS'de nerede tutarsın? Secrets Manager, Parameter Store ve KMS arasındaki fark nedir?

14OrtaTahminimimariecsrdsalb

Bir Spring Boot servisini AWS'de uçtan uca nasıl çalıştırırsın? Temel mimariyi anlat.

15OrtaTahminiauto-scalingsqstarget-trackingolcekleme

Kuyruktan iş tüketen bir servisi nasıl ölçeklersin?

16OrtaTahminis3presigned-urldosya-yuklemeguvenlik

Kullanıcıların büyük dosyaları güvenli şekilde yüklemesi için S3 presigned URL akışını nasıl kurarsın?

17İleriTahminioidcstsassume-rolecross-account

CI/CD pipeline'ı AWS'ye nasıl güvenli erişir? Cross-account erişim nasıl kurulur?

18İleriTahminidynamodbpartition-keygsiidempotency

DynamoDB'de tabloyu nasıl modellersin? Hot partition nedir, idempotency nasıl sağlanır?

19İleriTahminiyuksek-erisilebilirlikfelaket-kurtarmartorpo

Yüksek erişilebilir bir sistemi AWS'de nasıl tasarlarsın? RTO ve RPO kararı mimariyi nasıl etkiler?

20İleriTahminimaliyetnat-gatewayveri-transferifinops

AWS faturası beklenenden yüksek geldi. Nerelere bakarsın, nasıl düşürürsün?

Çoktan seçmeli (12)

01Başlangıç

Bir ECS servisinin S3'e erişmesi için en doğru yöntem hangisidir?

Tek doğru cevap var.

02Başlangıç

Security group için hangisi doğrudur?

Tek doğru cevap var.

03Başlangıç

Private subnet'teki bir uygulama sunucusu internetteki bir API'yi nasıl çağırır?

Tek doğru cevap var.

04Başlangıç

Sürekli trafik alan, gecikmeye hassas bir Spring Boot REST API'si için en uygun başlangıç seçeneği genelde hangisidir?

Tek doğru cevap var.

05Orta

RDS Multi-AZ (klasik instance dağıtımı) için hangileri doğrudur?

Birden fazla doğru olabilir.

06Orta

SQS standard kuyruk için hangileri doğrudur?

Birden fazla doğru olabilir.

07Orta

Bir olayı bildirim, fraud ve raporlama servislerinin bağımsız olarak işlemesi gerekiyor. Hangi desen en uygundur?

Tek doğru cevap var.

08Orta

Java ile yazılmış bir Lambda fonksiyonunda cold start süresini azaltmak için hangileri işe yarar?

Birden fazla doğru olabilir.

09Orta

Private subnet'teki servislerin S3'e yaptığı yoğun trafik NAT gateway maliyetini artırıyor. En doğrudan çözüm hangisidir?

Tek doğru cevap var.

10İleri

GitHub Actions'tan OIDC ile üstlenilen bir prod deploy role'ünün trust policy'si için hangileri doğru uygulamalardır?

Birden fazla doğru olabilir.

11İleri

DynamoDB'de aynı transferId ile gelen tekrarlı isteklerin ikinci kez kayıt oluşturmasını önlemenin doğru yolu hangisidir?

Tek doğru cevap var.

12İleri

Bir geliştirici yanlışlıkla production tablosundan kayıt sildi. Aşağıdakilerden hangisi veriyi geri getirmeye yardımcı OLMAZ?

Tek doğru cevap var.

Kaynaklar

  • AWS Documentation: Regions and Availability Zones; AWS Well-Architected Framework (Reliability, Security, Cost Optimization)
  • AWS Lambda Developer Guide: Lambda quotas; Improving startup performance with Lambda SnapStart
  • AWS What's New (Ağustos 2025): Amazon SQS increases maximum message payload size to 1 MiB
  • AWS What's New (Kasım 2024): AWS Lambda now supports SnapStart for Python and .NET functions
  • Amazon SQS Developer Guide: visibility timeout, dead-letter queues; AWS Lambda ile SQS kullanımı
  • Amazon VPC User Guide: security groups, network ACLs, NAT gateways, gateway endpoints
  • Amazon RDS ve Aurora User Guide: Multi-AZ deployments, read replicas
  • Amazon DynamoDB Developer Guide: partition key design, condition expressions
  • AWS IAM User Guide: policy evaluation logic; GitHub Actions için OIDC
  • AWS VPC fiyatlandırması ve genel IPv4 ücretlendirmesi (Şubat 2024'ten itibaren); güncel fiyat için aws.amazon.com/vpc/pricing
  • Kitap Bölüm 13 (saga, outbox ve idempotency), Bölüm 14 (dayanıklılık), Bölüm 15 (Kubernetes ve teslimat), Bölüm 21 (DLQ), Bölüm 23 (loglama ve tracing)