API Gateway nedir?

Son yıllarda duymaya alıştığımız internet of things(nesnelerin interneti) olayının artması üzerine, kullanılan API’ların yönetiminden doğan zorluklara karşı Amazon Web Service tarafından getirilen çözümdür.

 

Özellikle microservice yapılanmalarında kullanılan kompleks servislerin clientlara karşı tek elden açılmasını sağlayan ve böylece giriş paragrafında da değindiğimiz gibi bir cephe niteliğinde olan bir API’dır. Clientlar bu API üzerinden güvenlik ve yetkilendirme kontrollerinden geçerler ve hedefteki microservice’i API Gateway aracılığıyla tetikleyerek sonuç alırlar.

API Gateway, client ile sıkı bağlı(tightly coupled) bir bağ yarattığı için eleştirilir ancak avantajları bu dezavantajı ciddi manada gölgelemekte olduğundan bu durum göz ardı edilebilmektedir.

API Gateway’in temel işlevi clienttan isteği alıp uygun servise iletmesidir.

 

API Gateway, istemcilerle backend sunucuları / mikro servisler arasında duran bir API yönetim aracıdır.

API Gateway API isteklerini alarak çeşitli kurallara göre uygun servislere yönlendiren bir ters vekil sunucusu (reverse proxy) olarak çalışır. API Gateway istek sınırlandırma, istatistik, kimlik doğrulama vs. çeşitli sık kullanılan işlevleri üzerine alarak asıl API sunucularınızın önünde bir üst katman oluşturur.

API gateway’ler istemcilerden gelen API çağrılarını alıp, kendi üzerinde veya arkadaki mikro servis mimarisi içinde çeşitli filtreler ve/veya işlemlerden geçirip son olarak da doğru endpointlere ulaşmasını sağlar.

Neden bir API Gateway kullanmalıyım?

Büyük ölçekli bir API servisi sağlayacaksanız aşağıdakilere ihtiyacınız olacaktır

  • API’nizi kötü niyetli ve olağan dışı kullanımlara karşı korumanız gerekir. Bunun için kimlik doğrulama, istek sınırlandırma vb. yöntemler kullanırsınız. Bunu her servis için ayrı ayrı oluşturmak yerine, isteğin ilk geldiği noktada tek seferde çözmeniz daha kolay ve yönetilir olur.
    Örneğin ürünlerin stok miktarlarını çeken ve farklı istemciler tarafından kullanılan bir mikroservisiniz varsa bu ana işlevi dışında işlerden haberdar olmasına gerek yoktur. Bırakın Rate Limiti en öne koyduğunuz API Gatewayiniz halletsin.
  • İnsanların API’nizi nasıl kullandığını görmek ve ölçmek ister, bunun için analitik ve izleme araçları kullanırsınız.
    Örneğin Yukarıdakine benzer şekilde en öndeki gateway katmanımız bu işlevi yerine getirebilir, diğer servislerin bu konudan haberi olmasına gerek yoktur.
  • Ücretli bir API’niz varsa bir ücretlendirme servisine bağlamak istersiniz. Örn. Google’ın ücretli bir API noktasını kullandığınızda (diyelim ki hartialar) asıl işlevi gerçekleştiren API doğrudan hesabınızdan kredi düşüşü gerçekleştirmiyor.
  • Zamanla yeni API servisleri eklemeniz, mevcutları belirli bir süre sonunda kaldırmanız veya farklı katmanlarda çalıştırmanız gerekebilir. Örn. Hangi yolun cevabının hangi sunucudan verileceğinin kararını API Gateway’e bırakabilirsiniz. V1 API’sini başka backend sunucuya, V2 API’sini başka bir backend sunucuya yönlendirebilirsiniz.
  • Yanıtları belirli kurallara göre önbelleklemeniz gerekebilir. Cachelemeyi ayrı bir katmanda çalıştırarak sonuçları backend sunucuya hiç istek yapmadan doğrudan cache’den sunabilirsiniz.

Bütün bunları ana mimarinize dahil etmek yerine bu fonkisiyonları yönetmek için tasarlanmış ayrı bir katman kullanmak daha kolay ve yönetilebilir olacaktır. İşte bunları yapan katmana API Gateway diyoruz. API Gateway olarak bulut sağlayıcıların sunduğu hizmetlerden faydalanabilir, açık kaynak kodlu çözümlerle kendi gatewayinizi kurabilir veya yukarıdaki işlevleri yapacak bir sistemi kendiniz kurabilirsiniz.

API Gateway İle Neler Yapılabilir?

  • Authentication ve Authorization
    İşlevsel sorumluluğu parça parça üstlenen servislere erişim api gateway üzerinden dolaylı yolla olacağından dolayı kimlik ve yetki doğrulama operasyonlarını sadece api gateway’de yapılandırılabilir.
  • Logging
    Servislere yapılan istekler hakkında detaylı loglamalar gerçekleştirilebilir ve böylece hangi servis, kim tarafından, ne kadar yoğunlukta işlevsellik gösteriyor vs. gibi istatistiksel bilgiler edinilebilir.
  • Response Caching
    API gateway üzerinden servislere gelen talepler neticesinde üretilen çıktıları cacheleyebilir ve böylece servis maliyetleri düşürülebilir.
  • Routing
    Servislerin adreslerini farklı şekilde kapsüllenebilir ve bu kapsül üzerinden clientlar ilgili esas routelara yönlendirilebilir.

Yukarıdaki maddelere baktığımızda API Gateway ile yazılımda problemlerin ve işlevsel operasyonların yapıldığı esas kod merkezlerinin dışında kalan ve problem alanından bağımsız kısımları ilgilendiren cross cutting concern ismi verilen alanları ve işlemleri yönetebildiğimizi görebilmekteyiz.

Peki API Gateway’in Avantaj ve Dezavantajları Nelerdir?

Avantajları Dezavantajları
  • Clienttın ihtiyacı doğrultusunda birden fazla servis tarafından üretilecek olan datayı tek bir request – response ile üretilmesini sağlayarak daha az maliyetli bir kullanıcı deneyimi ortaya koyabilir.
  • Authentication, authorization, logging, security, routing vs. gibi cross cutting concern kavramlarının tek elden yönetilmesini sağlayabilir.
  • Ve en önemlisi clientları, uygulamanın microservislere nasıl bölündüğü hususunda düşünmekten izole eder.
  • API gateway, ekstradan bir katman oluşturacağı için istek neticesinde işlevsel açıdan gözardı edilebilir bir farkla sürenin artmasına sebep olabilir.
  • API gateway; geliştirici, dağıtım ve bakım gerektiren şahsına münhasır bir katmandır.
  • Tüm servislere erişim api gateway üzerinden olduğu için herhangi bir çöküntü yahut kesinti durumunda tüm sistem aksaklığa

 

Leave a Reply

Your email address will not be published. Required fields are marked *