Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber

Sayfayı kopyala
API Gateway, tüm dış istemciler için tek bir giriş noktası olarak hizmet veren, mikroservis tabanlı sistemlerin en kritik mimari bileşenlerinden biridir. AWS API Gateway veya Apigee gibi bulut tarafından yönetilen çözümler kullanım kolaylığı sunarken; kendi sunucunuzda barındırılan (self-hosted) bir API Gateway, altyapınız üzerinde tam kontrol, veri egemenliği (data sovereignty), özel yönlendirme kuralları sağlar ve ölçeklendikçe ağ gecikmesini ve API maliyetlerini önemli ölçüde düşürür.
💡 Özet (TL;DR):
- Amaç: Yönlendirme, güvenlik ve izleme işlemlerini tek bir merkezde toplamak için kendi altyapınızda güvenli ve yüksek performanslı bir giriş kapısı kurmak.
- Kritik Karar: Trafik yönlendirme için hafif bir Ters Vekil Sunucu (Traefik/Nginx) ile uygulama seviyesinde politikaları işletecek dedike bir API Gateway (Kong/KrakenD) arasında seçim yapmak.
- Mimari Tercih: Ölçeklendirmeyi basitleştirmek ve veritabanı darboğazlarını önlemek için GitOps uyumlu veritabanı bağımsız (DB-less/declarative) yapıları tercih etmek.
- Motto: Giriş yönlendirmesini, erişim politikalarını ve gözlemlenebilirliği kendi kurallarınızla merkezileştirin.
Reverse Proxy (Traefik/Nginx) vs. Dedike API Gateway (Kong/KrakenD)
Standart bir Ters Vekil Sunucu (Reverse Proxy) ile API Gateway'i birbirine karıştırmak oldukça yaygındır. Altyapınızı tasarlarken bu iki kavramın farkını bilmek kritik önem taşır:
- Ters Vekil Sunucu (Örn: Traefik, Nginx): Temelde HTTP/TCP (Layer 4/7) seviyesinde çalışır. Ingress yönlendirme, SSL sonlandırma ve dinamik servis keşfi (örneğin Traefik'in Docker label'larına göre konteynerleri otomatik bulması) gibi ağ trafiği yönetimi işlerine odaklanır.
- Dedike API Gateway (Örn: Kong, KrakenD, APISIX): Uygulama katmanında (Application Layer) çalışır. Tüketici (consumer) bazlı hız sınırlandırma (Rate Limiting), en dış kapıda JWT token doğrulama/çözümleme, istek/yanıt gövdesini (payload) dönüştürme, API anahtarı yetkilendirmesi ve analitik sistemler için metrik birleştirme gibi iş mantıklarını yönetir.
Eğer servisleriniz için sadece temel yönlendirme ve SSL yeterliyse, Traefik gibi bir reverse proxy mükemmel bir seçimdir. Ancak kullanıcı bazlı yetkilendirme, gelişmiş sınırlandırma kuralları ve veri manipülasyonu gerekiyorsa, reverse proxy'nizin arkasına dedike bir API Gateway konumlandırmalısınız.
Pragmatik Yaklaşım: Traefik + Özel Minimal API Gateway
Pek çok girişim (startup), orta ölçekli platform ve bootstrap SaaS projesi için Kong gibi ağır kurumsal araçları kullanmak; beraberinde veritabanı bağımlılığı, karmaşık yapılandırmalar ve dik bir öğrenme eğrisi getirir.
Bunun yerine, altyapıyı son derece hafif tutan harika bir alternatif; Traefik ile kendi yazacağınız minimal bir gateway servisini birleştirmektir:
- Traefik Proxy (En Dış Kapı): Sunucunuzun giriş noktasına konumlandırılan Traefik; Layer 7 yönlendirmeyi, otomatik Let's Encrypt SSL sertifikalarını, yük dengelemeyi ve Docker label keşfini halleder. Temizlenmiş trafiği arkadaki özel minimal gateway'inize yönlendirir.
- Özel Gateway (İş Mantığı): Yüksek performanslı bir dilde (örneğin Go'nun standart kütüphanesindeki
httputil.NewSingleHostReverseProxyyapısıyla veya Node.js/Fastify ile) yazılmış, 50-100 satırlık küçük bir servis. Bu servis sadece uygulamanıza özel kuralları işletir (örneğin JWT kontrolü yapar, Redis üzerinden basit rate-limit sorgular veya header'ları düzenler) ve isteği arkadaki ilgili mikroservislere paslar.
Bu yaklaşım, altyapınızı tamamen "stateless" (durumsuz) ve hafif tutarak, ekstra sunucu kaynakları tüketmeden ultra düşük gecikme süreleriyle çalışmanızı sağlar.
Self-Hosted API Gateway Kurulum Adımları
Kendi sunucunuzda bir API Gateway kurmak, planlamadan gözlemlenebilirliğe kadar 6 temel aşamadan oluşur:
1. Ingress Noktalarınızı Tanımlayın ve Haritalandırın
Gateway yapılandırmasına geçmeden önce hangi servislerin dış dünyaya açılacağını netleştirin:
- Yol eşlemeleri (örn:
/users/*isteklerinin Kullanıcı Servisine,/orders/*isteklerinin Sipariş Servisine gitmesi). - Protokol gereksinimleri (örn: dışarıdan HTTP/JSON ile gelip, içeride gRPC veya WebSockets ile konuşma ihtiyacı).
- Her uç nokta için gereken rate limit ve yetkilendirme kuralları.
2. Doğru API Gateway Yazılımını Seçin
Teknoloji yığınınıza ve performans hedeflerinize uygun aracı seçin:
- Kong: Sektör lideri. Nginx ve Lua üzerine kurulu olup, devasa eklenti (plugin) kütüphanesi sayesinde son derece esnektir.
- KrakenD: Go ile yazılmış, ultra hafif ve durumsuz (stateless) çalışan bir araçtır. Veritabanına ihtiyaç duymaz; en güçlü özelliği birden fazla mikroservisten gelen yanıtları tek bir JSON'da birleştirebilmesidir (Request Aggregation).
- Apache APISIX: Dinamik yapısıyla öne çıkan Lua/Nginx tabanlı bir gateway. Bağlantıları kesmeden canlı yapılandırma güncellemelerini destekler.
- Tyk: Go ile yazılmış, yerleşik API yönetim paneli ve geliştirici portalı sunmasıyla bilinen güçlü bir alternatiftir.
3. Altyapıyı Yapılandırın
Yüksek kullanılabilirlik (High Availability) ve hata toleransı için:
- Yedeklilik (Redundancy): Asla tek bir gateway örneği (instance) çalıştırmayın. En önde duran bir Layer 4 Load Balancer (HAProxy, Cloudflare veya AWS ALB gibi) arkasında birden fazla stateless gateway node'u çalıştırın.
- Konteynerleştirme: Gateway'lerinizi Docker konteynerleri veya Kubernetes pod'ları olarak çalıştırın. Bu, yerel geliştirme ortamınız ile canlı ortamın birebir aynı olmasını sağlar.
- Kaynak Dağıtımı: API Gateway'ler genellikle bellek (RAM) dostudur ancak SSL sonlandırma ve regex tabanlı yönlendirme kuralları işlemci (CPU) yükünü doğrudan artırır. CPU kapasitenizi buna göre planlayın.
4. Konfigürasyon Stratejinizi Seçin: Veritabanı vs. DB-less
Self-hosted kurulumlardaki en kritik kararlardan biridir:
- Veritabanı Destekli Mod (DB-Backed): Yapılandırmalar bir veritabanında (genellikle PostgreSQL) saklanır. API üzerinden dinamik ve canlı olarak anlık kural değişiklikleri yapmak istediğinizde kullanışlıdır.
- Veritabanı Bağımsız Mod (DB-less/Declarative): Tüm kurallar tek bir statik YAML veya JSON dosyasında (örn:
kong.ymlveyakrakend.json) tanımlanır. GitOps süreçlerine tam uyum sağladığı, sürüm kontrolüne (Git) alınabildiği ve arkada veritabanı bağlantı sınırları olmadan yatayda sınırsız ölçeklenebildiği için modern mimarilerde bu yöntem önerilir.
5. Erişim Kontrolü ve Güvenliği Sağlayın
İç ağınızı korumak için kapıda güvenlik önlemlerini alın:
- SSL/TLS Sonlandırma: HTTPS sertifikalarını yük dengeleyici veya gateway seviyesinde çözerek, iç mikroservislerin kendi aralarında standart HTTP üzerinden konuşmasını sağlayın.
- Kimlik Doğrulama: JWT, OAuth2 veya API Key doğrulamalarını doğrudan gateway üzerinde yapın. Yetkisiz istekleri arkadaki servislere hiç ulaştırmadan en önde engelleyin.
- CORS & IP Sınırlama: CORS politikalarını sıkı tutun ve admin paneli/yönetim portları gibi hassas uç noktaları sadece dahili VPN veya VPC IP'lerine açık hale getirin.
6. Gözlemlenebilirlik Altyapısını Kurun (İzleme ve Loglama)
Tüm trafik gateway üzerinden geçtiği için burası analiz için en doğru noktadır:
- Metrikler: İstek gecikme sürelerini, HTTP hata oranlarını ve anlık trafik miktarını Prometheus gibi araçlara aktarın.
- Loglama: Erişim loglarını Graylog, Elasticsearch veya Loki gibi merkezi loglama sistemlerine yönlendirin.
- Dağıtık İzleme (Tracing): Mikroservisler arasındaki yolculuğu takip etmek için istek zincirine "Correlation ID" ekleyin ve OpenTelemetry/Jaeger entegrasyonu kurun.
Sıkça Sorulan Sorular (FAQ)
Traefik'i doğrudan bir API Gateway olarak kullanabilir miyim?
Evet, belirli bir dereceye kadar. Traefik'in sunduğu rate limiting, basic auth ve forward auth gibi middleware (ara katman) özellikleri basit gateway işlevlerini yerine getirmek için yeterlidir. Ancak veri şeması dönüşümleri, kullanıcı bazlı gelişmiş API politikaları veya ücretlendirme sistemleri entegre edecekseniz, Kong veya KrakenD gibi dedike bir araç kullanmak daha doğrudur.
API Gateway'in tek hata noktası (SPOF) olmasını nasıl engellerim?
Gateway sunucularınızı en az iki adet ve aktif-aktif (active-active) yapıda çalıştırın. Bu sunucuların önüne yedekli çalışan bir Load Balancer konumlandırın. Böylece sunuculardan biri çökse dahi trafik kesintisiz şekilde diğer sağlıklı sunucuya akacaktır.
API Gateway eklemek sistem performansını nasıl etkiler?
Araya ek bir ağ geçidi koymak, istek başına genellikle 1 ila 5 milisaniye arasında çok küçük bir ağ gecikmesi (network hop) ekler. Ancak bu gecikme; SSL sonlandırma, önbelleğe alma ve kimlik doğrulama gibi ağır yüklerin arkadaki mikroservislerden alınmasıyla elde edilen performans kazancı sayesinde fazlasıyla telafi edilir.
Bu Yazıda Yapılan Değişiklikler
- 20.06.2026: Yazının Türkçe çevirisi ve adaptasyonu yapıldı. Ters vekil sunucu (Traefik/Nginx) ile API Gateway farkları, DB-less GitOps stratejileri, 'Traefik + Özel Minimal Gateway' alternatif mimari tasarımı ve FAQ bölümü eklendi.
- 12.01.2023: Makale İngilizce olarak yayınlandı.
