Günümüzde proje mimarileri SOA(Service Oriented Architecture)
temelinde monolithic yaklaşıma dayanmaktadır. Ve bu monolithic yaklaşım her iş
biriminin tek çatı altında toplandığı bir yaklaşımdır. Tüm modüller bir
aradadır. Farklı projeler aynı veritabanı üzerinden hareket edip web servisler
ile dış ortama açılmaktadır. Biraz monolithic yaklaşıma yakından bakacak
olursak standart web uygulamalarında, server side(sunucu tarafında çalışan)
uygulama clientlardan(istemci) gelen
requestleri(istek) işleyip, veritabanından verileri çekip-güncelleyip
sonrasında uygun html çıktısı olarak kullanıcılara göstermektedir. Tüm bu
işlemler tek aşağıda da gösterdiğim gibi bir çatı altında toplanmıştır.
Monolithic Yaklaşımın Dezavantajları;
- Uygulama boyutu yüksektir.
- Release döngüsü uzundur.
- Debugging problemleri ve test süreçleri oldukça sancılıdır.
- Geniş bir geliştirici ekibine ihtiyaç duyulur.
- Herhangi bir problem ve/ya değişiklikte uygulama ve uygulama tarafından sunulan servis erişilmez olur.
Monolithic yaklaşımdan kısaca bahsettikten sonra
gelelim esas konumuz olan mikroservis mimarisine…
NEDİR BU MİKROSERVİS MİMARİSİ?
Tek parça bir sistemin her biri bağımsız olarak
çalışan ve açık protokoller (http, udp,
messaging) vasıtasıyla birbiriyle iletişim kuran küçük servislere ayrılmasıdır.
Servis ne kadar
küçük olursa, mikroservis mimarisinin faydalarını en üst düzeye ve olumsuz
etkilerini de en alt düzeye indirmiş oluruz. Her mikroservis ayrı
bir varlık gibi düşünülebilir. Servisler birbirinden bağımsız olarak
değiştirilebilmelidir. Tabi ki göz ardı etmeyeceğimiz bir soru da bir
servisteki değişikliği ya da deployu(konuşlandırma) yaparken diğer başka
servislerde değişiklik yapmamıza gerek olup olmadığını sorgulamaktır.
NEDEN MİKROSERVİSE İHTİYAÇ DUYULDU?
Bunun için bahsetmiş
olduğum monolithic yaklaşımın dezavantajlarını avantaja dönüştürdüğü açıkça
görülmektedir. Aslında bu bile mikroservis mimarisi kullanımını öne çıkaracak
bir sebep iken avantajlarından da bahsetmeden geçmek olmaz.
Mikroservis
Mimarisi’nin Avantajları;
- Esnek Yapıda Oluşu: Sistemin componentinin(bileşenler) fail olması durumunda tüm sistemde sıkıntının görüldüğü monolithic yaklaşımın bu eksikliğini mikroservisle çözmek mümkündür.
- Kolay Deployment: Monolithic yaklaşımda yaptığımız en basit bir değişiklik için bile tüm sistemin deploy edilmesi gerekmektedir. Mikroservis ile sadece belirli iş için olan servislerdeki değişiklik için diğer servislerden bağımsız geçerli servisin deploy edilmesi yeterlidir.
- Kolay Müdahale Edilebilir Oluşu: Aynı mantıkla kolay deploy edilebildiği gibi eğer bir problem meydana gelirse sadece problem çıkaran bağımsız servisin problemini çözerek daha hızlı rollback(geri alma) işlemi yapılabilir.
- Güvenlik Optimizasyonu: Neredeyse her projede hayati önem taşıyan eski teknoloji, ömrünü yıllar önce kaybetmiş makinede çalışan bölümler bulunmaktadır. Ve eminim buna kimse dokunmak istemez çünkü değiştirmeye veya yeni teknolojiye geçirmek o kadar büyük ve riskli bir iştir ki her an elinizde kalabilir koca sistem. Mikroservis mimarisi bunun da önüne geçmeyi başarmamızı sağlamaktadır. Bağımsız ve düşük boyutlardaki bölümleri daha iyi bir teknolojiyle değiştirmek veya o alanı yönetmek(silmek ve dönüştürmek) daha kolay ve maliyeti daha düşüktür.
- Ölçek Optimizasyonu: Monolithic yaklaşımda yekpare bir servis olmasından dolayı tüm sistemi beraber ölçeklendirmeliyiz. Hatta projede çok küçük bir kısmı ölçeklendirmek istesek bile monolithic yapının dezavantajından dolayı genel bir ölçeklendirme yaparız. Mikroservisin yapısından dolayı böyle bir dezavantajı avantaja çevirmiş oluruz.
Aşağıda verdiğim bir anketi sonucuna göre, her CEO’nun bilmesi
gereken en popüler üçüncü terim mikroservisler olarak görünmektedir.
Buradan mikroservisin önemini anlayabiliyoruz.
Netflix, eBay, Amazon, Birleşik Krallık Hükümeti Dijital
Servisi, Twitter, PayPal, Gilt, Guardian gibi şirketler ve birçok diğer geniş
ölçekli web siteleri ve uygulamalar monolithic yaklaşımdan mikroservis
mimarisine geçmiş durumda.
Monolithic
Yaklaşım’dan Mikroservis Mimarisine Geçişte Karşılaşılacak Sorunlar
§ Eski
sistemde RDBMS kullanılıyorsa çoğu sorgunun değişmesi gerekecektir. Örneğin,
her servisin kendi veritabanı olacağından join kullanımını eski sistemdeki
halinden farklılaştırılmak zorunda kalınacaktır.
§ Kullanıcı
session(oturum) yönetimi yapısı farklılaştırılmak zorunda kalınabilir.
§ Servisler
farklı platformda ve ortamlarda çalışabileceğinden, bunların yönetim ve
monitoring maliyeti doğacaktır.
§ Fazlaca
veritabanı ve transaction(işlem) yönetimi zor olacaktır.
Umarım sizlere faydalı bir içerik üretebilmişimdir. Kendinize
çok iyi bakın. Sonraki yazılarımda görüşmek üzere, sevgiyle kalın…
Yorumlar
Yorum Gönder