Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 4 - EventBridge ve SQS
Event-driven mimarileri CDK'ya taşıma. EventBridge, SQS, SNS entegrasyonları ve pattern'ler.
CDK migration'ımızın 5. haftası. 23 Lambda fonksiyonunu başarıyla taşımıştık, ama gerçek zorluk Lead DevOps Mühendisimiz ayrıldığını duyurduğunda başladı. "Database migration ile iyi şanslar," dedi ve 2.8M$ ARR SaaS platformumuzu destekleyen üç DynamoDB tablo adının yazdığı yapışkan notu verdi.
O yapışkan not 4 yıllık customer verisini, 180K kullanıcıyı ve sıfır dokümantasyonlu backup prosedürünü temsil ediyordu. Bu, tek bir kayıt kaybetmeden stateful infrastructure migrate etme hikayesi - ve production sistemlerdeki data dependency'leri hakkında öğrenilen acı dersler.
Seri Navigasyonu:
- Bölüm 1: Neden Geçiş Yapalım?
- Bölüm 2: CDK Environment Kurulumu
- Bölüm 3: Lambda Fonksiyonları ve API Gateway Migration
- Bölüm 4: Database ve Environment Management (bu yazı)
- Bölüm 5: Authentication, Authorization ve IAM
- Bölüm 6: Migration Stratejileri ve Best Practice'ler
Data Migration Felaketi (Neredeyse)
Teknik pattern'lere geçmeden önce, production tablolarımızı sadece "import" etmeye çalıştığımızda ne olduğunu paylaşayım.
Cuma Öğleden Sonra Table Import'u
15 Mart, 15:47. Ana user tablomuzu CDK yönetimine import etmek için güvenle cdk deploy komutunu çalıştırdım. Deployment başarılı oldu. Monitoring'imiz yeşil kaldı. Her şey mükemmel görünüyordu.
Pazartesi sabahı, 06:23. Slack bildirimleri patladı. User registration API'miz 500 hata veriyordu. Tablo gitmişti. Ulaşılmaz değil - tamamen silinmişti.
Kök neden: CDK tabloyu "import" etmeye çalıştı ama mevcut Serverless Framework CloudFormation template'ini çakışan olarak yorumladı. Yenisini oluşturmadan önce eski kaynağı sildi. Zero-downtime, zero-data oldu.
Etki: 4 saat downtime, acil point-in-time recovery ve deployment checklist'i "takip etme" hakkında çok rahatsız edici bir all-hands toplantısı.
Ders: Production'da explicit retention policy'ler ve staging'de rehearsal olmadan import'lara asla güvenmeyin.
Gerçekten İşe Yarayan DynamoDB Migration Stratejileri
Güvenli Table Import Pattern'i
Production migration'ları için şimdi kullandığımız battle-tested yaklaşım:
Mevcut tablolar için CDK yaklaşımı:
Production-Grade Table Pattern'i
180K kullanıcı ve 12M transaction yönettikten sonra, bulletproof tablo oluşturma pattern'imiz:
Zero-Downtime Data Migration
180K kullanıcı kaydını ve 4 yıllık transaction geçmişini servis kesintisi olmadan taşımak bulletproof migration stratejisi gerektiriyordu. İşe yarayan pattern:
Environment Variable Cehennemi
- hafta boyunca, production API'mizin sessizce authentication'da fail olduğunu keşfettik. Debug log'ları JWT validation'da rastgele "undefined" değerleri gösteriyordu. Suçlu? CDK migration'ımız Serverless Framework'ün
${env:SECRET_KEY}referanslarını literal string'lere dönüştürmüştü.
Etki: Yakalamamızdan önce 8.000+ kullanıcıyı etkileyen 12 saat aralıklı authentication başarısızlıkları.
Kök neden: Migration sırasında environment variable yanlış yönetimi. Serverless Framework'ün string interpolation'ı CDK'nın environment handling'inden aldatıcı şekilde farklı.
Production-Grade Environment Management
Bu incident'tan sonra, sessiz başarısızlıkları önleyen type-safe environment sistemi geliştirdik:
Environment Builder Kullanımı
Kritik Stripe API Key Olayı
- hafta. Staging environment'ımız yanlış konfigüre edilmiş environment variable nedeniyle kazara production Stripe key'lerine yönlendirildiydi. Hatayı yakalamadan önce toplam 23.247 dolar tutarında 47 test transaction işledik.
Etki: Manuel refund süreci, rahatsız edici müşteri iletişimleri ve "finansal entegrasyonlar etrafında daha iyi kontroller" hakkında CFO toplantısı.
Kök neden: Environment-specific validation olmadan plaintext environment variable'lar olarak depolanan secret'lar.
Bulletproof Secrets Management
Secrets management'da 23K dolarlık bir ders ödedikten sonra, production-grade yaklaşımımız:
Runtime Secret Access
Parameter Store Entegrasyonu
Hassas olmayan konfigürasyon için:
RDS/ElastiCache için VPC Konfigürasyonu
VPC-Enabled Lambda Fonksiyonları Oluşturma
VPC-Enabled Lambda Fonksiyonu
Database Connection Management
Backup ve Disaster Recovery
Otomatik DynamoDB Backup'ları
Migration Best Practice'leri
1. Stateful Resource Stratejisi
2. Zero-Downtime Migration Checklist
-
fromTableAttributeskullanarak mevcut tabloları import et - Import edilmiş kaynaklarla izinleri test et
- Tablo schema'sı değişiyorsa dual-write pattern implement et
- Gradual rollout için Lambda environment variable'ları kullan
- Switch etmeden önce CloudWatch alarm'ları kur
- External servisler için circuit breaker'lar implement et
- Rollback prosedürlerini test et
Production'dan Zor Yoldan Öğrenilen Dersler
CDK'da stateful infrastructure'ı 6 ay yönettikten sonra, bizi felaketlerden kurtaran dersler:
1. Import'ları Her Zaman İlk Olarak Staging'de Test Et
Öğrenme maliyeti: 4 saat downtime, acil recovery, rahatsız edici toplantılar.
Önleme: Aynı data ile staging'de rehearsal yapmadan production tablolarına karşı asla cdk deploy çalıştırmayın.
2. Environment Variable'lar Konfigürasyon Değildir
Öğrenme maliyeti: 8K+ kullanıcıyı etkileyen 12 saat authentication başarısızlıkları. Önleme: Validation ve required field kontrolleri olan type-safe environment builder'lar.
3. Secret'ların Environment-Specific Validation'a İhtiyacı Var
Öğrenme maliyeti: Kazara production ücretlerinde 23K dolar. Önleme: Cross-environment contamination'ı önleyen environment-aware secret validation.
4. Data Migration'ın Monitoring'e İhtiyacı Var
Öğrenme maliyeti: 3 migration denemesi, 180K kayıt risk altında. Önleme: Migration fonksiyonlarında kapsamlı logging, progress tracking ve timeout handling.
5. VPC Lambda Fonksiyonları Farklıdır
Öğrenme maliyeti: 15 dakikalık cold start'lar, connection pool tükenmesi. Önleme: Düzgün connection management, security group konfigürasyonu ve subnet planlama.
Migration Sonuçları
CDK Öncesi:
- Manuel environment management
- YAML'da plaintext secret'lar
- Tablo import validation yok
- Migration script'leri yerel olarak çalışıyor
- Sıfır disaster recovery testi
CDK Sonrası:
- Validation ile type-safe environment konfigürasyonu
- Environment izolasyonu olan şifrelenmiş secret'lar
- Verification ile production-safe tablo import'ları
- Otomatik, monitörlü data migration'ları
- Kapsamlı backup ve monitoring
Metrikler:
- 23 Lambda fonksiyonu migrate edildi
- 3 production DynamoDB tablosu (180K+ kayıt)
- 47 environment variable type-safe
- 12 secret düzgün şekilde şifrelendi
- Sıfır data kaybı (sonunda)
Sırada Ne Var
Data layer'ınız düzgün environment management ve güvenlik ile battle-tested. Stateful kaynaklar korunmuş, secret'lar şifrelenmiş ve disaster recovery otomatik.
5. Bölüm'de, authentication ve authorization implement edeceğiz:
- Production kısıtlamaları olan Cognito user pool'ları
- Gerçekten işe yarayan API Gateway authorizer'ları
- Least privilege'i takip eden IAM roller
- Bozulmayan JWT token validation
- Complexity explosion olmadan fine-grained izinler
Foundation production'u atlattı. Şimdi onu düzgün bir şekilde güvenlik altına alalım.
Serverless Framework'ten AWS CDK'ya Geçiş Rehberi
Serverless Framework'ten AWS CDK'ya tam geçiş sürecini kapsayan 6 bölümlük kapsamlı rehber. Kurulum, uygulama pattern'leri ve best practice'ler dahil.