Page 12 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 12
12 | Sunucusuz Mikroservisler: AWS Uygulaması
Mikroservisler
Uygulamalar başlangıcından itibaren gittikçe büyür ve gün geçtikçe kontrol edilmesi zor bir hal
alır. Aslında birbirinden farklı işleri yapmakta olan hizmetlerin tek bir yapıda bulunuyor olması
aralarında gereksiz bir bağımlılık oluşmasına sebep olur. Bu bağımlılıklar gittikçe daha kompleks
bir hale gelir ve baş edilemez bir hale bürünebilir. Bu sorunu ortadan kaldırmak için iş tanımları
ve kapsamları belirli servisler oluşturarak, her bir servisin birbirlerinden bağımsız hatta habersiz
çalışabilmesi sağlanabilir.
Avantajları
Ölçeklendirme: Servisler birbirlerinden bağımsız uygulamalar olduklarından, her biri tek başına
ölçeklendirilebilir. Servislerin ihtiyaçları diğer servislere bir etkisi olmadan giderilebilir.
Veri Izolasyonu: Mikroservis mimarisine göre her bir servis kendi veri tabanına sahiptir. Bu servis
ile alakalı verilerin gereksiz yere erişilmesini engeller. Aynı zamanda veri tabanlarının ayarlanması
da servis özelinde olduğu için bir yan etki yaratması söz konusu olmaz.
Hata Izolasyonu: Servisler birbirlerinden bağımsız olduklarından, birinde oluşan hatanın diğer
servislere veya bütün sisteme etkisi minimize edilir ve alakalı yerde kontrolü sağlanmış olur.
Teknoloji Özgürlüğü: Birbirinden bağımsız sistemler, birbirleri ile haberleşme konusunda entegre
olabildikleri sürece farklı teknolojileri kullanmakta özgürdürler. Bu da servis ile alakalı en uygun
teknolojilerin seçilmesi ve daha iyi performansın alınabilmesini sağlar.
Anlaşılabilirlik: Bütün sistem daha küçük parçalara bölündüğü için her bir servis kendi içerisinde
daha kolay kavranabilir hale gelir. Ayrıca her bir servis için atanan küçük takımlar bütün sistem
yerine sadece bu servise özgü mantıkları daha doğru ve kolayca kavrayabilir.
Bakım ve Geliştirme: Her servis birbirinden bağımsız geliştirildiği ve dağıtıldığı (deploy) için,
yeni özellikler eklenmek istendiğinde veya hata çözümlerinde bütün sistem kodunun dağıtımı
gerekmez. Aynı şekilde hatalı bir sürümde geri alma (rollback) işlemini de sadece belirli serviste
yapma imkanı sunar.
Dezavantajları
Komplekslik: Her bir servis tek başına monolitik mimariden daha basit bir yapıya sahip olsa da
servislerin birbiriyle iletişimi de düşünüldüğünde bütün sistem daha kompleks bir yapıya sahiptir.
Geliştirme ve Test: Servislerin geliştirilmesi ve test edilmesi, diğer servislere bağımlılığı bulunduğu
durumlarda, monolitik yaklaşıma kıyasla daha zor bir hal almaktadır. Senaryoya dahil olan her bir
servisin geliştirme esnasında uygun durumda bulunması gerekir.