Serverless & API Mimarisi 4 dk okuma 8 okunma

Serverless API: HTTP Triggers ve API Gateway Entegrasyonu

Serverless fonksiyonları HTTP endpoint'i olarak sunmak için HTTP trigger'lar ve API Gateway entegrasyonu kullanılır. API Gateway; kimlik doğrulama, rate limiting, CORS ve istek doğrulama gibi yatay kesen endişeleri fonksiyon kodundan ayırır. Azure Functions + API Management ve AWS Lambda + API Gateway modelleri, yönetilen altyapıyla ölçeklenebilir API'ler sunar.

Serverless API: HTTP Triggers ve API Gateway Entegrasyonu

Serverless API: HTTP Triggers ve API Gateway Entegrasyonu

Serverless fonksiyonlar, olay tabanlı çalışacak şekilde tasarlanmıştır. Bu olayların en yaygını HTTP isteğidir. Bir fonksiyonu doğrudan HTTP'ye açmak mümkün olsa da, üretim ortamında fonksiyonun önüne bir API Gateway yerleştirmek standarttır. API Gateway; kimlik doğrulama, rate limiting, CORS, istek doğrulama ve monitoring gibi yatay kesen endişeleri fonksiyon kodundan ayırarak, fonksiyonun yalnızca iş mantığına odaklanmasını sağlar.


1. HTTP Trigger Nedir?

HTTP trigger, bir serverless fonksiyonunun bir HTTP isteği ile tetiklenmesini sağlayan bağlayıcıdır (binding). Azure Functions'ta [HttpTrigger] attribute'ü, AWS Lambda'da ise API Gateway'den gelen APIGatewayProxyEvent nesnesi bu görevi görür .

Temel Akış:

text

Client → HTTP İsteği → API Gateway → HTTP Trigger → Fonksiyon → Yanıt → Client

Fonksiyon, gelen isteği işler ve standart bir HTTP yanıtı döner. API Gateway bu yanıtı istemciye iletir .


2. Neden API Gateway?

Bir fonksiyonu doğrudan HTTP'ye açmak yerine API Gateway kullanmanın avantajları:

Yetenek Açıklama
Kimlik Doğrulama JWT, OAuth2, API Key, IAM gibi mekanizmalar gateway seviyesinde uygulanır .
Rate Limiting Aşırı istekleri fonksiyona ulaşmadan engeller.
CORS Tarayıcı tabanlı istemciler için CORS başlıkları merkezi olarak yönetilir.
İstek Doğrulama Şema validasyonu ile hatalı istekler fonksiyona hiç ulaşmaz.
Monitoring Tüm istekler gateway seviyesinde loglanır ve izlenir.

Önemli: Fonksiyon kodu, kimlik doğrulama ve rate limiting gibi konularla kirletilmemelidir. Bu sorumluluklar gateway'e aittir .


3. Azure Functions + API Management Entegrasyonu

Azure'da HTTP trigger'lı fonksiyonlar, Azure API Management ile entegre edilerek REST API olarak sunulur. Bu entegrasyon, herhangi bir dilde yazılmış fonksiyonlar için çalışır .

Entegrasyon Adımları:

  1. Azure portalında Function App'i açın.

  2. Sol menüden API Management seçin.

  3. Link API (API Bağla) ile HTTP trigger'lı fonksiyonları içe aktarın.

  4. API Management, fonksiyonun OpenAPI tanımını otomatik olarak oluşturur .

  5. OpenAPI tanımını indirerek dokümantasyon ve istemci kod üretimi için kullanabilirsiniz.

API Management'ın Sağladıkları:

  • OpenAPI tanımı ile otomatik dokümantasyon

  • Geliştirici portalı

  • Rate limiting ve kota yönetimi

  • JWT doğrulama ve subscription key yönetimi


4. AWS Lambda + API Gateway Entegrasyonu

AWS'de Lambda fonksiyonları, API Gateway üzerinden HTTP endpoint'i olarak sunulur. İki tür API Gateway modeli vardır :

Özellik HTTP API REST API
Kullanım Alanı Basit CRUD, webhook, mobil backend Kurumsal, katı politika kontrolleri
Gecikme ve Maliyet Daha düşük gecikme; %70'e varan maliyet avantajı Standart gecikme ve maliyet
Yetkilendirme OIDC/JWT, IAM Lambda authorizer, Cognito, IAM
Gelişmiş Özellikler Temel CORS, path mapping İstek doğrulama, WAF, cache, API key

Lambda Proxy Integration:
API Gateway, gelen HTTP isteğini bir APIGatewayProxyEvent JSON nesnesine dönüştürür ve Lambda'ya iletir. Lambda, statusCode, headers ve body içeren bir yanıt döner .

javascript

exports.handler = async (event) => {
  const id = event.pathParameters?.id;
  if (!id) {
    return { statusCode: 400, body: JSON.stringify({ error: 'Missing id' }) };
  }
  // İş mantığı...
  return { statusCode: 200, body: JSON.stringify(result) };
};

Önemli: Karmaşık VTL (Velocity Template Language) mapping şablonları yerine Lambda Proxy Integration kullanmak, header ve status code kontrolünü uygulama koduna bırakır ve yönetimi basitleştirir .


5. API Gateway'in Sağladığı Güvenlik Katmanları

A. Kimlik Doğrulama Modelleri

Platform Yöntem
Azure API Management subscription key, JWT doğrulama, Azure AD entegrasyonu
AWS Lambda authorizer (custom), Cognito user pool, IAM, JWT (HTTP API)

B. Rate Limiting ve Throttling
API Gateway, stage seviyesinde veya route seviyesinde rate limit uygulayarak downstream fonksiyonları ve veritabanlarını ani trafik artışlarından korur .

C. CORS Yönetimi
Tarayıcı tabanlı istemciler için CORS başlıkları, fonksiyon kodunda manuel olarak eklenmek yerine API Gateway seviyesinde yapılandırılmalıdır .


6. En İyi Pratikler

Pratik Açıklama
İnce Handler'lar Fonksiyon kodunda routing veya ağır framework'ler kullanmayın; her route için ayrı fonksiyon veya modüler router kullanın .
Proxy Integration Kullanın AWS'de karmaşık mapping şablonlarından kaçının; AWS_PROXY kullanın .
Cold Start'ı Yönetin Deployment paketini küçük tutun; veritabanı bağlantılarını handler dışında başlatın .
Rate Limiting Uygulayın Gateway seviyesinde throttling ile downstream servisleri koruyun .
IaC Kullanın AWS SAM, CDK veya Terraform ile API ve fonksiyonları kod olarak tanımlayın .
OpenAPI Tanımı Üretin Azure API Management ile otomatik OpenAPI tanımı oluşturun .

7. Ne Zaman HTTP API, Ne Zaman REST API? (AWS)

  • HTTP API: Basit mikroservisler, webhook'lar, JWT kimlik doğrulamalı mobil backend'ler. Daha hızlı ve daha ucuz .

  • REST API: AWS WAF koruması, yanıt cache'leme, istek payload şema doğrulaması gerektiğinde .

Azure'da: API Management, tüm HTTP trigger'lı fonksiyonlar için tek çatı altında yönetim sunar.


Sonuç

Serverless API'lerde HTTP trigger ve API Gateway entegrasyonu, fonksiyonların ölçeklenebilir, güvenli ve yönetilebilir bir şekilde sunulmasını sağlar. Azure API Management ve AWS API Gateway, kimlik doğrulama, rate limiting, CORS ve monitoring gibi yatay kesen endişeleri fonksiyon kodundan ayırır. Lambda Proxy Integration ve OpenAPI tanımı ile dokümantasyon, yönetimi basitleştirir. Unutmayın: Fonksiyonunuz yalnızca iş mantığına odaklanmalı; güvenlik ve trafik yönetimi gateway'in sorumluluğunda olmalıdır.

Tüm yazılar Soru ya da yorumun mu var? Yaz