Bir çok farklı client tipini içeren ve bir çok microservice’ten meydana gelen bir uygulama dizayn edilecekse API gateway’i mimari içerisinde konumlandırmak gerekir. API gateway pattern’i ile birlikte kompleks bir uygulama için tek bir giriş noktası uygulamanın önüne entegre edilmiş olur.
API gateway client tarafı ile microservice’lerin arasında yer alır ve bir nevi reverse proxy olarak çalışır. Gelen istekleri arka tarafında bulunan microservice’lere route eder.
Ayrıca üzerinde “cross-cutting features” olarak isimlendirilen kimlik doğrulama, SSL termination ve cache gibi advanced konfigürasyon seçenekleri de mevcuttur.
Uygulamanın büyüklüğüne, client tiplerinin çeşitliliğine göre API Gateway’i bir den çok konumlandırmak önerilir. Tek bir API Gateway’i tüm microservice’lerin önünde konumlandırmak coupling problemini doğuracaktır. Microservice’lerin önünde tek bir toplayıcı olması iyi bir fikir değildir. Bu da microservice mimarisinin doğasına aykırı bir durumdur.
API gateway’in önemli özellikleri:
Reverse Proxy:
API gateway 7. katmanda client’lardan gelen HTTP isteklerini alıp microservice’lere yönlendirir. Client’lar tek bir URL üzerinden microservice’lere erişirler. Bu sayede client side ile microservice’lerin decouple olması sağlanmış olunur.
Uygulamaların modernizasyonu sırasında bir süre monolitic API ile entegre olması gereken client tarafı API gateway üzerinden kolaylıkla legacy Infra ile iletişim kurabilir. Yeni microservice’ler ile geliştirme yapıldıktan sonra basit bir trafik yönlendirmesi ile monolitic yapılar modernize edilmiş olur. Bu tarz geçişlerde client ile servisler arasında API Gateway konumlandırıldığı için bu işlemlerden client tarafı hiç bir şekilde etkilenmez.
Request Aggrigation:
Bu özellik ile bir çok microservice’i call edecek çoklu client istekleri tek bir client request’i içerisinde toplanır. Bu yaklaşım genellikle client tarafı birden çok microservice’ten veri çekeceği zaman kullanılır. Örneğin bu yaklaşım ile birlikte client tarafından gelen tek bir istek birden fazla microservice’e yönlendirilir, gelen cevaplar ise toplanıp client uygulamasına yönlendirilir. Mobile uygulamalarda ve java script kullanan single page web uygulamalarında bu özelliğin kullanılması önemlidir. geleneksel server side’da request yapan web uygulamalarında bu özelliği kullanmak çok da önemli değildir.
Cross-cutting concerns
API gateway’in sunduğu advanced özellikler sayesinde offload fonksiyonlarını microservice tarafından API gateway üzerine taşıyabilirsiniz. Böylelikle bu tarz gereksinimler tek noktada handle edilmiş olur. Böylelikle bu özelliklerin her microservice özelinde entegre edilmesi için gerekli olan development eforu ortadan kalmış olur.
Bu özellikler;
- Authentication & Authorization
- Caching
- Rate limiting & throttling
- Ip whitelisting
- Retry rules
- Data transformations