Api Gateway (w/Ocelot)

Hande Ebrar Gunesdogdu
3 min readFeb 22, 2022

Api Gateway; özellikle microservice mimarisi gibi kompleks servislerin client’lara tek bir noktadan açılmasını sağlayarak ters proxy görevi gören api management aracıdır. Client üzerinden aldığı isteği uygun backend servisine iletir ve servislerden almış olduğu response’ları aggregate ederek client’a gönderir. Bu sayede client’ın, her bir service için ayrı ayrı istekler göndermesi yerine sadece Api Gateway ile haberleşmesi yeterli olacaktır.

Api Gateway authentication, metric collection, input validation, response transformation gibi önemli yönetim ve güvenlik işlemlerini de destekler.

Authentication

Client’ın birden fazla serviste bulunan verilere erişmesi gerekse bile, Api Gateway’de yalnızca bir kez authentication yapması yeterli olacaktır. Bu sayede latency azalır ve authentication işleminin uygulama genelinde tutarlı olması sağlanır.

Metrics Collection

Tüm istekler Api Gateway’den geçtiğinden dolayı analiz için veriler buradan elde edilebilir. Herhangi bir saldırıyı engellemek adına istekleri sınırlamak için de kullanılabilinir.

Input Validation

Gelen isteklerin başarılı bir şekilde tamamlanabilmesi için gerekli kontrolleri sağlar. Bir şeyler ters görünüyorsa, Api Gateway isteği servislere iletmeden reddedecektir.

Response Transformation

Api Gateway gerektiğinde response için bir nevi translator görevi görür. Örneğin, JSON formatında veriye ihtiyaç duyan bir client ile XML formatında response dönen bir backend servisi Api Gateway sayesinde iletişim kurabilir. Farklı uygulamalar ve kullanıcılar genellikle farklı bilgilere erişmeye ihtiyaç duyar. Mobil uygulamalar genellikle web uygulamalarına göre daha az veriye ihtiyaç duyar. Böylece Api Gateway gelen isteklere doğru response’ları sağlayabilir.

Ocelot

.NET Core tabanlı ve micro service mimarisi için tasarlanmış, open-source Api Gateway kütüphanesidir. Ocelot, Api Gateway’e gelen isteği konfigürasyonlara göre hedef servise yönlendirir ve oradan aldığı response’u client’a döner.

Aşağıda Ocelot ile yaptığım PoC çalışmasına ait diagram bulunmaktadır:

DownstreamPathTemplate, DownstreamScheme ve DownstreamHostAndPorts, request’in iletileceği servisin URL’ini oluşturur.

UpstreamPathTemplate, client’tan gelen belirli bir request için hangi DownstreamPathTemplate’in kullanılacağını belirler.

Client’tan gelen request’ler Api Gateway’de Ocelot config’lerine göre Customer Api ve Reservation Api’lara yönlendirilmekte. Böylece client’ların backend servisleriyle ilgili herhangi bir port bilgisini bilmesine gerek kalmamaktadır.

Ocelot ile Routing dışında Request Aggregation, Authentication, Authorization, Rate Limiting, Caching, Load Balancing, Logging, Tracing gibi bir çok işlem yapabilirsiniz.

Vakit ayırıp okuduğunuz için teşekkür ederim. ✨

--

--