microservices etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
microservices etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Monolithic mimarinin nispeten küçük uygulamalarda avantajları ve uygulama büyüdükçe yaşattığı zorluklar

Günümüzde microservice mimariye doğru hızlı bir geçiş var. Microservice mimarinin getiridiği avantajlar yatsınamaz. Fakat Chris Richardson "Microservices Patterns" kitabında küçük uygulamalarda monolotich mimarinin avantajları olduğunu söylüyor.



Bunlar:

1-) Kolay geliştirme : IDE'ler ve diğer geliştirici araçları sadece bir uygulamayı geliştirmek için focus oluyorlar.

2-) Uygulama üzerinde radikal değişiklikler yapabilmek : Radikal bir şekilde kodu, database şemasını kolayca değiştirip build ve deploy yapmanız microservice'e göre çok daha kolay.

3-)Test edilmesi kolay :  Geliştiriciler, uygulamayı başlatan, REST API'sini çağıran ve Selenium ile kullanıcı arayüzünü test eden uçtan uca testleri rahatlıkla yazabilirler.

4-) Dağıtımı kolay : Bir geliştiricinin tek yapması gereken, WAR dosyasını Tomcat'in yüklü olduğu bir sunucuya kopyalamaktır.

5-) Ölçeklendirmesi kolay : Uygulamanın birden fazla örneğini bir yük dengeleyicinin arkasında çalıştırabilirsiniz.

Ancak zamanla geliştirme, test, dağıtım ve ölçeklendirme çok daha zor hale gelir. Eğer uygulamanın karmaşıklığı önceden ileride artacağı tahmin edilebiliyorsa microservice mimari ile başlanmadılır. Küçük ve karmaşık olmayan uygulamalar monolotich mimariye daha uygundur.

Monolotich mimari ile yazılan bir uygulama düşünelim. Herbir sprint'de uygulamaya yeni özellikler eklenir ve uygulama code base'i giderek büyür. Buna bağlı olarak yazılım ekibi de giderek kalabalıklaşır. Uygulamayı yönetmek giderek zorlaşmaya başlar. Fonksiyonel olarak ayrılmış Agile takımlar ortaya çıkar. Agile yöntemler kullanmak giderek zor hale gelir.

Uyguluma giderek karmaşıklaştıkca ve büyüdükçe monolotich mimaride yaşanan zorluklar :

1-) Karmaşıklık geliştiricileri korkutur hale gelir : Uygulama çok karmaşık hale geldiğinden hataları düzeltmek ve yeni özellikleri doğru şekilde uygulamak zor ve zaman alıcı hale gelir. Son teslim tarihleri genellikle kaçırılır.

2-) Geliştirme yavaşlar : Büyük uygulama, geliştiricinin IDE'sini aşırı yükler ve yavaşlatır. Uygulamayı build etmek uzun zaman alır. Dahası, çok büyük olduğu için, uygulamanın başlatılması uzun zaman alır. Sonuç olarak, edit-build-run-test döngüsü uzun zaman alır ve bu da üretkenliği kötü etkiler.

3-) Commit'den deployment'a giden uzun ve yorucu yol : Uygulamayla ilgili bir diğer sorun da değişikliklerin üretime aktarılmasının uzun ve acı verici bir süreç olmasıdır. Ekip genellikle ayda bir kez, genellikle Cuma veya Cumartesi gecesi geç saatlerde üretim güncellemelerini dağıtır. Ve continuous deployment benimsemek imkansız gibi görünür. Feature branch'lerinin merge işlemi saatler alabilir ve production'a geçmenin bu kadar uzun sürmesinin bir başka nedeni de testin uzun sürmesidir. Kod tabanı çok karmaşık olduğundan ve bir değişikliğin etkisi iyi anlaşılmadığından, geliştiriciler ve Sürekli Entegrasyon (CI) sunucusu tüm test paketini çalıştırmalıdır.

4-) Ölçeklendirme zor : Bunun nedeni, farklı uygulama modüllerinin çakışan kaynak gereksinimleri olmasıdır. Örneğin uygulamada bazı modüller , çok fazla belleğe sahip sunucularda ideal olarak deploy edilen büyük bellek veritabanında saklanırken, görüntü işleme modülü CPU yoğun bir işlemdir ve en iyi CPU'lara sahip sunucularda en iyi şekilde çalışır. Bu modüller aynı uygulamanın bir parçası olduğundan, sunucu yapılandırmasında bu aşamada ödünler verilmesi gerekir.

5-) Reliable bir monolitich sunmak zor : Reliable olmamasının bir nedeni, büyük boyutu nedeniyle uygulamayı kapsamlı bir şekilde test etmenin zor olmasıdır. Bu test edilebilirlik eksikliği, hataların productiona geçmesi anlamına gelir. Daha da kötüsü, tüm modüller aynı işlem içinde çalıştığından uygulamada hata izolasyonu yoktur. Çoğu zaman, bir modüldeki bir hata - örneğin bir bellek sızıntısı - uygulamanın tüm modullerini tek tek çökertir.

6-) Giderek kullanılmayan teknolojiye mahkum kalmak : Mimarinin giderek modası geçmiş bir teknoloji yığını kullanmaya zorlamasıdır. Monolitik mimari, yeni frameworklerin ve dillerin benimsenmesini zorlaştırmaktadır. Tüm monolitik uygulamayı yeniden yazmak son derece pahalı ve riskli olacaktır, böylece yeni ve muhtemelen daha iyi bir teknoloji kullanamayacaktır. Sonuç olarak, geliştiriciler projenin başlangıcında yaptıkları teknoloji seçimlerine bağlı kalırlar.

Microservice mimarsi nedir? Avantajları nelerdir?

Merhaba, bu yazımda sizlere yazılım dünyasında yeni bir trend olan ve benim de yeni olduğum microservice mimarisini anlatmaya çalışacağım. Fırsat buldukça farklı kaynaklardan yararlanarak güncelleiyeceğim makalemein geniş kapsamlı olmasını umuyorum.
Mayıs 2011'de Venedik yakınlarında düzenlenen yazılım mimarları çalıştayında katılımcıları çoğu yakın zamanda keşfetikleri ortak mimari tarzı olarak gördükleri mimariyi anlatırken 'microservice' ismini kullandılar.Mayıs 2012'de aynı grup en uygun isim olarak 'microservices' adına karar verdi. Aynı zamanlarda Fred George'ın yaptığı gibi, Ames Lewis Microservices-Java, Unix Way adı altında Mart 2012'de bir vaka çalışması olarak Kraków'da bu fikirlerin bazılarını sundu. Netflix'den Adrian Cockcroft web tarafında tanımlamalar yaparak yaklaşımı ince tanecikli SOA (fine grained SOA) olarak çevirebileceğimiz bir tanım yaptı.
Microservice'ler, bilinen bir diğer adıyla microservice mimariler gevşek bağımlı servislerin bir araya geldiği yazılım mimarisi stilidir.Microservices mimarisi felsefesi 'bir şeyi yapın ve bunu iyi yapın' Unix felsefesine eşittir.

Microservice mimarisinde, servislerin belli sınırlar içinde fonksiyonu belli, ve protokolleri hafif siklet olmalıdır.
Bir uygulamayı farklı küçük servislere bölmek modülariteyi arttırır ve uygulamanın anlaşılmasını kolaylaştırıp, uygulamaının geliştirilmesi ve test edilmesini kolaylaştırır. Bir uygulamayı aynı anda parelel olarak farklı servisler üzerinde farklı küçük takımların geliştirme yapmasına olanak sağlarken, uygulama yükleme (deploy) ve genişletilebilirlik (scale) işlemlerinde bu takımların bağımsız olmalarını da olanak sağlamaktadır. Mimari takımlara ayrıca refactoring'i sürekli halde yapmalarına olanak sağlarken , continuous delivery ve continuous deployment'a da imkan verir.



Microservice mimarinin yeni bir yapı olması nedniyle henüz yazılım dünyasında ortak bir tanımı bulunmamakla beraber, resmi bir tanımı da mevcut değildir. Sıklıkla bahsedilen tanımlamaları sıralayacak olursak :
Micrsoervice mimarisindeki (MSA-Microservice architecture) servisler HTTP gibi teknoloji bağımsız protokoller kullanarak bir ağ üzerinde birbiriyle haberleşen belli işleri yapan işlemler (process) lerdir.
MSA'da servisler birbirinden bağımsız ortama yüklenebilmelidirler (deploy).
Servisler birbirinin yerine kolayca geçebilmelidirler.(replace)
Servisler yeteneklerine göre organize edilebilimelidirler. (Kullanıcı arayüzü, tavsiye, lojistik, faturalandırma gibi)
Servisler ihtiyaçlarına göre farklı programlama dilleri kullanılarak kodlanabilir,farklı databaseleri kullanabilir ve farklı donanım ve yazılım çevrelerini kullanabilirler.
Servisler boyutları küçük, mesajlaşma etkin, bağlamlarda bazında sınırlandırılmış, otonom geliştirilen, bağımsız yüklenebilir, merkezi olmayan ve otomatize edilmiş süreçlerle build ve release edilen şekildedir.
Microservice Mimari :
Doğal olarak modülerdir.
Sürekli dağıtım yazılım geliştirme işlemleri destekler.Uygulamanın küçük parçasında yapılan değişiklik sadece bir servisin yeniden build edilmesi ve yeniden dağıtılmasını gerektirir.
Birçok yazılım prensibinin birleşimidir. Bunlar fine-grained interfaces (bağımsız deploy edilebilien servisler), Bussiness Driven Development (domain-driven desgin gibi),IDEAL bulut aplikasyon mimarileri, çok dilli programlama ve devamlılık, hafif siklet konteyner geliştirimi (lightweight container deployment), merkezi olmayan dağıtım (decentralized continuous delivery), ve DEVOps ile bütünsel hizmet gözetimi.



Kaynak:https://en.wikipedia.org/wiki/Microservices

Bonus :


Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo