Integration Patterns — Mikro Servis Mimarisi

Bir mikro servis mimarisi oluştururken, karşılaşacak zorluklar çokta farklı değildir; birden çok uygulama teknolojisi, bir ağ tarafından fiziksel olarak ayrılır ve birbiriyle iletişim kurması gerekir. Mikro servis entegrasyonu, son kullanıcı açısından sorunsuz bir deneyim oluşturmada hayati bir rol oynar.

API Gateway Pattern

  • Farklı kanallar tarafından birden çok mikro servis için birden fazla çağrı yapılabilir.
  • Farklı tipte Protokolleri işlemeye ihtiyaç vardır.
  • Farklı tüketiciler(consumers), farklı bir yanıt formatına(soap,rest..) ihtiyaç duyabilir.

Bir API Ağ Geçidi, yukarıdakilerle sınırlı olmamak üzere mikro servis uygulamasının ortaya çıkardığı birçok endişeyi gidermeye yardımcı olur.

  • Bir API Ağ Geçidi, herhangi bir mikro servis çağrısı için giriş noktasıdır.
  • Bir isteği ilgili mikro servise yönlendirmek için bir proxy hizmeti olarak çalışabilir.
  • Tüketiciye(consumer) geri göndermek için sonuçları bir araya getirebilir.
  • Bu çözüm, her belirli istemci türü için ayrıntılı bir API oluşturabilir.
  • Ayrıca protokol talebini dönüştürebilir ve yanıtlayabilir.
  • Ayrıca mikro servisler kimlik doğrulama/yetkilendirme sorumluluğunu da kaldırabilir.

Aggregator Pattern

Bu iki şekilde yapılabilir :

  • Kompozit bir mikro servis, gerekli tüm mikro servislere çağrı yapar, verileri birleştirir ve geri göndermeden önce verileri dönüştürür.
  • Bir API Ağ Geçidi(API Gateway), isteği birden çok mikro servise bölümleyebilir ve tüketiciye göndermeden önce verileri toplayabilir.

Herhangi bir iş mantığının(business Logic) uygulanacak ise bir kompozit mikro servis seçilmesi önerilir. Aksi takdirde, API Ağ Geçidi alternatif çözümdür.

Proxy Pattern

  • FTGO mobil(Food to Go ->örn: Yemek Sepeti) istemcisi için API uygulayan Mobil API
  • Tarayıcıda çalışan JavaScript uygulamasına API uygulayan Browser API
  • Üçüncü taraf geliştiriciler için API uygulayan Public API

Gateway Routing Pattern

Bir yönlendirme eşlemesi, örneğin, bir HTTP yöntemini ve servisin HTTP URL’sine giden yolu eşleyebilir. Bu işlev, NGINX gibi web sunucuları tarafından sağlanan ters(reverse) proxy özellikleriyle aynıdır.

Chained Micro-service Pattern

Bir mikro servis ( A ) tarafından alınan istek, daha sonra mikro servis ( B ) ile iletişim kuruyor ve mikro servis ( C ) ile iletişim kuruyor olabilir. Tüm iletişim senkronize olmaktadır.

Branch Pattern

Çağrılan mikro servis, mikro servisi zincirleri(chained) olabilir. Branch modeli, iş ihtiyaçlarınıza göre farklı mikro servis zincirlerini veya tek bir zinciri çağırmak için de kullanılabilir.

Client-Side UI Composition Pattern

Monolitik dünyada, tüm verileri almak ve UI sayfasını yenilemek/göndermek için kullanıcı arayüzünden arka uç(Backend) servislere yalnızca bir çağrı yaparlar.

Fakat mikro servisler, kullanıcı arayüzü, ekranın/sayfanın birden çok bölümü/bölgesi olan bir iskelet olarak tasarlanmalıdır. Her bölüm, verileri çekmek için bağımsız bir arka uç mikro servise bir çağrı yapacaktır.

AngularJS ve ReactJS gibi frameworkler bunu kolayca yapmanıza yardımcı olur. Bu ekranlar Tek Sayfalı Uygulamalar (SPA-single page application) olarak bilinir.

Her ekip, servisleri için sayfanın/ekranın bölgesini uygulayan bir AngularJS yönergesi(Directive - Angular) gibi bir istemci tarafı UI bileşeni geliştirir. Bir UI ekibi, birden çok özel UI bileşeni oluşturarak sayfaları/ekranları oluşturan sayfa iskeletlerini uygulamaktan sorumludur.