Ana içeriğe atla

MONOLITHIC YAKLAŞIMIN SONUNU GETİRECEK MİMARİ: MİKROSERVİSLER


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.

 Peki bu geçişe ihtiyacınız var mı? Bu sorunun cevabı tamamen sizin ihtiyaçlarınıza kalmış durumdadır. Getirdiği avantajlar yönünden düşündüğümüzde sizlere veya kullandığınız sisteme olumlu katkılar sağlıyorsa ve mali olarak da zarar ettirmeyecek bir geçiş sağlanacaksa bu geçişi kesinlikle yapmanızı tavsiye ederim.
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

Bu blogdaki popüler yayınlar

İNSAN SİNİR SİSTEMİNİN TAKLİDİ: YAPAY SİNİR AĞLARI

Yapay sinir ağları; beynin bir işlevi yerine getirme yönteminin matematiksel olarak modellenmesi ile tasarlanan sistemlerdir. Yapay sinir ağları, paralel dağıtılmış ağlar, bağlantılı ağlar, nuromorfik ağlar gibi adlarla da tanımlanmaktadır. Yapay sinir ağlarının ortaya çıkışından kısaca bahsetmem gerekirse; ilk yapay sinir ağı modeli 1943 yılında bir sinir hekimi olan Warren McCulloch ve bir matematikçi olan Walter Pitts tarafından “ Sinir Aktivitesinde Düşüncelere Ait Bir Mantıksal Hesap ( A Logical Calculus of Ideas Immanent in Nervous Activity )” başlıklı makale ile ortaya çıkarılmıştır. Öncelikle insanlarda bulunan sinir hücresinin yapısını ele alalım. Dentrites (Dendritler): Dendritler dışarıdan uyartıları alan ve hücre gövdesine ileten yapılardır. Dendritlerin çok sayıda olması, hücrelerin pek çok nörondan sinyal alma kapasitesini arttırır. Nucleus (Çekirdek): Akson boyunca işaretlerin periyodik olarak yeniden üretilmesini sağlayan yapılardır. Axon (Akson): Ak...

Mobil Uygulama Geliştirme: FLUTTER

Son zamanlarda merak sardığım konulardan biri de mobil uygulama geliştirme oldu. Küçücük bir uygulamanın bile verdiği çıktı ile mutlu olduğumu görünce mobil uygulama geliştirmekten zevk aldığımı hissettim. Araştırıp öğrenmeye başladım ve kısa sürede uygulama geliştirip ve bu uygulamayı kullanmak gerçekten güzel bir duyguydu. Şimdi sizlere geliştirdiğim basit bir Todo uygulamasından bahsedeyim. Flutter SDK ve Dart programlama dilini kullanarak çapraz platform çalışan yapılacaklar listesi uygulamasıdır. Bu uygulamada, verileri devamlılığını sağlamak için SQLite3 kullandım. Uygulama hem iOS hem de Android işletim sisteminde çalışmaktadır. Neden Flutter’ı Seçtim? ·  Flutter ile uygulamanızda yaptığınız bir değişikliği hot reload özelliği ile hızlı bir şekilde görebilirsiniz. Yani compile etmek(derlemek) için artık uzun süreler beklemeye gerek yok. Örnek vermek gerekirse Flutter ile varsayılan olarak gelen increment uygulamasını android sdk ile çalıştırmak ortalama 3 dak...

Davranışların İnterneti : IoB (Internet of Behaviors)

Bu yazımda yeni teknoloji trendleri içinde gördüğüm ve hayatımızda örnekleri olan fakat önümüzdeki zamanlarda daha çok hayatımızda olacak bir teknoloji konusu olan Davranışların İnterneti’ni ele alacağım.   Davranış İnterneti, çok çeşitli yeni veri kaynaklarıyla sonuçlanan cihazların birbirine bağlanması olan Nesnelerin İnterneti'nden (IoT) uzanır. Bu, geri bildirim döngüleri aracılığıyla eylemleri ve davranışları etkilemek için hem dijital hem de fiziksel dünyalardan gelen verileri bir araya getirir. IoB'nin yaptığı, bu verileri anlamlandırmak ve çevrimiçi satın alma veya belirli bir markayı takip etme gibi belirli insan davranışlarına eklemektir. Davranışın İnterneti, doğrudan bireylere odaklanan mevcut teknolojileri birleştirir. Yüz tanımadan konum izlemeye kadar, elde edilen verileri nakit satın alma veya cihaz kullanımı gibi ilişkili davranışsal olaylara bağlar. Kullanıcıların çevrimiçi etkinliklerinden toplanan verileri davranışsal psikoloji perspektifinden anlamak, tam o...