SOA ve Microservices arasında gerçekten farklı olan şey


10

feragat

Umarım kimsenin parmaklarına basmıyorum ya da her iki kavramın meraklılarını rahatsız etmiyorum

Arka fon

Net bir cevap bulamadan, Servis Odaklı Mimari ve Mikro Hizmetler arasında gerçek farklılıklar arıyordum .

Ben şöyle okudum:

  • SOA'nın yan etkileri
  • SOA anti-patern oluşturuyor
  • Mikro hizmetler SOA'nın hatalarını düzeltmek için geldi
  • ESB'ler gerçekten ESB değil, EAI
  • Message Brokers'a aşırı güvenme
  • Satıcılar SOA kavramını kötüye kullanıyor ve ürünlerini satmaya çalışıyor
  • SOA kontrolsüz bir şekilde büyüyor

Ancak yine de hiçbir şey Hizmet Odaklı Mimari (kavram olarak) ve Mikro hizmet (kavram olarak) arasındaki mimari farklılıkları açıkça tanımlamaz.

Anladığım kadarıyla, her ikisinin de var:

  • Servis Sağlayıcılar, tek bir şey yapıyor
  • Hizmet Ağ Geçidi / ESB, bu hizmetleri tüketicilere sunar
  • Hizmet Tüketicileri, ESB / Hizmet Ağ Geçidi üzerinden hizmetlere erişme

Soru

Peki, SOA'yı Mikro Hizmetlere yeniden etiketlemekten başka bir şey var mı? Microservices'in makro haline gelmesini sınırlamak için uygulanan bir teknoloji kısıtı mı?

Not: Umarım mermi noktalarında fikirler, sadece zor gerçekler aramıyorum

Referanslar

Güncelleme

Yığın taşması sorusunda benzer bir tartışma gerçekleşti, Mikro Hizmetlerin kılık değiştirerek Hizmet Odaklı Mimari olduğu ya da olmasın görüş ayrı.

SO sorusundan sonuç:

  • MS, SOA'nın özel bir halidir
  • MS, hizmet barındıran uygulamaların daha küçük boyutlarını onaylar
  • MS teknolojiye bağlıdır (açık protokol seçenekleri yerine HTTP kullanımı)
  • MS, disiplini uygulamak için teknolojiye güveniyor (hizmetlerin otomatik olarak konuşlandırılması)
  • MS, ESB'leri (kötü) ele alır, ancak IMHO'nun bir ESB türü olduğu API Ağ Geçitlerini kullanır

Bu, eğer doğruysa MS'in SOA olduğu sonucuna varır:

  • MS, Orkestrasyon kavramını destekliyor mu? Bir veya daha fazla ana işlem (ler) iş akışlarını yönetir
  • MS'de bir Message Broker katmanı var mı? Servis üreticilerinin mesaj alanından servis tüketicilerine mesaj formatlarını çeviren bir dizi adaptör
  • Mikro hizmetler yekpare kurumsal uygulamalardan veri okuyabilir mi? Monolitik bir uygulamanın API'leri olabilir mi? veya bağımsız çalışabilen bağımsız müstakil uygulamalar mı olmalı?

Son soruya verilen yanıtın hayır olduğu ortaya çıktıysa, Mikro Hizmetler, Kredi Kartı Yönetim Sistemleri veya mutabakat sistemleri gibi karmaşık iş akışı sistemlerini işleyemez.


Günümüzde dağıtılmış bilgi işlem için moda, açık, özel sorumlulukları olan ve basit, basit bir iletişim protokolü ile birbirine bağlanan küçük, gevşek bağlı, merkezi olmayan, hataya dayanıklı "ajanlar" veya "modüller" dir. SOA bunların tam tersi. Yüzeysel benzerliklerin köstebek tepesini gözlemleme ve farklılıklar dağına bakma.
Robert Harvey

1
SOA ayrıca küçük gevşek bağlı bileşenler uygulamamalı mı? SOA'nın arka ucunda, çoğunlukla uygun olan ileti biçimini, protokolü ve ortam erişimini kullanarak diğer uygulamalara hizmet veren ve diğer uygulamalardan hizmet sağlayan "En İyi Tür" olarak tanımlanan çok işlevli uygulamalar olduğunu biliyorum
A .Rashad

Olmalı, ama işaret ettiğiniz gibi, genellikle değil.
Robert Harvey

Martin Fowler's Site (I think he hates it big time)Barselona'daki konuşmasına gittiğimde bu benim hislerim değildi. Ödünleşmelerin ve insanların MS'in herkes için uygun olmadığını düşünmeden bu mimariye körü körüne nasıl geçtiğini biliyor.
Laiv

1
Microservices bir grup pazarlamadır. Fark yok. İnsanlar bunu yıllar önce yapıyorlardı ve şimdi birisi ona bir isim koydu ve şimdi yeni bir şey. MS'in (ÖZEL DEĞİL) bir SOA vakası olduğu konusunda haklısınız. Lütfen bundan bir şeyler yapmaya çalışmaktan vazgeçin.
Kyle Johnson

Yanıtlar:


12

Servis Sağlayıcılar, tek bir şey yapıyor

Projenin yaygın sonuçları olan temel fark, Microservices ile bu Servis Sağlayıcıların bağımsız olarak konuşlandırılabilir ve ölçeklendirilebilir olmasıdır .

Bu harika, çünkü daha çevik olabilirsiniz. Bir hizmetin değişmesi gerekiyorsa, bunu değiştirirsiniz, hiçbiri akraba değildir. Yeni bir çerçeve veya dil denemek istiyorsanız, o hizmet için bir yedek değiştirme yapmanız yeterlidir. Aniden 100x kapasiteye ihtiyacınız varsa, bu akını idare etmek için bazı yeni makineleri bu hizmetle döndürün. Bir şeyi sürümlendirmek istiyorsanız, tüm uygulamaya dokunmadan sürümlendirin. Ve işleri izlemek, enstrümanlamak, takımlar arasında bölmek, eskimiş ...

Ama bazı ağır sonuçları var:

  • Birkaç hizmetin dağıtılması, birkaç düzine hizmetin dağıtılmasından çok farklı olduğu için sürüm sürecinizin değişmesi gerekiyor.
  • Bir makineye bir hizmet dağıtmak birkaç düzine makineye dağıtmaktan çok farklı olduğundan, sürüm sürecinizin değişmesi gerekiyor.
  • Veritabanı tasarımınızın, kullanımınızın ve dağıtımınızın değişmesi gerekiyor, çünkü bu büyük paylaşılan DB'yi çalışmak için dağıtması gerekiyorsa (diğer tüm hizmetlerinizi kırarak) bir hizmeti dağıtmak anlamsızdır.
  • Kitaplık tasarımınızın ve kullanımınızın değişmesi gerekiyor, çünkü bu paylaşılan kitaplığı güncellemesi gerekiyorsa (diğer tüm hizmetlerinizi kırarak) bir hizmeti dağıtmak anlamsızdır.
  • Değişime Kişisel günlüğü / yetkilendirme / oturum yönetimi / vb ihtiyaçlar sadece bir hizmet olduklarında bulunmasını payı şeyler oldukça kolaydır çünkü ancak ürünü oluşturan bağımsız küçük hizmetleri bir grup var olduğunda farklı - ve konum gidiş için bir şeyler paylaşmak istiyorum. Oh, ve tüm bu paylaşılan şeylerin potansiyel olarak farklı versiyonlarda olmakla uğraşması gerekiyor.
  • İletişiminizin değişmesi gerekiyor. Az sayıda hizmetle, iletişimin sıkça gerçekleşmediği ve / veya yavaşça gerçekleşebileceği hatlar boyunca işleri bozabilirsiniz. Mikro hizmetlerle, birbirleriyle çok konuşacaklar ve yüksek gecikme bunu kesmeyecek.

1
Tüm bu nedenlerden dolayı mikro hizmetleri genel bir uygulama mimarisi olarak değil, belirli bir soruna (dağıtılmış bilgi işlemle ölçeklendirme) özel bir çözüm olarak görüyorum.
Robert Harvey

1
Enh, ölçeklenebilirlik / dağıtılmış bilgi işlem (tersi olarak karmaşıklık ve diğer olumsuz yönleri olan) ile bir uygulama mimarisi olarak görülmeleri gerektiğini düşündüğüm kadar geniş bir etkiye sahipler.
Telastyn

1
Mimari açıdan bakıldığında, mikro hizmetler tek bir şey yapan bağımsız mikro sistemlerken, SOA tüketicilere birden fazla hizmet sunan monolitik uygulamalar mıdır?
A.Rashad

1
Şimdi daha kafam karıştı! Monolitik bir uygulamanın mikro hizmetlere maruz kalması mümkün müdür? ya da bağımsız mikro uygulamalar mı olmalı?
A.Rashad

1
DZone Microservices vs SOA'daki bu makaleye bir göz atın .
Laiv

2

Sonuç olarak SOA ve Microservices arasındaki en belirgin fark ,

Akıllı Uç Noktalar Aptal Boruları

Aksine SOA , o habersiz hizmet tüketiciler ve üreticiler, delege trafik yönetimi, ileti biçimi çeviri ve harici sistemlere hizmet orchestratoration, örneğin ESB, hizmet Orchestrator Mesaj broker güvenmek istiyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.