Mikro Hizmetler Eğitimi: Nedir, Archidoku ve Örnek

Mikro hizmetler nedir?

Microservices uygulamaların çeşitli en küçük bağımsız hizmet birimlerinin bir koleksiyonu olarak oluşturulduğu bir hizmet odaklı mimari desenidir. yazılım Mühendisliği Bir uygulamayı iyi tanımlanmış arayüzlere sahip tek işlevli modüllere ayırmaya odaklanan yaklaşım. Bu modüller, hizmetin tüm yaşam döngüsüne sahip olan küçük ekipler tarafından bağımsız olarak dağıtılabilir ve çalıştırılabilir.

“Mikro” terimi, tek bir geliştirme ekibi (5 ila 10 geliştirici) tarafından yönetilmesi gereken bir mikro hizmetin boyutlandırılmasını ifade eder. Bu metodolojide büyük uygulamalar en küçük bağımsız birimlere bölünür.

Monolitik Nedir? Archidoku?

Basit bir dille ifade etmek gerekirse, Monolitik mimari, bir uygulamanın tüm yazılım bileşenlerinin tek bir pakete toplandığı büyük bir konteyner gibidir.

Monolitik mimari bağlamında bir e-ticaret mağazası örneğini tartışalım.

yekpare Archidoku
yekpare Archie-Ticaret Uygulamasının yapısı

Herhangi bir e-ticaret uygulamasında Arama, RevGörünüm & Derecelendirmeler ve Ödemeler. Bu özelliklere, tarayıcılarını veya uygulamalarını kullanan müşteriler erişebilir. E-Ticaret sitesinin geliştiricisi uygulamayı dağıttığında, tek bir Monolitik birimdir. Arama gibi farklı özelliklerin kodu, Revgörünüm ve Derecelendirmeler ve Ödemeler aynı sunucudadır. Uygulamayı ölçeklendirmek için bu uygulamaların birden fazla örneğini (sunucusunu) çalıştırmanız gerekir.

Mikro Hizmet Nedir? Archidoku?

Mikro hizmet Archidoku bir iş alanı için geliştirilen küçük otonom servisler koleksiyonu olarak uygulamalar oluşturmaya izin veren bir mimari geliştirme stilidir. Uygulamaları gevşek bir şekilde birleştirilmiş bir servis koleksiyonu olarak düzenlemeye yardımcı olan yapısal stil mimarisinin bir çeşididir. Mikroservis ArchiTecture, ince taneli hizmetler ve hafif protokoller içerir.

Mikroservis mimarisiyle geliştirilen bir e-ticaret uygulaması örneğini ele alalım. Bu Mikroservis mimarisi örneğinde, her mikroservis tek bir iş yeteneğine odaklanmıştır. Arama, Derecelendirme ve Review ve Payment'ın her birinin kendi örneği (sunucusu) vardır ve birbirleriyle iletişim kurar.

Microservices Archidoku
Microservices Archidoku

Monolitik olarak ArchiTüm bileşenler tek bir modülde birleşiyor. Ancak Mikro Hizmetlerde ArchiYukarıdaki Mikro Hizmetler örneğinde gösterildiği gibi birbirleriyle iletişim kuran ayrı modüllere (mikro hizmet) yayılmışlardır.

Mikro hizmetler arasındaki iletişim, her istek ve yanıt çiftinin bağımsız olduğu durum bilgisi olmayan bir iletişimdir. Dolayısıyla Mikro hizmetler zahmetsizce iletişim kurabilir. Mikro hizmette ArchiVeriler birleştirilir. Her Mikro Hizmetin ayrı bir veri deposu vardır. Sonraki bu Java Mikroservisler eğitiminde, Mikroservisler ile Monolitik mimari arasındaki farkları öğreneceğiz.

Mikro Hizmetler ve Monolitik Karşılaştırması Archidoku

Microservices yekpare Archidoku
Uygulamanın her birimi en küçük olmalı ve belirli bir iş hedefini gerçekleştirebilmelidir. Tüm iş hedefleri için tek bir kod tabanı
Hizmetin Başlatılması nispeten hızlıdır Hizmetin başlatılması daha fazla zaman alır
Arıza izolasyonu kolaydır. Bir hizmet kapansa bile diğeri çalışmaya devam edebilir. Arıza izolasyonu zordur. Belirli bir özellik çalışmıyorsa tüm sistem çöker. Bu sorunu çözmek için uygulamanın yeniden oluşturulması, yeniden test edilmesi ve yeniden dağıtılması gerekir.
Birinde yapılan değişikliklerin diğerini etkilememesi için tüm mikro hizmetlerin gevşek bir şekilde bağlanması gerekir. Monolitik mimari sıkı bir şekilde birleştirilmiştir. Kodun bir modülündeki değişiklikler diğerini etkiler
İşletmeler, daha yüksek yatırım getirisi sağlayan hizmetlere daha fazla kaynak dağıtabilir Hizmetler izole edilmediğinden bireysel kaynak tahsisi mümkün değildir
Sık kullanılan hizmete daha fazla donanım kaynağı ayrılabilir. Yukarıdaki e-ticaret örneğinde, ödemelere kıyasla daha fazla sayıda kullanıcı ürün listelemesini kontrol ediyor ve arama yapıyor. Böylece arama ve ürün listeleme mikro hizmetine daha fazla kaynak ayrılabilir. Uygulama ölçeklendirmesi hem zorlu hem de israflıdır.
Mikro hizmetler her zaman tutarlı kalır ve sürekli olarak kullanılabilir durumda kalır. Sürecin sıfırdan başlaması gerektiğinden geliştirme araçlarına aşırı yük biniyor.
Veriler birleştirilmiştir. Bu, bireysel Mikro Hizmetin ihtiyaçlarına en uygun veri modelini benimsemesine olanak tanır. Veriler merkezileştirilmiştir.
Küçük Odaklı Ekipler. Paralel ve daha hızlı gelişme Büyük ekip ve önemli ekip yönetimi çabası gereklidir
Bir Mikro Hizmetin veri modelindeki değişiklik diğer Mikro Hizmetleri etkilemez. Veri modelindeki değişiklik tüm veritabanını etkiler
İyi tanımlanmış arayüzler kullanarak diğer mikro hizmetlerle etkileşime girer Uygulanamaz
Mikro hizmetler projelere değil ürünlere odaklanma prensibiyle çalışır Projenin tamamına vurgu yapın
Kod tabanları arasında çapraz bağımlılık yoktur. Farklı Mikro Hizmetler için farklı teknolojiler kullanabilirsiniz. Bir işlev veya program diğerlerine bağlıdır.

Mikro Hizmet Zorlukları

  • Mikro Hizmetler birbirlerine güvenir ve birbirleriyle iletişim kurmaları gerekecektir.
  • Monolitik sistemlerle karşılaştırıldığında, farklı yazılımlar kullanılarak geliştirilen, izlenmesi gereken daha fazla hizmet vardır. Programlama dilleri.
  • Dağıtık bir sistem olduğundan, doğası gereği karmaşık bir modeldir.
  • Farklı hizmetlerin ayrı mekanizmaları olacaktır ve bu da yapılandırılmamış veriler için büyük miktarda bellek oluşmasına neden olacaktır.
  • Artan sorunların önlenmesi için etkili yönetim ve ekip çalışması gereklidir
  • Bir sorunu yeniden oluşturmak, bir sürümde kaybolduğunda ve en son sürümde geri geldiğinde zor bir iş olacaktır.
  • Bağımsız Dağıtım, Mikro Hizmetler nedeniyle karmaşıktır.
  • Mikroservis mimarisi çok fazla operasyon yükü getirir.
  • Sisteme yeni hizmetler eklendiğinde uygulamayı yönetmek zordur
  • Heterojen olarak dağıtılmış mikro hizmetleri desteklemek için çok çeşitli yetenekli profesyonellere ihtiyaç vardır
  • Farklı iş görevleri için farklı sunucu alanlarını korumanız gerektiğinden mikro hizmet maliyetlidir.

SOA ve Mikro Hizmetler

SOA hizmetleri kuruluşta dizin listesi işlevi gören bir kayıt defteri tarafından korunur. Uygulamaların kayıt defterindeki hizmetleri araması ve hizmeti çağırması gerekir.

Başka bir dünyada, SOA tıpkı her sanatçının kendi enstrümanıyla performans sergilediği, müzik direktörünün ise herkese talimat verdiği bir orkestra gibidir.

Diğer yandan Mikroservisler, uygulamaların tek bir yazılım veya uygulama yerine, farklı küçük servislerin bir koleksiyonu olarak oluşturulduğu bir hizmet odaklı mimari tarzıdır.

Mikroservisler, her dansçının bağımsız olduğu ve ne yapması gerektiğini bildiği bir topluluk gibidir. Bu nedenle, bazı adımları kaçırırlarsa, doğru sıraya nasıl geri döneceklerini bilirler. Şimdi bu Mikroservis mimarisi eğitiminde, SOA ve Mikroservisler arasındaki farkı öğrenelim.

İşte SOA ve Mikro Hizmetler arasında ayrıntılı bir karşılaştırma

Parametre SOA Microservices
Tasarım türü SOA'da yazılım bileşenleri, hizmet biçiminde kullanılmak üzere dış dünyaya sunulur. Mikro Hizmet, SOA'nın bir parçasıdır. Bu, SOA'nın bir uygulamasıdır.
Bağımlılık İş birimleri bağımlıdır. Birbirlerinden bağımsızdırlar.
Yazılımın Boyutu Yazılım boyutu herhangi bir geleneksel yazılımdan daha büyüktür Mikroservislerde Yazılımın boyutu her zaman küçüktür
Teknoloji Yığını Teknoloji yığını Microservice'e göre daha düşüktür. Mikro hizmet teknolojisi yığını çok büyük olabilir
Başvurunun niteliği Doğada monolitik Doğada tam yığın
Bağımsız ve Odaklanma SOA uygulamaları birden fazla iş görevini gerçekleştirmek üzere tasarlanmıştır. Tek bir iş görevini gerçekleştirmek için üretilmiştir.
açılma Dağıtım süreci zaman alıcıdır. Dağıtım basittir ve daha az zaman alır.
Maliyet etkinliği Daha uygun maliyetli. Less uygun maliyetli.
ölçeklenebilirlik Less Mikro hizmetler ile karşılaştırıldığında. Son derece ölçeklenebilir.
İş mantığı İş mantığı bileşenleri tek hizmet etki alanı içinde depolanır Basit kablolu protokoller (XML JSON ile HTTP) API, SDK'lar/İstemciler ile çalıştırılır İş mantığı, hizmetler Ara Yazılımı arasındaki katmanlar gibi kurumsal Hizmet Veri Yolu etki alanları arasında yaşayabilir

Mikro Hizmet Araçları

1) Wiremock: Mikro Hizmetlerin Test Edilmesi

WireMock web servislerini saptırmak ve taklit etmek için esnek bir kütüphanedir. Belirli bir istek aldığında HTTP API'sinin döndürdüğü yanıtı yapılandırabilir. Ayrıca Mikro Hizmetleri test etmek için de kullanılır.

Download linki:http://wiremock.org/

2) Liman işçisi

Docker, konteynerleri kullanarak uygulamalar oluşturmamıza, dağıtmamıza ve çalıştırmamıza olanak tanıyan açık kaynaklı bir projedir. Geliştiriciler bu kapsayıcıları kullanarak bir uygulamayı tek bir paket olarak çalıştırabilir. Kitaplıkları ve diğer bağımlılıkları tek bir pakette göndermenize olanak tanır.

Download linki:https://www.docker.com/

3) Hystrix

Hystrix hata toleranslı bir java kütüphanesidir. Bu araç, Mikro Hizmetler gibi dağıtılmış bir ortamda uzak hizmetlere, sistemlere ve 3. taraf kitaplıklara erişim noktalarını ayırmak için tasarlanmıştır. Arızalı hizmetleri izole ederek ve arızaların kademeli etkisini önleyerek genel sistemi iyileştirir.

Download Link:https://github.com/Netflix/Hystrix

Mikro Hizmetlerin En İyi Uygulamaları Archidoku

  • Her Mikro Hizmet için ayrı veri deposu
  • Kodu benzer olgunluk düzeyinde tutun.
  • Her Mikro hizmet için ayrı yapı.
  • Her zaman vatansızlık gibi şiddetli davranın.

ÖZET

  • Mikroservisler, uygulamaların çeşitli en küçük bağımsız servis birimlerinin bir koleksiyonu olarak oluşturulduğu servis odaklı bir mimari desenidir.
  • Mikro hizmet Architecture, bir iş alanı için geliştirilen küçük otonom servislerin bir koleksiyonu olarak bir uygulama oluşturmaya olanak tanıyan bir mimari geliştirme stilidir.
  • Monolitik mimari, bir uygulamanın tüm yazılım bileşenlerinin tek bir pakette toplandığı büyük bir konteyner gibidir
  • Bir Mikro hizmette, uygulamanın tamamının her birimi en küçük olmalı ve belirli bir iş hedefini gerçekleştirebilmelidir.
  • Monolitik mimaride, büyük kod tabanı tüm geliştirme sürecini yavaşlatabilir. Yeni sürümler aylar sürebilir. Kod bakımı zordur
  • İki tür Mikro hizmet vardır: 1) Durum Bilgisi Olmayan 2) Durum Bilgisi Olan
  • Mikro hizmetler Java birbirlerine güvenirler ve birbirleriyle iletişim kurmak zorunda kalacaklar. Belirli bir özelliğe ve iş ihtiyaçlarına vurgu yapmanıza yardımcı olur
  • Kısaca SOA olarak bilinen hizmet odaklı mimari, eşzamanlı ve eşzamansız uygulamalar için istek veya yanıt tasarım modeline dayalı dağıtılmış bilgi işlemin bir evrimidir
  • SOA'da yazılım bileşenleri hizmet biçiminde kullanılmak üzere dış dünyaya sunulurken Mikro Hizmet SOA'nın bir parçasıdır. Bu, SOA'nın bir uygulamasıdır
  • Wiremock, Docker ve Hystrix bazı popüler Mikro Hizmet Araçlarındandır