🧭 Giriş
Serverless mimari, altyapı yönetimini tamamen bulut sağlayıcısına devrederek geliştiricilerin sadece uygulama mantığına odaklanmasını sağlar.\ Bu rehberde, otomasyon odaklı bir serverless yapının nasıl planlanacağı ve hayata geçirileceğini adım adım göstereceğiz.
🔧 Ön Gereksinimler
- AWS, Azure veya GCP hesaplarından biri
- Temel CLI bilgisi (örnek:
aws,az,gcloud) - JSON/YAML yapılarını okuyabilme
- Basit bir kod editörü (VS Code önerilir)
🧩 1. Adım: Serverless Otomasyon Nedir?
Serverless otomasyon, olay (event) tabanlı işlemlerin altyapısız (no-server management) biçimde yürütülmesidir.\ Genellikle şu durumlarda tercih edilir: - Cron benzeri zamanlanmış görevler\
- Dosya yükleme sonrası işleme\
- API tetikleyicileri\
- Mesaj kuyruğu veya olay akışlarına tepki
Örnek
Bir dosya S3'e yüklendiğinde otomatik olarak resize eden bir Lambda fonksiyonu.
⚙️ 2. Adım: Mimari Planlama
Otomasyon senaryosu için üç temel bileşen belirlenir: 1. Trigger (Olay) -- örn: S3 upload, HTTP isteği, mesaj kuyruğu\
- Function (İş mantığı) -- örn: Python veya Node.js kodu\
- Destination (Çıktı) -- örn: başka bir API, veritabanı, e-posta, log servisi
# Örnek AWS Lambda yapısı (serverless.yml)
functions:
resizeImage:
handler: handler.resize
events:
- s3:
bucket: uploads
event: s3:ObjectCreated:*
🧱 3. Adım: Uygulama Ortamının Hazırlanması
AWS için:
aws configure
aws iam create-role --role-name lambda-basic-execution
aws lambda create-function --function-name AutoResize --runtime python3.11 --role arn:aws:iam:::role/lambda-basic-execution --handler lambda_function.lambda_handler --zip-file fileb://function.zip
Azure için:
az functionapp create --resource-group myGroup --consumption-plan-location westeurope --runtime python --functions-version 4 --name myServerlessApp --storage-account mystorage
Google Cloud için:
gcloud functions deploy autoResize --runtime python311 --trigger-resource uploads --trigger-event google.storage.object.finalize
🧠 4. Adım: Otomasyon Senaryosu Tasarımı
Senaryo: "Dosya yüklendiğinde otomatik e-posta bildirimi gönder." 1.
Olay: uploads klasörüne dosya yükleme\
- Fonksiyon: metadata okur, e-posta hazırlar\
- Çıktı: Mail API (SendGrid / SES)
import boto3
import json
def lambda_handler(event, context):
s3 = boto3.client('s3')
ses = boto3.client('ses')
for record in event['Records']:
file_name = record['s3']['object']['key']
ses.send_email(
Source='notify@hmyn.net',
Destination={'ToAddresses': ['admin@hmyn.net']},
Message={
'Subject': {'Data': f'Yeni Dosya: {file_name}'},
'Body': {'Text': {'Data': f'{file_name} yüklendi.'}}
}
)
🧩 5. Adım: Gözlemleme ve Loglama
- AWS CloudWatch, Azure Monitor, GCP Logging kullanın\
- Başarısız görevleri yeniden denemek için alert mekanizması kurun\
- Gerekiyorsa Slack, Telegram veya e-posta bildirimleri ekleyin
aws logs tail /aws/lambda/AutoResize --follow
🚀 6. Adım: CI/CD ile Otomatik Dağıtım
Serverless projeler genelde Git tabanlıdır: - Kod push edildiğinde Lambda / Function güncellenir\
serverless.ymlveyaazure-pipelines.ymlile otomasyon sağlanır\- Önerilen araçlar: - GitHub Actions\
- AWS SAM CLI\
- Terraform (IaC ile otomasyon)
🧩 7. Adım: İleri Seviye Uygulamalar
- EventBridge veya Pub/Sub ile çoklu tetikleyici senaryolar\
- DynamoDB / Firestore ile durum takibi\
- n8n, Zapier veya Airflow ile harici iş akış entegrasyonu
🧩 8. Adım: Maliyet ve Performans Optimizasyonu
- Gereksiz fonksiyon çağrılarını engellemek için filtering kullanın\
- Hafif runtime (örneğin Python yerine Go) tercih edin\
- Tekrarlayan görevler için Step Functions veya Durable Functions düşünün
✅ Sonuç
Serverless otomasyon, manuel süreçleri minimuma indirerek hem zaman hem de kaynak tasarrufu sağlar.\ Bu rehberde öğrendiklerinizle artık: - Bir olaya dayalı fonksiyon yazabilir,\
- Serverless dağıtım yapabilir,\
- CI/CD entegrasyonu kurabilir hale geldiniz.