API Gateway çözümü olarak KONG

Günümüzde hepimiz microserviceler üzerine konuşuyor, şirketlerimizde microservice mimarisine geçmek için çalışmalar yapıyoruz.

Microservice mimarisine geçerken authentication, security vb bir çok konuda çözüm üretiyor olmamız gerekiyor. Node.JS, Golang gibi farklı dillerde servis geliştirdiğimiz bir ekosistemde dil bağımsız çözümler veya hibrit çözümler ihtiyaçlarımız arasında ön plana çıkıyor.

Image for post
Image for post

Yukarıda saydığım bütün problemlere çözüm olarak Kong ürününü kullanabilirsiniz. Şimdi nedir bu Kong diye konuşacak olursak, Kong açık kaynak kodlu ölçeklenebilir API Gateway ürünüdür. Clientlerınızın servislerinize bir endpoint üzerinden ulaşmasını sağlar yani artık clientleriniz doğrudan servislerinizi değil kong endpointini çağırır ve bu endpoint ilgili servise yönlendirme yapar. Kong yönlendirme yaparken size sağladığı pluginler ile authentication,security, response rate limiting, request size limiting, logging gibi çözümler sunar bunlarında dışında hala ekstra bir ihtiyacınız varsa KONG’a plugin yazabilirsiniz :) Kong artık size şunu diyor servislerinizde sadece o servisin yapması gereken işi kodlayın gerisini ben hallediyorum.

Bu yazıda KONG’un kurulumundan bahsetme gereği duymadım(hatta servis endpointi ekleme, o servise plugin tanımlama gibi konuları da anlatmadım zaten kendi sitelerinde çok güzel anlatımları var).

Kong restful bir yönetim paneline sahip, kısaca eklemek istediğiniz endpointlerinizi, pluginlerinizi rest istek yaparak KONG’a gönderiyorsunuz. Açık kaynak kodlu olarak gönüllü kişiler tarafından geliştirilen dashboardlar (örnek PGBI kong-dashboard)bulunmakta ancak bunlar KONG’un güncellemelerine ne kadar kısa sürede ayak uyduruyor emin değilim.

Eğer KONG’un sitesinden adımları uygulayarak kurulumu gerçekleştirdiyseniz yapmanız gereken yine dökümantasyonu takip ederek herhangi bir dilde geliştirmiş olduğunuz servis endpontinizi KONG’a eklemek. Artık ilk endpointiniz KONG üzerinde tanımlandı, kong endpointi üzerinden servisinize erişebilirsiniz.

Örneğin ABC servisinizi KONG’a eklemiş olduğunuzu varsayalım. Bu servis bazında bazı pluginler kullanalım.

ABC servisine clientlerım elini kolunu sallaya sallaya gelmesin diyorsanız Kong size şuanda Basic Authentication,Key Authentication, JWT gibi 6 farklı çözüm sunuyor. Pluginler sayfasından kullanmak istediğimiz authentication çözümünü seçip adımları takip ederek ABC servisimize bir authentication tanımlayabiliriz. Yine pluginler sayfasından bir logging plugini tanımlayabiliriz. Bu pluginlerden birtanesine özel olarak değinmek istiyorum Correlation ID plugini header datanıza bir corelation id(nedir dersek Gökhan hocanın anlatımına bakabilirsiniz)ekliyor. CorrelationId’yi servis dünyasında kesinlikle kullanmalıyız, bu ekosistemde client’ın yaptığı bir istek genellikle birden fazla servis tarafından işleniyor (çok basit bakarsak sipariş verirken ödeme servisi ödemeyi alır, aynı anda product servisi ilgili ürünün stok sayısını azaltır).Header datasına eklediğimiz bu veri requestin hareketini izlememize olanak sağlarken, herhangi bir exception durumunda hangi serviste nereden nereye giderken neler olmuş bilgisini request bazlı oluşturulan bu id üzerinden bulmamızı sağlar.

Written by

Software and DevOps Consultant

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store