API proxy'ler (proxy olarak API Gateway)
API proxy nedir
API proxy (API Gateway), istemcilerden gelen API isteklerini alan, işleyen ve backend servislerine ileten bir aracı sunucudur. Sıradan HTTP proxy'lerinden farklı olarak API Gateway, API trafiğini yönetmekte uzmanlaşmıştır: yönlendirme, kimlik doğrulama, rate limiting, dönüştürme ve izleme.
API Gateway, mikroservis mimarisinin kilit bileşenidir ve API'leri dış tüketicilere güvenli biçimde açmak için önemli bir araçtır.
API proxy'nin rolleri
1. Tek giriş noktası
İstemciler tek bir adrese (api.example.com) erişir ve gateway istekleri ilgili mikroservislere yönlendirir:
- api.example.com/users → user-service
- api.example.com/orders → order-service
- api.example.com/products → product-service
2. Kimlik doğrulama ve yetkilendirme
Gateway; API anahtarlarını, JWT token'larını ve OAuth kimlik bilgilerini istek backend'e ulaşmadan önce doğrular. Bu, mikroservislerin yükünü azaltır.
3. Rate limiting
Tek bir istemciden/IP'den belirli bir süre içinde gelen istek sayısının sınırlanması. Kötüye kullanım ve aşırı yüklenmeye karşı koruma.
4. İstek dönüştürme
Başlıkların, parametrelerin ve istek/yanıt gövdelerinin değiştirilmesi. Örneğin, eski servisler için XML'i JSON'a dönüştürmek.
5. Önbellekleme
Backend yükünü azaltmak ve yanıtları hızlandırmak için API yanıtlarının önbelleğe alınması.
6. İzleme ve loglama
Her API endpoint'i için metrik toplama: istek sayısı, gecikme, hata oranı.
Proxy bağlamında API Gateway
Sıradan bir reverse proxy'den farkları
| Parametre | Reverse Proxy (Nginx) | API Gateway |
|---|---|---|
| Odak | Genel amaçlı HTTP trafiği | API'ye özgü trafik |
| Yönlendirme | URL/Host'a göre | API yoluna, sürüme, başlıklara göre |
| Auth | Basic | OAuth, JWT, API anahtarları, HMAC |
| Rate Limiting | Basit (IP başına) | Gelişmiş (kullanıcı başına, paket başına) |
| Dönüştürme | Minimum | Tam (JSON/XML, protokol) |
| Sürümleme | Yok | /v1/, /v2/ yönlendirme |
| Geliştirici portalı | Yok | Dokümantasyon, anahtarlar, izleme |
Dış API'ler için proxy olarak API Gateway
Kendi servisleri için frontend gateway görevi görmesinin yanı sıra, bir API proxy dış API'lere erişmek için de kullanılabilir:
- Toplama — birden fazla API'ye giden istekleri tek bir istekte birleştirme
- Rate limit'leri aşma — istekleri bir IP havuzuna dağıtma
- Önbellekleme — API'ye giden gerçek istek sayısını azaltma
- Failover — API sağlayıcıları arasında geçiş yapma
Popüler API Gateway çözümleri
Open Source
| Çözüm | Dil | Özellikler |
|---|---|---|
| Kong | Lua/Go | En popüler, eklenti tabanlı mimari |
| Tyk | Go | Yerleşik analitik ve portal |
| KrakenD | Go | Çok hızlı, stateless |
| APISIX | Lua | Apache Foundation, dinamik yönlendirme |
| Gravitee | Java | Event-native, politika tabanlı |
Bulut tabanlı
| Çözüm | Sağlayıcı | Özellikler |
|---|---|---|
| AWS API Gateway | Amazon | Lambda entegrasyonu, tümüyle yönetilen |
| Azure API Management | Microsoft | Geliştirici portalı, kapsamlı platform |
| Google Cloud Endpoints | gRPC-native, Cloud Run entegrasyonu | |
| Cloudflare API Shield | Cloudflare | DDoS koruması, edge dağıtımı |
API proxy kullanım desenleri
API kompozisyonu
Gateway, birden fazla mikroservisten gelen yanıtları istemci için tek bir yanıtta birleştirir.
Backend for Frontend (BFF)
Farklı istemciler (mobil uygulama, web, IoT) için ayrı API Gateway'ler. Her biri kendi istemci tipine göre optimize edilir.
API sürümleme
İsteklerin farklı backend sürümlerine yönlendirilmesi:
- /api/v1/users → eski servis
- /api/v2/users → yeni servis
Circuit Breaker
Hata eşiği aşıldığında sorunlu backend'in otomatik olarak devre dışı bırakılması. İstekler bir fallback yanıtı döndürür.
Request Shadowing
Üretimi etkilemeden yük testi yapmak için trafiğin bir test backend'ine çoğaltılması.
Kısıtlamaları aşmak için API proxy'ler
Ücretli API'leri proxy'leme
Ücretli bir API'nin önüne proxy koymanın amaçları:
- Önbellekleme eklemek (maliyet düşürme)
- Kullanımı izlemek
- Alternatif bir API'ye fallback
- İstemci tarafında rate limiting
CORS'u aşma
Kendi alan adınızdaki bir API proxy, tarayıcıdan dış API'lere erişirken oluşan CORS sorunlarını çözer.
Protokol dönüşümü
API Gateway aracılığıyla REST, GraphQL, gRPC ve SOAP arasında dönüşüm. İstemci bir protokolle iletişim kurarken backend başka bir protokol kullanır.
API Gateway güvenliği
Temel önlemler
- TLS terminasyonu — giriş noktasında HTTPS
- Girdi doğrulama — istek parametrelerinin kontrolü
- IP whitelisting — IP'ye göre erişim kısıtlama
- JWT doğrulama — token kontrolü
- İstek boyutu sınırlama — isteklerin boyutunu sınırlandırma
- SQL injection koruması — zararlı isteklerin filtrelenmesi
WAF entegrasyonu
API Gateway, saldırılara karşı ek koruma için genellikle bir Web Application Firewall ile entegre edilir.
Sonuç
API proxy'ler ve API Gateway'ler, API trafiğini yönetmeye yönelik özelleşmiş proxy tipleridir. API'nin güvenliğini, ölçeklenebilirliğini ve gözlemlenebilirliğini sağlarlar. Mikroservis mimarisinde API Gateway vazgeçilmez bir bileşendir; dış API'lerle çalışma bağlamında ise optimizasyon ve kontrol için güçlü bir araçtır.
