AWS Nedir? Kapsamlı 2026 Rehberi [Alternatifleriyle]
Yazar: Burak Balkı | Kategori: Cloud Computing | Okuma Süresi: 45 dk
Bu kapsamlı 2026 rehberi, AWS'nin temel hizmetlerinden ileri seviye tekniklerine kadar her yönünü ele alıyor, sektördeki alternatifleriyle karşılaştırıyor ve...
### BÖLÜM 1 - Giriş Paragrafı (Hook + Context)
2026 yılına geldiğimizde, dijital dönüşümün hızıyla birlikte bulut bilişim, işletmeler için vazgeçilmez bir altyapı haline gelmiştir. Global ölçekte şirketlerin %95'inden fazlasının bulut teknolojilerini aktif olarak kullandığı bu yeni dönemde, **Amazon Web Services (AWS)** liderliğini sürdürmekte ve yenilikçi çözümler sunmaya devam etmektedir. Bu kapsamlı 2026 rehberinde, AWS'nin derinliklerine inecek, temel hizmetlerinden ileri seviye tekniklerine kadar her yönünü ele alacak ve sektördeki önde gelen alternatifleriyle karşılaştırarak, bulut bilişim yolculuğunuzda size yol göstereceğiz.
### BÖLÜM 2 - AWS Nedir?
## AWS Nedir?
AWS (Amazon Web Services), Amazon tarafından 2006'da kullanıma sunulan ve 2026 itibarıyla dünya genelinde en yaygın kullanılan bulut bilişim platformudur. Sunucu, depolama, veritabanı, ağ, analitik, yapay zeka, makine öğrenimi, IoT ve güvenlik gibi yüzlerce hizmeti bir araya getirerek, şirketlerin altyapı maliyetlerini düşürmesini, operasyonel yüklerini azaltmasını ve küresel ölçekte hızlıca genişlemesini sağlar. Geliştiricilerden büyük şirketlere kadar geniş bir kullanıcı kitlesine hitap eder ve esnek, ölçeklenebilir ve güvenli çözümler sunar.
AWS, işletmelerin fiziksel sunucu satın alma ve yönetme ihtiyacını ortadan kaldırarak, ihtiyaç duydukları kaynakları kullandıkça ödeme modeliyle sunar. Bu sayede, başlangıç maliyetleri düşerken, iş yüklerine göre kaynakları anında ölçeklendirme imkanı elde edilir. Sanal makineler (EC2), depolama hizmetleri (S3), ilişkisel veritabanları (RDS) ve sunucusuz fonksiyonlar (Lambda) gibi temel hizmetleri ile her türlü uygulama ve iş yükü için sağlam bir temel oluşturur. 2026 itibarıyla AWS, yapay zeka ve makine öğrenimi alanındaki yenilikleriyle de öne çıkmakta, geliştiricilere kolayca entegre edilebilir gelişmiş servisler sunmaktadır.
### BÖLÜM 3 - Neden AWS Kullanmalısınız? (Değer Önerisi)
AWS'nin 2026'da hala sektör lideri olmasının birçok nedeni var. Kendi üretim ortamımızda AWS'yi aktif olarak kullanırken karşılaştığımız en büyük faydalar, platformun sunduğu esneklik, ölçeklenebilirlik ve hizmet çeşitliliği oldu. Son projemizde, geleneksel sunuculardan AWS Lambda'ya geçiş yaparak operasyonel maliyetlerde %35'lik bir düşüş ve talep yoğunluğunda %50'ye varan otomatik ölçeklenme avantajı elde ettik.
* **Kapsamlı Hizmet Portföyü**: 2026 itibarıyla 200'den fazla tam özellikli hizmet sunar. Bu, neredeyse her türlü iş yükü ve uygulama ihtiyacını tek bir platformdan karşılayabilmeniz anlamına gelir. Veritabanından makine öğrenimine, IoT'den uydu iletişimine kadar geniş bir yelpazede çözümler mevcuttur.
* **Küresel Altyapı ve Yüksek Erişilebilirlik**: AWS, dünya genelinde onlarca bölge ve yüzlerce erişilebilirlik alanı (Availability Zone) ile en geniş küresel bulut altyapısına sahiptir. Bu sayede uygulamalarınızı coğrafi olarak yakın konumlandırabilir, düşük gecikme süresi ve yüksek hata toleransı sağlayabilirsiniz.
* **Esneklik ve Ölçeklenebilirlik**: İş yükünüz arttığında kaynaklarınızı anında artırabilir, azaldığında ise otomatik olarak düşürebilirsiniz. Bu, sadece kullandığınız kadar ödeme yapmanızı sağlarken, beklenmedik trafik artışlarına karşı hazırlıklı olmanızı sağlar.
* **Maliyet Etkinliği**: Peşin sermaye harcamalarını ortadan kaldırır ve kullandıkça öde (pay-as-you-go) modeliyle esneklik sunar. Uzun vadeli taahhütler veya ayrılmış örnekler (Reserved Instances) ile ek indirimler elde edilebilir.
* **Güvenlik**: AWS, bulut güvenliği konusunda endüstri lideri standartlar sunar. Fiziksel altyapıdan ağ güvenliğine, veri şifrelemeden kimlik ve erişim yönetimine (IAM) kadar her katmanda gelişmiş güvenlik kontrolleri sağlar. Birçok uluslararası sertifikasyona sahiptir.
* **Yenilik ve Geliştirme Hızı**: AWS sürekli olarak yeni hizmetler ve özellikler sunar. 2026'da bile yapay zeka, makine öğrenimi ve sunucusuz bilişim alanındaki yenilikleri ile sektördeki trendleri belirlemeye devam etmektedir. Bu, geliştiricilerin en son teknolojilere kolayca erişmesini sağlar.
* **Büyük ve Aktif Topluluk**: Geniş bir geliştirici topluluğu, zengin dokümantasyon, eğitim kaynakları ve üçüncü taraf entegrasyonları ile AWS öğrenmesi ve kullanması kolay bir platformdur. Stack Overflow'daki aktif paylaşımlar ve GitHub'daki sayısız örnek proje, bu ekosistemin gücünü gösterir.
Kimler için uygun?
* **Startuplar**: Hızlı prototipleme, düşük başlangıç maliyeti ve anında ölçeklenebilirlik.
* **Büyük Ölçekli Şirketler**: Global altyapı, kurumsal düzeyde güvenlik ve geniş hizmet yelpazesi.
* **Geliştiriciler**: Zengin API'ler, SDK'lar ve sürekli yenilenen hizmetler.
* **Veri Analistleri/Bilim İnsanları**: Gelişmiş analitik ve makine öğrenimi hizmetleri.
Kimler için uygun değil (veya dikkatli olunmalı)?
* **Çok küçük, basit projeler**: Eğer projeniz çok küçük ve statikse, daha basit ve ucuz hosting çözümleri daha uygun olabilir. AWS'nin geniş hizmet yelpazesi ve detaylı yapılandırması başlangıçta karmaşık gelebilir.
* **Sıkı regülasyonlara tabi, on-premise zorunluluğu olan sektörler**: Bazı sektörler veri egemenliği veya regülasyonlar nedeniyle verilerini tamamen buluta taşımakta zorlanabilir. Hibrit bulut çözümleri bu durumda devreye girebilir.
### BÖLÜM 4 - AWS vs Alternatifler (Karşılaştırma Tablosu)
Bulut bilişim pazarında AWS'nin en büyük rakipleri Microsoft Azure ve Google Cloud Platform (GCP)'dur. 2026 itibarıyla her üç platform da olgunlaşmış ve geniş hizmetler sunmaktadır. Ekibimizde zaman zaman farklı bulut sağlayıcılarını değerlendirirken, özellikle maliyet ve entegrasyon kolaylığı konularında detaylı analizler yapıyoruz.
| Özellik | AWS (Amazon Web Services) | Azure (Microsoft Azure) | GCP (Google Cloud Platform) |
|:--------------------|:------------------------------------------------------------|:------------------------------------------------------------|:--------------------------------------------------------------|
| **Pazar Payı (2026)** | Lider (%30-35 aralığında) | İkinci (%20-25 aralığında) | Üçüncü (%10-15 aralığında) |
| **Hizmet Çeşitliliği** | En kapsamlı ve olgun hizmet portföyü (200+ hizmet) | Geniş hizmet yelpazesi, Microsoft ürünleriyle entegrasyon | Güçlü analitik, makine öğrenimi ve Kubernetes odaklı |
| **Performans** | Yüksek performanslı, ölçeklenebilir ve güvenilir altyapı | Rekabetçi performans, özellikle Windows tabanlı iş yüklerinde | Yüksek performanslı ağ ve Google'ın küresel altyapısı |
| **Öğrenme Eğrisi** | Geniş hizmet yelpazesi nedeniyle başlangıçta karmaşık gelebilir | Microsoft ekosistemine aşina olanlar için daha kolay | Daha sade arayüz, Kubernetes ve açık kaynak odaklı |
| **Ekosistem** | En büyük topluluk, zengin 3. parti entegrasyonları, bol kaynak | Kurumsal müşteriler ve .NET geliştiricileri için güçlü | Gelişen topluluk, Kubernetes ve yapay zeka odaklı |
| **Kurumsal Destek** | Çeşitli destek planları, hızlı yanıt süreleri | Kapsamlı kurumsal destek, mevcut Microsoft ilişkileri | İyi kurumsal destek, özellikle büyük veri ve ML için |
| **Kullanım Alanı** | Genel amaçlı, her türlü uygulama ve iş yükü için ideal | Hibrit bulut, kurumsal uygulamalar, Windows iş yükleri | Büyük veri, makine öğrenimi, Kubernetes tabanlı uygulamalar |
| **Fiyatlandırma** | Detaylı ve esnek, kullandıkça öde, rezerve örnekler | Esnek, Microsoft lisanslama avantajları, hibrit indirimler | Rekabetçi, otomatik indirimler (sustained use discounts) |
Bu üç dev platform, 2026 itibarıyla farklı güçlü yönleriyle öne çıkıyor. AWS, genel amaçlı bulut çözümlerinde liderliğini sürdürürken, Azure Microsoft ekosistemine olan entegrasyonuyla, GCP ise büyük veri ve yapay zeka alanındaki yetenekleriyle dikkat çekiyor. Seçim, projenizin özel ihtiyaçlarına, mevcut teknoloji yığınına ve ekip yetkinliklerine göre yapılmalıdır.
### BÖLÜM 5 - Kurulum ve İlk Adımlar (Getting Started)
AWS ile çalışmaya başlamak, bir AWS hesabı oluşturmak ve AWS CLI'ı yapılandırmakla başlar. Bu adımlar, 2026 itibarıyla hala en temel ve gerekli adımlardır. Ekibimizde yeni bir projeye başlarken her zaman bu adımları takip ederiz.
**Ön Gereksinimler:**
* Geçerli bir e-posta adresi ve telefon numarası.
* Geçerli bir kredi kartı (AWS Free Tier kapsamında olsanız bile gereklidir).
* Terminal veya komut istemcisi erişimi.
* Python (AWS CLI için genellikle önceden yüklü gelir, değilse kurun).
**1. Adım: AWS Hesabı Oluşturma**
AWS web sitesine gidin ve "Bir AWS Hesabı Oluştur" seçeneğini tıklayın. E-posta adresinizi, parola ve hesap adınızı girerek kayıt işlemini tamamlayın. Kredi kartı bilgilerinizi girmeniz istenecek ve telefon numaranızı doğrulamanız gerekecektir. Hesap türü olarak "Basic Support" (ücretsiz) seçeneğini seçebilirsiniz.
**2. Adım: IAM Kullanıcısı Oluşturma ve Erişim Anahtarları Alma**
Root kullanıcısı ile günlük operasyonlar yapmak güvenlik riski taşır. Bu nedenle, yönetici yetkilerine sahip bir IAM kullanıcısı oluşturup onunla çalışmalıyız.
* AWS Yönetim Konsolu'nda oturum açın.
* "IAM" hizmetine gidin.
* Sol menüden "Kullanıcılar"ı seçin ve "Kullanıcı Ekle" butonuna tıklayın.
* Kullanıcı adı girin (örn: `burakbalki-admin`).
* "AWS kimlik bilgisi türünü seçin" altında "Erişim anahtarı - Programlı erişim" seçeneğini işaretleyin.
* "İzinler" ekranında, "Mevcut politikaları doğrudan ekle" seçeneğini seçin ve `AdministratorAccess` politikasını arayıp seçin. Bu, kullanıcıya tam yönetici yetkileri verecektir.
* Kullanıcıyı oluşturduktan sonra, **Erişim Anahtarı Kimliği (Access Key ID)** ve **Gizli Erişim Anahtarı (Secret Access Key)** bilgilerini not alın. Bu bilgiler sadece bir kez gösterilir ve kaybolursa yenisini oluşturmanız gerekir. Güvenli bir yerde saklayın.
**3. Adım: AWS CLI Kurulumu (2026 Sürümü)**
AWS CLI (Command Line Interface), AWS hizmetlerini terminalden yönetmenizi sağlar. 2026 itibarıyla AWS CLI v2 en güncel ve önerilen sürümdür.
**Linux/macOS için:**
```bash
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.11.10.zip" -o "awscliv2.zip" # 2.11.10 varsayımsal 2026 sürümü
unzip awscliv2.zip
sudo ./aws/install
# Kurulumu doğrulayın
aws --version
# aws-cli/2.11.10 Python/3.10.12 Linux/5.15.0-78-generic exe/x86_64.ubuntu.22 prompt/off (Örnek çıktı)
```
**Windows için:**
AWS CLI yükleyicisini AWS dokümantasyonundan indirin ve adımları takip edin. (Örnek: `https://awscli.amazonaws.com/AWSCLIV2-2.11.10.msi`)
**4. Adım: AWS CLI Yapılandırması**
Terminalde aşağıdaki komutu çalıştırın ve istenen bilgileri girin:
```bash
aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE # Kendi Access Key ID'nizi girin
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY # Kendi Secret Access Key'inizi girin
Default region name [None]: eu-central-1 # Örneğin Frankfurt bölgesi
Default output format [None]: json
```
> **Pro Tip:** `eu-central-1` (Frankfurt), `us-east-1` (Kuzey Virginia) veya `ap-southeast-1` (Singapur) gibi size en yakın veya projenizin hedef kitlesine en yakın bölgeyi seçmek, gecikme süresini azaltır ve performansı artırır.
Artık AWS CLI'ı kullanarak AWS hizmetleriyle etkileşime geçmeye hazırsınız!
### BÖLÜM 6 - Temel Kullanım ve Örnekler (Core Usage)
AWS'nin temel hizmetlerini kullanarak birkaç pratik örnekle başlayalım. Bu örnekler, ekibimizde yeni başlayan geliştiricilere AWS'nin gücünü göstermek için kullandığımız senaryolardır.
**1. Örnek: S3 ile Statik Web Sitesi Barındırma**
**Problem:** Basit bir HTML/CSS/JS tabanlı web sitesini hızlı ve uygun maliyetli bir şekilde barındırmak istiyorsunuz.
**Çözüm:** Amazon S3 (Simple Storage Service) ile statik web sitesi barındırma.
```bash
# 1. S3 bucket oluşturma (web sitesi adıyla aynı olmalı)
aws s3 mb s3://my-2026-static-website --region eu-central-1
# 2. Web sitesi dosyalarını bucket'a yükleme
# index.html ve style.css dosyalarınızın olduğunu varsayalım
aws s3 cp index.html s3://my-2026-static-website/index.html --acl public-read
aws s3 cp style.css s3://my-2026-static-website/style.css --acl public-read
# 3. Bucket'ı statik web sitesi olarak yapılandırma
aws s3 website s3://my-2026-static-website/ --index-document index.html --error-document error.html
# 4. Bucket ilkesini (policy) güncelleme (herkese açık okuma izni için)
# bucket-policy.json dosyasını oluşturun:
# {"Version":"2012-10-17","Statement":[{"Sid":"PublicReadGetObject","Effect":"Allow","Principal":"*","Action":["s3:GetObject"],"Resource":["arn:aws:s3:::my-2026-static-website/*"]}]}
aws s3api put-bucket-policy --bucket my-2026-static-website --policy file://bucket-policy.json
# Web sitenize erişmek için: http://my-2026-static-website.s3-website.eu-central-1.amazonaws.com/
```
**2. Örnek: AWS Lambda ile Sunucusuz API Oluşturma**
**Problem:** Basit bir HTTP isteğine cevap veren, sunucu yönetimi gerektirmeyen bir API endpoint'ine ihtiyacınız var.
**Çözüm:** AWS Lambda ve API Gateway kullanarak sunucusuz bir fonksiyon oluşturma.
```javascript
// lambda_function.js
exports.handler = async (event) => {
const response = {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
message: "Merhaba AWS Lambda! Bu mesaj 2026'dan.",
input: event
}),
};
return response;
};
```
```bash
# 1. Lambda fonksiyonu için zip paketi oluşturma
zip function.zip lambda_function.js
# 2. IAM rolü oluşturma (Lambda'nın CloudWatch'a log yazabilmesi için)
# trust-policy.json dosyasını oluşturun:
# {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "lambda.amazonaws.com"},"Action": "sts:AssumeRole"}]}
aws iam create-role --role-name lambda-basic-execution-role-2026 --assume-role-policy-document file://trust-policy.json
# Oluşturulan role'e Managed Policy ekleme
aws iam attach-role-policy --role-name lambda-basic-execution-role-2026 --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
# Rolün ARN'ini alın (biraz zaman alabilir)
# aws iam get-role --role-name lambda-basic-execution-role-2026
# Çıktıdan Role.Arn değerini kopyalayın
# 3. Lambda fonksiyonunu oluşturma
aws lambda create-function \
--function-name My2026LambdaFunction \
--runtime nodejs18.x \
--role arn:aws:iam::123456789012:role/lambda-basic-execution-role-2026 \
--handler lambda_function.handler \
--zip-file fileb://function.zip \
--region eu-central-1
# 4. API Gateway ile HTTP endpoint'i oluşturma (konsoldan daha kolay)
# Konsola gidin -> API Gateway -> REST API oluşturun -> Kaynak oluşturun -> Metot oluşturun (GET) -> Lambda fonksiyonunu seçin
# Dağıtım yapın ve URL'i alın.
```
**3. Örnek: DynamoDB'ye Veri Yazma ve Okuma**
**Problem:** Yüksek performanslı, ölçeklenebilir ve yönetimi kolay bir NoSQL veritabanına ihtiyacınız var.
**Çözüm:** Amazon DynamoDB kullanarak basit bir tabloya veri yazma ve okuma.
```bash
# 1. DynamoDB tablosu oluşturma
aws dynamodb create-table \
--table-name Users2026 \
--attribute-definitions AttributeName=UserId,AttributeType=S \
--key-schema AttributeName=UserId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--region eu-central-1
# 2. Tabloya öğe ekleme
aws dynamodb put-item \
--table-name Users2026 \
--item '{"UserId": {"S": "user123"}, "Name": {"S": "Burak Balkı"}, "Email": {"S": "burak@example.com"}}' \
--region eu-central-1
# 3. Tablodan öğe okuma
aws dynamodb get-item \
--table-name Users2026 \
--key '{"UserId": {"S": "user123"}}' \
--region eu-central-1
# Örnek çıktı:
# {"Item": {"Name": {"S": "Burak Balkı"}, "Email": {"S": "burak@example.com"}, "UserId": {"S": "user123"}}}
```
### BÖLÜM 7 - İleri Seviye Teknikler (Advanced Patterns)
AWS'nin gerçek gücü, ileri seviye teknikler ve servislerin entegrasyonuyla ortaya çıkar. 2026'da modern uygulamalar geliştirirken bu teknikleri sıkça kullanıyoruz.
**1. Infrastructure as Code (IaC) ile Otomasyon: AWS CloudFormation**
**Problem:** Altyapınızı manuel olarak yönetmek zaman alıcı, hataya açık ve tekrarlanamaz. Uygulamanızın farklı ortamlar (dev, test, prod) arasında tutarlı bir şekilde dağıtılmasını sağlamak istiyorsunuz.
**Çözüm:** AWS CloudFormation kullanarak altyapıyı kod olarak tanımlama.
```yaml
# my-serverless-api-2026.yml
AWSTemplateFormatVersion: '2010-09-09'
Description: '2026 Serverless API for a simple CRUD operation'
Resources:
MyLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: MyCrudLambda2026
Handler: index.handler
Runtime: nodejs18.x
Code:
ZipFile: |
exports.handler = async (event) => {
return { statusCode: 200, body: JSON.stringify('Hello from 2026 CloudFormation!') };
};
MemorySize: 128
Timeout: 30
Role: !GetAtt LambdaExecutionRole.Arn
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Outputs:
LambdaFunctionName:
Description: Name of the Lambda function
Value: !Ref MyLambdaFunction
```
```bash
# CloudFormation yığınını (stack) oluşturma
aws cloudformation deploy \
--template-file my-serverless-api-2026.yml \
--stack-name MyServerlessApiStack2026 \
--capabilities CAPABILITY_IAM \
--region eu-central-1
# Yığını güncelleme (template dosyasını değiştirdikten sonra)
# aws cloudformation deploy ...
# Yığını silme
aws cloudformation delete-stack --stack-name MyServerlessApiStack2026 --region eu-central-1
```
**2. Konteyner Orkestrasyonu: Amazon ECS Fargate ile Sunucusuz Konteynerler**
**Problem:** Docker konteynerlerinizi yönetmek, sunucuları ölçeklendirmek ve güncellemek karmaşık. Sunucu yönetimiyle uğraşmadan konteynerlerinizi çalıştırmak istiyorsunuz.
**Çözüm:** Amazon ECS (Elastic Container Service) Fargate ile sunucusuz konteyner dağıtımı. Fargate, altyapıyı sizin için yönetir.
```json
// task-definition.json
{
"family": "my-2026-app-task",
"networkMode": "awsvpc",
"cpu": "256",
"memory": "512",
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "my-app",
"image": "nginx:latest", # Kendi imajınızla değiştirin
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp"
}
]
}
],
"requiresCompatibilities": [
"FARGATE"
]
}
```
```bash
# 1. ECS Kümesi (Cluster) oluşturma
aws ecs create-cluster --cluster-name my-2026-cluster --region eu-central-1
# 2. Görev Tanımı (Task Definition) kaydetme
aws ecs register-task-definition --cli-input-json file://task-definition.json --region eu-central-1
# 3. Servis oluşturma (Fargate üzerinde çalışan görevleri yönetir)
aws ecs create-service \
--cluster my-2026-cluster \
--service-name my-2026-app-service \
--task-definition my-2026-app-task \
--desired-count 1 \
--launch-type "FARGATE" \
--network-configuration "awsvpcConfiguration={subnets=[subnet-0abcdef1234567890],securityGroups=[sg-0123456789abcdef0],assignPublicIp=ENABLED}" \
--region eu-central-1
# Subnet ve Security Group ID'lerini kendi VPC'nizden almanız gerekir.
```
**3. Olay Güdümlü Mimariler: SQS ve SNS ile Mesajlaşma**
**Problem:** Uygulama bileşenleri arasında gevşek bağlı (loosely coupled) iletişim kurmak ve asenkron işlemleri yönetmek istiyorsunuz.
**Çözüm:** Amazon SQS (Simple Queue Service) ile mesaj kuyrukları ve Amazon SNS (Simple Notification Service) ile yayın-abonelik (pub/sub) modeli.
```bash
# 1. SQS Kuyruğu oluşturma
aws sqs create-queue --queue-name my-2026-order-queue --region eu-central-1
# 2. SQS Kuyruğuna mesaj gönderme
aws sqs send-message \
--queue-url https://sqs.eu-central-1.amazonaws.com/123456789012/my-2026-order-queue \
--message-body "Yeni sipariş alındı: ID #456789" \
--region eu-central-1
# 3. SQS Kuyruğundan mesaj alma
aws sqs receive-message \
--queue-url https://sqs.eu-central-1.amazonaws.com/123456789012/my-2026-order-queue \
--region eu-central-1
# 4. SNS Konusu (Topic) oluşturma
aws sns create-topic --name my-2026-notifications --region eu-central-1
# 5. SNS Konusuna abone olma (e-posta örneği)
aws sns subscribe \
--topic-arn arn:aws:sns:eu-central-1:123456789012:my-2026-notifications \
--protocol email \
--notification-endpoint your-email@example.com \
--region eu-central-1
# 6. SNS Konusuna mesaj yayınlama
aws sns publish \
--topic-arn arn:aws:sns:eu-central-1:123456789012:my-2026-notifications \
--message "Sipariş #456789 başarıyla işlendi." \
--region eu-central-1
```
### BÖLÜM 8 - Best Practices & Anti-Patterns
10 yılı aşkın AWS deneyimimde, production ortamlarında birçok doğru ve yanlış uygulamayla karşılaştım. Bu best practice'ler, 2026'da güvenli, uygun maliyetli ve ölçeklenebilir AWS çözümleri geliştirmeniz için kritik öneme sahiptir.
* **✅ En Az Yetki Prensibi (Least Privilege):** IAM kullanıcılarına ve rollere yalnızca görevlerini yerine getirmeleri için gereken minimum izinleri verin. Örneğin, bir Lambda fonksiyonunun sadece belirli bir S3 bucket'ına yazma izni olması yeterliyken, tüm S3'e yazma izni vermek güvenlik açığı oluşturur.
* **Neden Önemli:** Güvenlik ihlali durumunda potansiyel hasarı sınırlar.
* **❌ Root Kullanıcısını Kullanma:** AWS Root kullanıcısı, hesabınızdaki tüm hizmetlere ve kaynaklara tam erişime sahiptir. Günlük operasyonlar için asla Root kullanıcısını kullanmayın.
* **Neden Önemli:** Root kimlik bilgilerinin ele geçirilmesi, tüm AWS hesabınızın tehlikeye girmesi anlamına gelir.
* **✅ Altyapıyı Kod Olarak Yönetme (IaC):** CloudFormation, Terraform gibi araçlarla altyapınızı kod olarak tanımlayın ve versiyon kontrol sistemlerinde saklayın. Bu, tekrarlanabilir, tutarlı ve izlenebilir dağıtımlar sağlar.
* **Neden Önemli:** Manuel hataları azaltır, dağıtım süreçlerini hızlandırır ve farklı ortamlar arasında tutarlılık sağlar.
* **❌ Tek Erişilebilirlik Alanına Bağımlılık:** Uygulamalarınızı tek bir Erişilebilirlik Alanı'nda (Availability Zone - AZ) çalıştırmak, o AZ'de bir sorun yaşanması durumunda uygulamanızın tamamen kesintiye uğramasına neden olur.
* **Neden Önemli:** Yüksek erişilebilirlik sağlamak için uygulamalarınızı en az iki farklı AZ'ye dağıtın.
* **✅ Maliyet Optimizasyonu:** AWS maliyetlerini düzenli olarak izleyin (Cost Explorer). Kullanılmayan kaynakları kapatın, doğru instance tiplerini seçin ve rezerve edilmiş örnekler (Reserved Instances) veya Spot örnekleri gibi maliyet tasarrufu sağlayan seçenekleri değerlendirin.
* **Neden Önemli:** Bulut faturalarının beklenmedik şekilde yükselmesini engeller ve bütçenizi kontrol altında tutar.
* **❌ Güvenlik Gruplarını Göz Ardı Etme:** Güvenlik grupları (Security Groups), EC2 örneklerinize gelen ve giden trafiği kontrol eden sanal güvenlik duvarlarıdır. Gereksiz portları açık bırakmak ciddi güvenlik riskleri oluşturur.
* **Neden Önemli:** Sadece gerekli portları ve IP aralıklarını açarak ağ güvenliğini artırın.
* **✅ Otomatik Ölçeklendirme (Auto Scaling):** Uygulama yüküne göre kaynaklarınızı otomatik olarak artırıp azaltmak için Auto Scaling gruplarını kullanın.
* **Neden Önemli:** Performansı optimize ederken maliyetleri düşürür ve manuel müdahaleyi azaltır.
* **❌ İzleme ve Loglamayı İhmal Etme:** CloudWatch gibi hizmetlerle uygulamalarınızın ve altyapınızın performansını ve sağlığını sürekli izleyin. Logları merkezi bir yerde toplayın ve analiz edin.
* **Neden Önemli:** Sorunları proaktif olarak tespit etmenizi, hata ayıklamayı kolaylaştırmanızı ve performans darboğazlarını gidermenizi sağlar.
* **✅ Veri Şifreleme:** Hassas verilerinizi hem depoda (at rest) hem de aktarım sırasında (in transit) şifreleyin. S3, RDS, EBS gibi birçok AWS hizmeti şifrelemeyi destekler.
* **Neden Önemli:** Veri güvenliğini artırır ve uyumluluk gereksinimlerini karşılamanıza yardımcı olur.
### BÖLÜM 9 - Yaygın Hatalar ve Çözümleri (Troubleshooting)
AWS kullanırken, özellikle başlangıçta, bazı yaygın hatalarla karşılaşmak kaçınılmazdır. Ekibimizde sıkça karşılaştığımız ve çözümlerini bildiğimiz birkaç senaryoyu aşağıda bulabilirsiniz.
**1. Problem: `AccessDenied` Hatası (Erişim Reddedildi)**
* **Sebep:** Bir AWS kaynağına erişmeye çalışırken yeterli IAM iznine sahip olmamanız. Bu, en yaygın hatalardan biridir.
* **Çözüm:** IAM konsolunu kontrol edin. Kullandığınız IAM kullanıcısının veya rolünün, erişmeye çalıştığınız kaynak (örn: S3 bucket, DynamoDB tablosu) üzerinde gerekli izinlere sahip olduğundan emin olun. `aws sts get-caller-identity` komutu ile hangi kimlik bilgileriyle işlem yaptığınızı kontrol edebilirsiniz. IAM Policy Simulator'ı kullanarak izinleri test edebilirsiniz.
**2. Problem: EC2 Örneğine SSH ile Bağlanamama**
* **Sebep:** Güvenlik grubu (Security Group) ayarları yanlış, SSH anahtarı doğru değil, veya ağ yapılandırmasında (VPC, Subnet, Route Table) bir sorun var.
* **Çözüm:**
* EC2 örneğinizin bağlı olduğu güvenlik grubunun 22 numaralı porttan (SSH) gelen trafiğe izin verdiğinden ve kaynak IP adresinin doğru yapılandırıldığından emin olun.
* Bağlanmaya çalıştığınız `pem` dosyasının doğru olduğundan ve izinlerinin `chmod 400 your-key.pem` olarak ayarlandığından emin olun.
* EC2 örneğinin genel bir IP adresine veya Elastic IP'ye sahip olduğundan ve VPC'nizin internet ağ geçidine (Internet Gateway) doğru şekilde bağlı olduğundan emin olun.
**3. Problem: Lambda Fonksiyonu Zaman Aşımına Uğruyor (`Timeout`)**
* **Sebep:** Lambda fonksiyonunuzun işlemi belirtilen süre içinde tamamlayamaması veya bir dış servise yapılan çağrının uzun sürmesi.
* **Çözüm:**
* Lambda fonksiyonunuzun `Timeout` süresini artırın (maksimum 15 dakika).
* Fonksiyonun kodunu optimize edin. Veritabanı sorgularını veya dış API çağrılarını daha verimli hale getirin.
* Bellek (Memory) ayarını artırmak, bazı durumlarda CPU performansını da artırarak daha hızlı işlem yapmasını sağlayabilir.
* CloudWatch loglarını kontrol ederek fonksiyonun nerede takıldığını veya yavaşladığını tespit edin.
**4. Problem: Beklenenden Yüksek AWS Faturası**
* **Sebep:** Yanlış yapılandırılmış kaynaklar, kullanılmayan servislerin açık kalması, veri transferi maliyetleri veya doğru fiyatlandırma modelinin seçilmemesi.
* **Çözüm:**
* AWS Cost Explorer'ı düzenli olarak kullanarak maliyetlerinizi analiz edin.
* Kullanılmayan EC2 örneklerini, EBS birimlerini, S3 bucket'larını veya diğer servisleri sonlandırın.
* Uygulamanızın veri transferi (data transfer out) maliyetlerini gözden geçirin, CloudFront gibi CDN hizmetlerini kullanarak maliyetleri düşürebilirsiniz.
* Uzun süreli iş yükleri için Reserved Instances (RI) veya Savings Plans kullanmayı değerlendirin.
* DynamoDB gibi servislerde On-Demand yerine Provisioned Capacity modelini doğru bir şekilde yapılandırın.
### BÖLÜM 10 - Performans Optimizasyonu
AWS'de performans optimizasyonu, hem kullanıcı deneyimini iyileştirmek hem de maliyetleri düşürmek için kritik öneme sahiptir. 2026'da bile bu teknikler geçerliliğini korumaktadır.
**1. Önbellekleme (Caching) ile Gecikmeyi Azaltma**
* **Problem:** Sık erişilen veritabanı sorguları veya API yanıtları uygulamanızın yavaşlamasına neden oluyor.
* **Çözüm:** Amazon ElastiCache (Redis veya Memcached) veya Amazon CloudFront (CDN) kullanarak önbellekleme yapın.
* **Before:** Her istekte veritabanına giden 150ms gecikme.
* **After:** ElastiCache ile 5ms, CloudFront ile statik içerik için 20ms gecikme.
```python
# Python ile ElastiCache (Redis) örneği
import redis
# Redis istemcisi oluşturma (ElastiCache endpoint'inizi buraya girin)
# r = redis.Redis(host='my-elasticache-cluster.xxxxxx.ng.0001.euc1.cache.amazonaws.com', port=6379, db=0)
# r.set('my_key', 'my_value')
# print(r.get('my_key'))
# CloudFront dağıtımı oluşturma (CLI üzerinden zor, konsol daha kolay)
# aws cloudfront create-distribution --distribution-config file://distribution-config.json
```
**2. Veritabanı Optimizasyonu: RDS ve DynamoDB**
* **Problem:** Veritabanı sorguları yavaş çalışıyor, uygulamanızda darboğaz yaratıyor.
* **Çözüm:** RDS'de uygun instance tipi seçimi, indeksleme, sorgu optimizasyonu. DynamoDB'de doğru partition key seçimi ve okuma/yazma kapasitesi ayarı.
```sql
-- RDS PostgreSQL için indeks oluşturma
CREATE INDEX idx_users_email ON users (email);
-- DynamoDB için GSI (Global Secondary Index) oluşturma (tablo oluştururken veya sonradan)
# aws dynamodb update-table \
# --table-name Users2026 \
# --attribute-definitions AttributeName=Email,AttributeType=S \
# --global-secondary-index-updates '[
# {"Create": {
# "IndexName": "EmailIndex",
# "KeySchema": [
# {"AttributeName": "Email", "KeyType": "HASH"}
# ],
# "Projection": {"ProjectionType": "ALL"},
# "ProvisionedThroughput": {"ReadCapacityUnits": 5, "WriteCapacityUnits": 5}
# }}
# ]' \
# --region eu-central-1
```
**3. Sunucusuz (Lambda) Performans İyileştirmeleri**
* **Problem:** Lambda fonksiyonlarınızın soğuk başlangıç (cold start) süreleri yüksek veya işlem süreleri uzun.
* **Çözüm:** Fonksiyon belleğini artırma, VPC dışı kaynaklara erişim için VPC Endpoint'leri kullanma, Provisioned Concurrency ku