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

⚡ Akıllı Özet

Mikroservisler, bir uygulamanın küçük, bağımsız servis birimleri koleksiyonu olarak oluşturulduğu, hizmet odaklı bir mimari modelidir. Bu kaynak, monolitik ve mikroservis mimarisi arasındaki farkları, zorlukları, SOA karşılaştırmasını, popüler araçları ve en iyi uygulamaları açıklamaktadır.

  • 🧩 Temel Konsept: Mikroservisler, bir uygulamayı tek işlevli, bağımsız olarak dağıtılabilir modüllere ayırır ve her modülün sorumluluğunu 5 ila 10 geliştiriciden oluşan küçük bir ekip üstlenir.
  • ???? Tekdüze Zıtlık: Tek parça halindeki bir uygulama, tüm özellikleri tek bir sunucuda tek bir paket halinde bir araya getirir; bu nedenle ölçeklendirme, birden fazla tam kopyanın çalıştırılması anlamına gelir.
  • 🏗️ Mikro hizmet Archidoku: Her bir hizmet, bir iş fonksiyonunu yönetir, kendi örneğinde çalışır ve hafif, durumsuz protokoller aracılığıyla iletişim kurar.
  • 🗄️ Federasyon Verileri: Her mikro hizmetin kendi veri deposu vardır, bu nedenle bir hizmetin veri modelinde yapılan bir değişiklik diğerlerini etkilemez.
  • Araçlar ve Uygulamalar: Gibi araçlar WireMockDocker ve Hystrix, test etme, dağıtım ve hata toleransını destekler; her hizmeti kendi derlemesiyle durumsuz tutun.

Mikro Hizmetler Eğitimi

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önetilebilir olması 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çe anlatmak gerekirse, monolitik mimari, bir uygulamanın tüm yazılım bileşenlerinin tek bir pakette toplandığı büyük bir konteyner gibidir. Monolitik mimari bağlamında bir e-ticaret sitesi örneğini ele alalım.

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

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

Herhangi bir e-ticaret uygulamasında Arama, RevGörüntüleme ve Derecelendirmeler ile Ödemeler. Bu özelliklere müşteriler tarayıcıları veya uygulamaları aracılığıyla erişebilirler. E-ticaret sitesinin geliştiricisi uygulamayı dağıttığında, uygulama tek bir monolitik birim halindedir. Arama gibi farklı özelliklerin kodu, RevGörüntüleme, Derecelendirme ve Ödeme işlemleri aynı sunucuda yer almaktadı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ştirilmiş bir e-ticaret uygulamasını örnek 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 kurarlar.

Microservices Archidoku

Microservices Archidoku

Monolitik olarak ArchiMimari yapıda tüm bileşenler tek bir modülde birleşir. Ancak mikro hizmetlerde ArchiBu yapı, yukarıdaki Mikroservisler örneğinde gösterildiği gibi, birbirleriyle iletişim kuran ayrı modüllere (mikroservislere) dağıtılı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 ArchiBu yapıda, veriler birleştirilmiştir. Her mikro hizmetin kendi ayrı veri deposu vardır.

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

Microservicesyekpare 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ıyor.
Arıza tespiti kolaydır. Bir hizmet kesintiye uğrasa bile, diğerleri çalışmaya devam edebilir.Hata tespiti zordur. Belirli bir özellik çalışmıyorsa, tüm sistem çöker. Bu sorunu çözmek için uygulamanın yeniden derlenmesi, yeniden test edilmesi ve yeniden dağıtılması gerekir.
Tüm mikro hizmetler gevşek bir şekilde birbirine bağlı olmalıdır, böylece birinde yapılan değişiklikler diğerini etkilemez.Tek parça mimari, birbirine sıkıca bağlıdır. 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 ayırabilirler.Hizmetler birbirinden bağımsız olmadığı için, bireysel kaynak tahsisi mümkün değildir.
Sık kullanılan hizmete daha fazla donanım kaynağı tahsis edilebilir. Yukarıdaki e-ticaret örneğinde, ödeme işlemlerine kıyasla daha fazla kullanıcı ürün listesini ve aramayı kontrol etmektedir; bu nedenle arama ve ürün listeleme mikro hizmetine daha fazla kaynak tahsis edilebilir.Uygulama ölçeklendirmesi hem zorlu hem de israflıdır.
Mikro hizmetler her zaman tutarlı ve sürekli olarak erişilebilir durumda kalır.Geliştirme araçları, sürecin sıfırdan başlaması gerektiği için aşırı yükleniyor.
Veriler birleştirilmiştir. Bu, her bir mikro hizmetin kendi ihtiyaçlarına en uygun veri modelini benimsemesine olanak tanır.Veriler merkezileştirilmiştir.
Küçük ve odaklanmış ekipler. Paralel ve daha hızlı geliştirme.Büyük bir ekip ve önemli bir ekip yönetimi çabası gerekmektedir.
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şim kurar.Uygulanamaz.
Mikroservisler, projelere değil ürünlere odaklanma ilkesiyle çalışır.Projenin tamamına vurgu yapar.
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ı

  • Mikroservisler birbirlerine bağımlıdır ve birbirleriyle iletişim kurmak zorundadırlar.
  • 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 kendi ayrı mekanizmaları olacak ve bu da yapılandırılmamış veriler için büyük miktarda bellek kullanımına yol açacaktır.
  • Sorunların zincirleme reaksiyonunu önlemek için etkili yönetim ve ekip çalışması gereklidir.
  • Bir sorun bir sürümde ortadan kalkıp en son sürümde tekrar ortaya çıktığında, sorunu yeniden oluşturmak zor bir iş olacaktır.
  • Mikroservislerde bağımsız dağıtım karmaşıktır.
  • Mikroservis mimarisi çok fazla operasyon yükü getirir.
  • Sisteme yeni hizmetler eklendiğinde uygulamanın yönetimi zorlaşıyor.
  • Heterojen olarak dağıtılmış mikro hizmetleri desteklemek için çok çeşitli yetenekli profesyonellere ihtiyaç duyulmaktadı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ş içinde bir dizin listesi görevi gören bir kayıt defteri tarafından yönetilir. Uygulamaların hizmetleri kayıt defterinde bulması ve çağırması gerekir. Başka bir deyişle, 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ı daha küçük hizmetlerin 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çırsalar bile, doğru sıraya nasıl geri döneceklerini bilirler. İşte SOA ve Mikroservisler arasında detaylı bir karşılaştırma.

ParametreSOAMicroservices
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 BoyutuYazılımın boyutu, geleneksel yazılımlardan daha büyüktür.Mikroservis mimarisinde 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ğiDoğası gereği yekpare.Tam kapsamlı (full stack) bir yapıya sahip.
Bağımsız ve OdaklanmaSOA 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çılmaDağıtım süreci zaman alıcıdır.Dağıtım basittir ve daha az zaman alır.
Maliyet etkinliğiDaha uygun maliyetli.Less uygun maliyetli.
ölçeklenebilirlikLess Mikro hizmetler ile karşılaştırıldığında.Son derece ölçeklenebilir.
İş mantığıİş mantığı bileşenleri, basit iletişim protokolleri (XML veya JSON ile HTTP) ve SDK'lar/istemciler ile API tabanlı olarak tek bir hizmet etki alanı içinde saklanır.İş mantığı, kurumsal Servis Veri Yolu benzeri katmanlar (ara katman yazılımı) aracılığıyla alanlar arasında yer alabilir.

Mikro Hizmet Araçları

1) Wiremock: Mikro Hizmetlerin Test Edilmesi

WireMock Web servislerini taklit etmek ve sahte yanıtlar oluşturmak için esnek bir kütüphanedir. HTTP API'sinin belirli bir isteği aldığında döndürdüğü yanıtı yapılandırabilir. Ayrıca mikro servislerin test edilmesi için de kullanılır.

Download linki: http://wiremock.org/

2) Liman işçisi

Docker, konteynerler kullanarak uygulamalar oluşturmamıza, dağıtmamıza ve çalıştırmamıza olanak tanıyan açık kaynaklı bir projedir. Geliştiriciler bu konteynerleri kullanarak bir uygulamayı tek bir paket halinde çalıştırabilirler. Kütüphaneleri ve diğer bağımlılıkları tek bir pakette göndermenize olanak tanır.

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

3) Hystrix

Hystrix, hataya dayanıklı bir üründür. Java Bu araç, mikro hizmetler gibi dağıtılmış bir ortamda uzak hizmetlere, sistemlere ve üçüncü taraf kütüphanelere erişim noktalarını ayırmak için tasarlanmıştır. Arızalı hizmetleri izole ederek ve arızaların zincirleme etkisini önleyerek genel sistemi iyileştirir.

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

Mikro Hizmetlerin En İyi Uygulamaları Archidoku

  • Her bir mikro hizmet için ayrı veri deposu.
  • Kodun olgunluk seviyesini benzer düzeyde tutun.
  • Her bir mikro hizmet için ayrı derleme.
  • Her sunucuyu her zaman durumsuz (stateless) olarak ele alın.

SSS

Yapay zekâ yetenekleri genellikle ayrı mikro hizmetler olarak paketlenir, böylece uygulamalar modeli gömmeden bir API üzerinden çağırabilir. Yapay zekâ ayrıca birçok hizmette akıllı yönlendirme, otomatik ölçeklendirme ve anormallik tespiti gibi işlevleri de destekler.

Evet. Yapay zeka destekli gözlem araçları, kayıtları, ölçümleri ve tracBu, büyük ölçekli dağıtılmış sistemlerde arızaları tespit etmek, darboğazları tahmin etmek ve temel nedeni manuel analizden daha hızlı bulmak için hizmetler genelinde kullanılır.

Mikroservisler genel olarak durumsuz ve durumlu olarak sınıflandırılır. Durumsuz mikroservisler istekler arasında veri saklamazken, durumlu mikroservisler genellikle kendi özel veri depolarıyla desteklenen veri veya oturum durumunu korur.

Büyük teknoloji şirketleri gibi, Netflix, Amazon, Uber ve Spotify Mikroservisler, bağımsız ölçeklendirme ve sık dağıtım için kullanılır. Bu yaklaşım, hızlı ve izole edilmiş sürümlere ihtiyaç duyan yüksek trafikli, bulut tabanlı uygulamalar için uygundur.

Bu yazıyı şu şekilde özetleyin: