API Proxy'ler (API Proxies)
API Proxy
API Proxy, API Gateway üzerinde oluşturularak orijinal API'yi taklit eden vekil varlıktır. Böylece istemciden gelen mesajlar orijinal API (Backend API)'ye iletilmeden önce ya da orijinal API'nin yanıtı istemciye gönderilmeden önce çeşitli işlemler yapmak mümkün olur.
API Proxy orijinal API için bir sanallaştırma noktası sağlar ve böylece bir Politika Uygulama Noktası (Policy Enforcement Point - PEP) ortaya çıkar.
API Gateway’in çalışma mantığı
Şekilde görüldüğü gibi, istemcinin gönderdiği istek (1. Adım) API Gateway üzerindeki API Proxy tarafından karşılanır. API Proxy, erişilecek API'nin API Gateway üzerindeki vekilidir ve İstemci (Client) aslında API Proxy ile iletişime geçer. API Proxy, API'ye istemci olur (2. Adım) ve API'nin döndürdüğü yanıtları (3. Adım) alıp İstemci’ye kendisi yanıt döndürür (4. Adım)
API Gateway yazılımı ile yapılan konfigürasyonlar aracılığı ile API Proxy'nin davranışı özelleştirilir ve bu sayede güvenlik, trafik yönetimi, mesaj dönüşümleri, servis taşıma ve benzeri gereksinimler merkezi bir noktadan yönetilebilir hale gelir.
API Proxy,
- API Gateway üzerinde çalışan paydaşlar (API Tasarımcı, API Geliştirici, API Testçi vb) için API Proxy,
- API Tüketiciler (istemciler) açısından API,
- API Ürün Yöneticileri tarafından, dokümantasyon, Sandbox ortamı erişimi ve ücretlendirme planları oluşturularak Yayına Alındığında ise API Ürünü (API Product)
olarak görülür.
Orijinal API, API Proxy arkasına alındığı için bu topolojide Backend API adını alır.
API Proxy kullanmanın getirileri
- API, belirli bir işi yapan metod/endpointler için bir sözleşme sunar. API ile ilgili esas konu, hangi metod/endpoint'leri içereceği, bunların ne parametre alıp ne iş yapıp ne değer döndüreceği gibi detaylar olmalıdır. Yazılım dünyasında İş Mantığı (Business Logic) adı verilen ve işin kalbini oluşturan bu kısım, çoğu zaman güvenlik, loglama, yönetim, doğrulama vb. işlerin gölgesinde kalır. Daha da kötüsü, bu tip ortak isterler genellikle çok daha deneyimli yazılımcılar tarafından ele alınması gereken karmaşık işlerdir. API Proxy, bir parçası olduğu API Gateway yazılımına, bütün bu işlerin sadece konfigürasyon yapılarak bildirilmesini ve API Gateway tarafından bu konfigürasyonlara uygun biçimde ele alınmasını sağlar.
- Bu konfigürasyonların daha az deneyimli ve yazılımcı olması gerekmeyen kişiler tarafından yapılabilmesi,
- Yazılımcıların yalnızca iş mantığına odaklanabilmesinin sağlanması,
- Dolayısıyla yazılan kod miktarının çok ciddi miktarda azalması
sayesinde kod geliştirme, bakım ve yönetim maliyetleri büyük ölçüde azalır.
- İstemci ile API arasına bir katman koymak, aradaki sıkı bağı ortadan kaldırarak API'nin taşınabilmesi ya da birden çok sunucuya yüklenebilmesi, adresinin değiştirilebilmesi, bazı metod/endpointlerin istemcilerden saklanabilmesi ya da istemcilere özelleştirilebilmesi gibi olanaklar sağlar. İstemci açısından erişim adresi değişmeyeceği için API üzerindeki bakım işleri istemcileri etkilemez.
- API'nin gerçek adresini istemcilerden saklamak ekstra bir güvenlik sağlar.
- Firma/kurum içi kullanımda bile API'lere doğrudan erişim istenmeyebilir. Bir yazılımcının doğrudan API'ye erişmesi yerine, bir takım biçimlendirmelerle davranışı özelleştirilmiş olan API Proxy'e erişip bunu API olarak kullanması istenir. Böyle bir senaryoda, API'ye erişim Firewall arkasına alınarak yalnızca izin verilen API Proxy katmanından erişim sağlanmasına izin verilir. Böylece orijinal API'lere erişim denetim altına alınır.
- API Proxy üzerinde yapılacak biçimlendirmelerle, API'nin davranışı koduna müdahale etmeden değiştirilebilir, özelleştirilebilir. Bu sayede daha az kod yazarak işlem yapmak mümkün olur.
- SOAP servislerin REST olarak açılması mümkün hale gelir.
- Aynı API, farklı adresler üzerinden farklı istemcilere farklı ayarlarla açılabilir.
- Mesaj trafiğinin izlenmesi, loglanması, dönüştürülmesi ve benzeri işlemler mümkün olur.
- Birden çok API'nin sunduğu hizmetler API Proxy üzerinden birleştirilerek açılabilir.
- API Proxy envanteri oluşur ve böylece API envanteri de oluşmuş olur. Kimlere, hangi adreslerden, hangi gerekçeyle, hangi kısıtlamalarla hizmet verildiği takip edilebilir hale gelir.
Özetle, API ile istemci arasına bir katman koymak, maliyet, güvenlik, izleme, geliştirme ya da yönetim gibi birçok açıdan çok önemli avantajlar getirir.
Sıklıkla, istemci ve API arasına bir katman eklemenin performansı düşürebileceği akla gelir. Bu endişe gereksizdir. Çünkü
- Bir mesajın herhangi bir ek kontrol eklenmemiş, biçimlendirme yapılmamış (Politika eklenmemiş) bir API Proxy üzerinden geçerek Backend API'ye yönlendirilmesi ve dönen yanıtın aynı yoldan istemciye gönderilmesinin getireceği ek gecikme genelde milisaniye düzeyindedir ve ihmal edilebilir.
- Bu sürenin dışında kalan, API Proxy ile biçimlendirilerek ve API Gateway tarafından ele alınan bütün işler, zaten bir şekilde ele alınması gereken işlerdir. Dolayısıyla bu işlerden kaynaklanacak bir işlem süresinin, sırf bu amaç için özel olarak geliştirilmiş ve optimize edilerek performansı belirli bir seviyeye çıkartılmış API Gateway tarafından ele alınmasının bir yazılımcının kodu ile ele alınmasından genellikle daha etkin olacağını düşünmek yanlış olmaz.
- API Gateway yazılımları Cache, yük dağıtma gibi olanaklar ile performansı arttıracak olanaklar sağlar.
- API Gateway yazılımları performansı izleme olanağı verir. Böylece, API trafiğinin durmasına neden olabilecek ve saniyelere ya da belki dakikalara yayılan gecikmelerin, API Gateway'den mi, Backend API'den mi kaynaklandığını yakalama olanağı verir.
- API Gateway kullanılan bir senaryoda kaçınılamayan birkaç milisaniyelik gecikme olsa bile, sağlanan faydalar karşılığında bu maliyet kabul edilmelidir.
Hızlıca bir API Proxy oluşturup erişime açmak için Hızlı Başlangıç sayfasına bakabilirsiniz.