.Net Core ile Api Gateway

Furkan Güngör
4 min readSep 29, 2019

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.

Monolithic Architecture vs Microservices Architecture

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.

MicroServices solution

Adım 2 : Bu solution içerisinde 3 adet .Net Core Api projesi oluşturalım.

  • OcelotGateWay
  • ProductApi
  • OrderApi
MicroServices Solution

Adım 3 : Ocelot Gateway projesine Nuget Package manager’ı kullanarak Ocelot paketini yükleyelim.

Nuget Package Manager for Ocelot

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.

Startup.cs for ocelot

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.

ocelot.json

Adım 6 : Tüm servisler üzerinde bulunan program.cs dosyalarını güncelleyelim.

OcelotGateWay for program.cs
OrderApi for program.cs
ProductApi for program.cs

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.

ProductController for ApiProduct
OrderController for ApiOrder

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.

OcelotGateWay project for result
ProductApi project for result
OrderApi project for result

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;

Umarım faydalı olur.

Github repo : https://github.com/furkandeveloper/MicroServices

--

--

Furkan Güngör

Solution Developer — I want to change the world, give me the source code.