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 :
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 :