.Net Core ile Api Gateway
Mikroservis yapılarında oldukça kullanılan Api Gateway yapısına geçmeden önce mikroservis yapısı ile alakalı biraz bilgi vermek isterim.
Mikroservis kavramını temel olarak ele alırsak küçük otonom ve bir arada çalışabilen servislerdir diyebiliriz. Projelere yeni özellikler eklendikçe yazdığımız kodlar büyür, okuma, bakım ve test edilebilirliği de azalacaktır.
Bunu engellemek amacıyla N-Tier dediğimiz katmanlı mimarileri ve soyutlama tekniklerini kullanabilirsiniz.
Monolitik uygulamalarda tüm uygulama tek bir container içerisinde bulunup tek bir database ile iletişime geçmektedir. Mikroservis mimarisinde ise her servis kendi database ile iletişime geçmektedir.Mikroservislerin yapısı ne kadar küçük olursa test edilebilirlik, okunabilirlik o kadar rahat olacaktır.
Peki neden mikroservis mimarisine ihtiyaç duyuyoruz ?
- Teknoloji : Birbirinden bağımsız olarak çalıştıkları için her mikroservis ‘te o iş için daha iyi performansı olan istediğimiz teklonojiyi kullanabiliriz.
- Ölçekleme : Monolitik yapılarda herşey tek bir container içerisinde olduğu için ölçeklemeyi tüm sistemi ele alarak yapmalıyız ancak mikroservis mimarilerinde istediğimiz servis üzerinde ölçekleme yapabiliriz. Mesela bir servisimiz yoğun bir şekilde memory kullanırken başka bir servisimiz yoğun bir şekilde I/O işlemi yapabilir. Bu servisleri scale edip kaynak kullanımını optimize edebiliriz.
- Geliştirme Kolaylığı : Monolitik uygulamalarda bir modülü değiştirdikten sonra uygulamanın tamamında kontrol ve test işlemlerinin başlatılması gerekir. Ancak mikroservis yapısında her servis kendi içerisinde ve bağımsız olduğu için geliştirme daha kolay olacaktır.
Ocelot Nedir ?
Ocelot open source bir Api Gateway’dir.
Api Gateway Nedir ?
- Mikroservisler arasında yönlendirme ve haberleşmeyi sağlar.
- Yetkilendirme
- Caching
- Logging
- Rate Limiting gibi konularda kolaylıklar sağlamaktadır.
.Net Core Web Api ile Ocelot ve Microservis Kullanımı
Adım 1 : Önce MicroServices isimli bir solution oluşturalım.
Adım 2 : Bu solution içerisinde 3 adet .Net Core Api projesi oluşturalım.
- OcelotGateWay
- ProductApi
- OrderApi
Adım 3 : Ocelot Gateway projesine Nuget Package manager’ı kullanarak Ocelot paketini yükleyelim.
Stabil sürümü olan 13.5.2 sürümünü projemize dahil edelim.
Adım 3 : Startup.cs içerisindeki ConfigureServices kısmına Ocelot servisini ekleyelim.
Adım 4 : Startup.cs içeresindeki Configure metoduna ocelot’u kullanacağımızı belirtelim.
Adım 5 : OcelotGateWay projesinin içerisine ocelot.json isimli bir dosya oluşturalım ve resimde görüldüğü gibi düzenleyelim.
Adım 6 : Tüm servisler üzerinde bulunan program.cs dosyalarını güncelleyelim.
Adım 7 : Ocelot.json dosyası içerisinde yönlendirmeleri kontrol edersek product ve order isimli iki adet controller olacağını görüyoruz. Şimdi bunları oluşturalım.
Adım 8: Multiple Startup Project
MicroServices Solution — Properties — Multiple Startup Projects
ayarlamalar bittikten sonra OcelotGateWay projemizi Set as Startup project olarak ayarlayalım ve tüm uygulamalarımızı çalıştıralım.
Adım 9: İlk kontrol. Postman kullanarak bu portlar üzerinden haberleşme gerçekleşiyor mu kontrol edelim.
Ocelot temel görevini yerine getiriyor, tüm istekler tek bir adresten giriş yapıyor ve ocelot.json dosyasına göre yönlendirmeler gerçekleşiyor. İşlem başarılı.
Kaynaklar;
- https://medium.com/hypertrends/microservices-api-gateways-ocelot-for-net-core-video-8bbd4ed3be8f
- https://docs.microsoft.com/tr-tr/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot
- https://dzone.com/articles/ocelot-the-api-gateway-framework-for-net
Umarım faydalı olur.
Github repo : https://github.com/furkandeveloper/MicroServices