Zod ve OpenAPI ile Type-Safe AWS Lambda API'leri
'Basit' bir API değişikliği bir kurumsal müşteri entegrasyonunu nasıl bozdu, dokümantasyon drift'i neden gerçek sorunlara yol açar ve Zod schema'larından otomatik OpenAPI spec'i üreten pratik bir sistem.
API dokümantasyon drift'i hakkında acı bir ders: Kullanıcı API'sine opsiyonel bir alan eklemek ama OpenAPI spec'ini güncellememek, bir kurumsal müşterinin entegrasyonunu bir gecede bozdu. Onların code generation pipeline'ı eski şemayı bekleyen TypeScript arayüzleri üretti. Onların kod generation pipeline'ı eski şemayı bekleyen TypeScript arayüzleri üretti, yüzlerce başarısız kullanıcı kaydı ve önemli gelir kaybına neden oldu.
Bu olay API dokümantasyonunun sadece nice-to-have olmadığını gösterdi – kritik iş altyapısıdır. Bu yaklaşım Zod şemalarından otomatik olarak OpenAPI spec'leri üreten sistemlerin yeniden oluşturulmasını içerir; tek doğruluk kaynağı daha güvenli API evrimi sağlar. CDK ile production stack örneği aşağıda.
Kritik Ders: Dokümantasyon Kayması Neden İşleri Öldürür
Olayımızdan önce, klasik serverless API geliştirme kabusumuz vardı – dört farklı doğruluk kaynağı birbirinden sapıyordu:
Bu dört kaynağın sync'te kalması zordu. Her yeni özellik release'inde hangi müşteri entegrasyonunun etkileneceğini önceden tahmin etmek güçtü. Kod generation pipeline'ları eski OpenAPI spec'lerine dayandığı için, dokümantasyon drift'i doğrudan production hatalarına dönüştü.
Çözüm: Zod-First API Development
Tek Doğruluk Kaynağı ilkesinden hareketle, bu yaklaşım Zod şemalarını kesin API sözleşmesi olarak kullanıyor ve otomatik olarak üretiyor:
- Compile-time TypeScript tipleri (interface drift artık yok)
- OpenAPI 3.0 spesifikasyonları (her zaman senkron)
- Runtime validation (veritabanına ulaşmadan önce hatalı veriyi yakala)
- Yapılandırılmış hata yanıtları (istemciler tam olarak neyin yanlış gittiğini bilir)
- Veritabanı migration'ları (özel araçlarla)
Production'da gözlemlenen faydalar:
- Schema drift'inden azalan entegrasyon hataları
- Manuel spec bakımına daha az zaman
- Doğru, otomatik üretilmiş SDK'larla daha sorunsuz müşteri onboarding'i
- Daha az destek sorusuna yol açan net hata mesajları
İşte mimari:
Temel: Schema Drift'i Önleyen Altyapı
Güvenli API evrimini destekleyen kurulum:
Compile Time'da Hataları Yakalayan Type System
TypeScript ve Zod entegrasyonu, schema değişikliklerini compile time'da yakalar.
API Sözleşmelerini Doğrulayan Handler Wrapper
Handler wrapper'ı request validasyonu ve hata yönetimini merkezileştirir. TypeScript tipleri, Lambda validation, OpenAPI spec ve test case'ler artık aynı schema'dan türetiliyor – tek yerde değişiklik, her yerde güncelleme.
Production CDK Stack'i
İşte gerçek CDK kodumuzu içeren stack (hiçbir güzelleştirme yok):
Type-Safe Lambda Handlers
Lambda Handler Implementasyonları
OpenAPI Generation
OpenAPI Spec Generation
En güzel kısım - Zod şemalarından otomatik OpenAPI spec generation:
Testing Strategy
Unit ve Entegrasyon Testleri
Type safety testleri de kapsar:
Production'da Öğrenilen Dersler
1. Schema Evolution
2. Error Handling Best Practices
3. Performance Optimization
Deployment and CI/CD
GitHub Actions Workflow
Monitoring and Observability
Yapılandırılmış logging ve tracing ekle:
Best Practices
1. Schema Versioning
2. Error Recovery
3. Security Headers
Sonuç
Zod'un runtime validation'ını OpenAPI generation ile birleştirerek, type-safe bir serverless API oluşturuluyor:
- Manuel senkronizasyonu ortadan kaldırıyor - tipler, validation ve dokümantasyon arasında
- Hataları compile time'da yakalar - tam TypeScript entegrasyonu ile
- Runtime'da validate eder - detaylı hata mesajları ile
- Doğru dokümantasyonu otomatik üretir
- Verimli scale eder - AWS Lambda ve CDK ile
Bu yaklaşım, API development'ı hataya açık manuel koordinasyondan otomatik bir sürece dönüştürür. Şemalar tek doğruluk kaynağı haline gelir ve serverless stack'inin her katmanında tutarlılık sağlar.
Sonraki Adımlar
- Authentication ekle - AWS Cognito veya custom JWT validation ile
- Caching implement et - API Gateway caching veya ElastiCache ile
- WebSocket desteği ekle - real-time özellikler için
- AWS X-Ray entegrasyonu - distributed tracing için
- API versioning kur - stage variables ile
- Contract testing ekle - Pact veya benzeri araçlarla
Oluşturduğumuz temel, modern API development'ın karmaşıklığını ele alırken serverless'i çekici kılan basitliği koruyor. Happy building!