- Konu sahibi
- #1
API gateway, istemci uygulamalar ile arka plandaki API ve mikroservisler arasında duran merkezi bir geçiş katmanıdır. İstemciden gelen isteği karşılar, uygun servise yönlendirir ve gerekiyorsa kimlik doğrulama, yetkilendirme, hız sınırlama, istek günlüğü, hata biçimlendirme veya yanıt önbellekleme gibi ortak işlemleri uygular. Böylece web sitesi, mobil uygulama ya da dış entegrasyonların her servisin adresini ve iç çalışma ayrıntılarını bilmesi gerekmez.
Gateway, işlevi istemci ile servisler arasındaki geçişi yönetmek olan bir yazılım veya yönetilen hizmettir; çoğunlukla ters proxy gibi çalışır. İstemci dışarıya tek bir API adresi görürken gateway içeride farklı servislerle haberleşebilir. Ancak gateway, servislerin içindeki iş kurallarının yerine geçmez. Kullanıcının belirli bir siparişi görmeye yetkili olup olmadığı gibi kaynak ve iş bağlamı gerektiren kontroller ilgili serviste de yapılmalıdır.
Örneğin istemci
Gateway kullanımı özellikle birden fazla API veya mikroservis olduğunda anlamlıdır. Dış API sözleşmesini içerideki servislerden ayırır, istemcinin dahili servis adreslerine bağımlılığını azaltır ve ortak politikaları tek noktadan uygulamayı kolaylaştırır. Fakat gateway tek başına güvenlik çözümü değildir. Gateway kontrolleri atlanmamalı, dahili servisler doğrudan erişime kapatılmalı ve servisler kendi hassas yetkilendirme kurallarını uygulamaya devam etmelidir.
Bu ayrım, gateway’in büyüyerek bütün uygulama mantığını taşıyan kırılgan bir katmana dönüşmesini önler.
Gateway’de bütün iş kurallarını toplamak, zamanla tek ve zor değiştirilen bir monolit oluşturur. Sadece gateway’e güvenmek de hatalıdır; dahili servise doğrudan erişim veya alternatif bir uç nokta varsa kontroller aşılabilir. Her isteğe sınırsız izin vermek, yalnızca kimlik doğrulamayı yeterli saymak ve belirteçleri URL içinde taşımak da risklidir. Ayrıca gateway’e fazla sayıda görev yüklemek gecikmeyi ve tek hata noktası etkisini artırabilir. Merkezi katman için izleme, yedeklilik ve kontrollü hata davranışı baştan planlanmalıdır.
Hayır. Load balancer öncelikle trafiği birden fazla sunucuya dağıtır. API gateway ise yönlendirmeye ek olarak API kimliği, politika, istek biçimi, kota ve gözlemlenebilirlik gibi API’ye özgü işlemleri de üstlenebilir. Bazı ürünler iki rolü birlikte sunabilir.
Tek bir backend ve basit bir istemci varsa ayrı bir gateway katmanı gereksiz karmaşıklık yaratabilir. Birden fazla istemci, servis, dış entegrasyon veya merkezi trafik politikası oluşmaya başladığında kullanımı daha anlamlı hâle gelir.
Hayır. Yönlendirme ortak bir ihtiyaç olsa da kimlik doğrulama, kota, önbellek, protokol dönüşümü ve birden fazla yanıtı birleştirme desteği ürüne göre değişir. Kullanacağınız ürünün bu özellikleri hangi yapılandırma ve çalışma koşullarıyla sunduğunu doğrulayın.
Gateway, işlevi istemci ile servisler arasındaki geçişi yönetmek olan bir yazılım veya yönetilen hizmettir; çoğunlukla ters proxy gibi çalışır. İstemci dışarıya tek bir API adresi görürken gateway içeride farklı servislerle haberleşebilir. Ancak gateway, servislerin içindeki iş kurallarının yerine geçmez. Kullanıcının belirli bir siparişi görmeye yetkili olup olmadığı gibi kaynak ve iş bağlamı gerektiren kontroller ilgili serviste de yapılmalıdır.
Nasıl çalışır?
Örneğin istemci
https://example.com/api/orders/42 adresine istek gönderdiğinde akış şu şekilde olabilir:- Gateway isteğin yolunu ve HTTP metodunu kontrol eder.
- Gerekliyse erişim belirtecini doğrular ve isteğin hangi istemciye ait olduğunu belirler.
- İsteği dahili sipariş servisine yönlendirir; istemci bu servisin iç adresini görmez.
- Servisten gelen yanıtı istemciye iletir, gerekirse ortak hata biçimine dönüştürür.
- Durum kodu, gecikme ve korelasyon kimliği gibi bilgileri izleme sistemine aktarır. Parola, belirteç ve hassas istek gövdeleri günlüklere gelişigüzel yazılmaz.
Hangi sorunu çözer?
Gateway kullanımı özellikle birden fazla API veya mikroservis olduğunda anlamlıdır. Dış API sözleşmesini içerideki servislerden ayırır, istemcinin dahili servis adreslerine bağımlılığını azaltır ve ortak politikaları tek noktadan uygulamayı kolaylaştırır. Fakat gateway tek başına güvenlik çözümü değildir. Gateway kontrolleri atlanmamalı, dahili servisler doğrudan erişime kapatılmalı ve servisler kendi hassas yetkilendirme kurallarını uygulamaya devam etmelidir.
| İhtiyaç | Gateway’de uygulanabilecek işlem | Serviste kalması gereken sorumluluk |
|---|---|---|
| İstek yönlendirme | URL veya metoda göre doğru servisi seçme | İşlemin gerçekten desteklenip desteklenmediği |
| Dış kullanıcı doğrulaması | Belirteç veya istemci kimliği kontrolü | Kaynak ve iş kuralı yetkilendirmesi |
| Trafik kontrolü | Hız ve istek gövdesi sınırı koyma | Pahalı işlemin güvenli yürütülmesi |
| İzleme | Merkezi günlük, korelasyon kimliği ve metrik | İşlem sonucunun anlamlandırılması |
Uygularken izlenecek yol
- Dışarıya sunulacak yolları belirleyin. Örneğin
/api/usersve/api/ordersgibi istemci sözleşmelerini, dahili servis adlarından bağımsız tasarlayın. - Her yol için hedef servisi, izin verilen HTTP metotlarını, kimlik doğrulama gereksinimini ve beklenen hata biçimini tanımlayın.
- Gateway’de kaba erişim politikalarını uygulayın: kimlik doğrulama, temel yetki kapsamı, istek boyutu, hız limiti ve uygun HTTP metodu kontrolü.
- Dahili servisleri yalnızca gateway’den veya güvenilir servis ağı üzerinden erişilebilir hâle getirin. Aksi durumda istemci gateway kontrollerini atlayabilir.
- Kimlik bilgisini istemciden gelen rastgele başlıkları olduğu gibi güvenerek aktarmayın. Gateway’in doğruladığı bağlamı kontrollü biçimde iletin; servis de bu bağlamı doğrulasın.
- Başarılı istekleri ve hataları korelasyon kimliğiyle izleyin. Gateway’in yanıt vermemesi, yanlış yönlendirme veya aşırı yük gibi durumlar için sağlık kontrolü ve geri dönüş davranışı tanımlayın.
- Önce tek bir düşük riskli uç noktada deneyin. Beklenen sonuç, dış istemcinin gateway adresinden başarılı yanıt alması ve güvenilmeyen ağdan dahili servise erişimin reddedilmesidir.
Sık yapılan hatalar
Gateway’de bütün iş kurallarını toplamak, zamanla tek ve zor değiştirilen bir monolit oluşturur. Sadece gateway’e güvenmek de hatalıdır; dahili servise doğrudan erişim veya alternatif bir uç nokta varsa kontroller aşılabilir. Her isteğe sınırsız izin vermek, yalnızca kimlik doğrulamayı yeterli saymak ve belirteçleri URL içinde taşımak da risklidir. Ayrıca gateway’e fazla sayıda görev yüklemek gecikmeyi ve tek hata noktası etkisini artırabilir. Merkezi katman için izleme, yedeklilik ve kontrollü hata davranışı baştan planlanmalıdır.
Sık sorulan sorular
API gateway ile load balancer aynı şey midir?
Hayır. Load balancer öncelikle trafiği birden fazla sunucuya dağıtır. API gateway ise yönlendirmeye ek olarak API kimliği, politika, istek biçimi, kota ve gözlemlenebilirlik gibi API’ye özgü işlemleri de üstlenebilir. Bazı ürünler iki rolü birlikte sunabilir.
Küçük bir uygulamada API gateway gerekli midir?
Tek bir backend ve basit bir istemci varsa ayrı bir gateway katmanı gereksiz karmaşıklık yaratabilir. Birden fazla istemci, servis, dış entegrasyon veya merkezi trafik politikası oluşmaya başladığında kullanımı daha anlamlı hâle gelir.
Her API gateway aynı özellikleri sunar mı?
Hayır. Yönlendirme ortak bir ihtiyaç olsa da kimlik doğrulama, kota, önbellek, protokol dönüşümü ve birden fazla yanıtı birleştirme desteği ürüne göre değişir. Kullanacağınız ürünün bu özellikleri hangi yapılandırma ve çalışma koşullarıyla sunduğunu doğrulayın.