Geniş çapta microservice tabanlu uygulama tasarlarken göz önünde bulundurulması gerken bazı durumlar vardır. API Gateway kullanımı da bu durumlardan birisidir.
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.
Microservice tabanlı uygulamalarınızın genişledikçe bazı gelişmiş özellikleri bunlar üzerinde konfigüre etmek hem development eforu gerektirecek, hem yönetimi zorlaştıracak hem de operasyonel iş yükü ortaya çıkartacaktır. Bu sebeplerden ötürü aşağıdaki sorularıtasarım aşamasında sorarak microservice tabanlı uygulamanızın api gateway gereksinimini belirleyebilirsiniz.
Client tarafı bir çok microservice’in bulunduğu mimaride endpointlere yaptığı request sayısını nasıl düşürebilir?
Microservice sayısının ve buna bağlı olarak endpoint sayısının fazla olduğu mimarilerde internet üzerinden yapılan request/response sayısı fazla olur. Bu tarz bir yapıda microservice sayısı arttıkça ortam kompleks hale gelir ve latency artar. Burada ideal olan response’un server tarafında toplu olarak handle edilmesidir. Bu tarz server side konfigürasyonları ile gecikme azalırken farklı kaynaklardan gelen datalar paralel olarak UI’ya verilir. Böylelikle UI olabildiğince hızlı şekilde data’yı gösterir.
Authorization, Data dönüşümü, dynamic request dispatching nasıl handle edilir? (Cross cutting concerns)
Authorization, security vb. cross-cutting gereksinimlerini her microservice özelinde handle etmek development eforu gerektirir. Bu sebeple microservice bileşenlerinin private ortamda bulundan Kubernetes,docker vb altyapılarda çalışmaları ve authorization,security gibi cross-cutting gereksinimlerinin API Gateway gibi merkezi noktalar üzerinde handle edilmesi gerekir.
Client uygulamaları HTTP/HTTPS dışında farklı port kullanan servisler ile nasıl iletişim kurabilir? (AMQP gibi)
Bu gibi durumlarda request’ler HTTP/HTTPS protokolleri üzerinden gelmeli ve serverside’ın anlayacağı protocol’e dönüştürülmelidir.
Mobile uygulamalar için endpointler nasıl şekillendirilebilir?
Farklı tipte client uygulamaları için microservice’ler tarafından sağlanan endpointler uygun olmayabilir. Yani mobile bir uygulama gereksinimleri ile web uygulamasına ait gereksinimler farklı olabilir. Bazı durumlarda response’ların optimize edilmesi gerekebilir. Ya da bir çok microservice’ten data toplanıp tek bir yanıt dönülebilir. Böyle senaryolarda farklı client tiplerine cevap verebilmek için client ve microservice’lerin arasında API gateway kullanmak doğacak problemleri ortadan kaldırır.