2015-04-14 17 views
7

Biraz kafam karıştı. Genç bir bankacılık şirketinde çalışıyorum ve karmaşıklığı kırmak için bir DDD mimarisi uygulamaya karar verdik.Microservices sınırlı içeriği bozuyor mu?

Yani, benim sorum (Bu takımdaki biri tarafından yapılmış bir tasarım öneri izler) 'dir. Diyelim ki 3 farklı alanımız var. Etki alanı (web) hizmetlerini açığa çıkaran D1, D2, D3. Her etki alanı, aynı tablolara dayanan, güçlü yazılan işletme varlıkları kullanır. Bu alan adlarının önünde, tablolarda devam eden verilerin merkezi bir şekilde tutarlı olduğunu garanti etmek için bir mikro servis istiyoruz. D1, D2 ve D3, mikro servisin belirli kurallara uygun verileri sürdürmesini ister. Mikroservisin tablolara CRUD proxy'si olarak hareket etmesini istiyoruz. Mikroservis, D1, D2 ve D3 alanlarına spesifik DTO'lar sağlar ve tabloları D1, D2, D3'e gizler.

bu yaklaşım hoş geliyor mu? CRUD ve 1 + alan için veri tutarlılığını yönetmek için bir DDD mimarisinde mikro servisler kullanmayı düşünür müsünüz? Mikroservice ile "CRUDing" yapar ve verileri doğrular sınırlı içeriği bozar mı? Varsa DDD mimarisinde mikroservislerle uğraşmanın en iyi yöntemleri nelerdir? katkınız için

Çok teşekkürler,

[DÜZENLE]

aşağıdaki makale düşüncelerimi rafine bana yardımcı oldu: http://martinfowler.com/bliki/MicroservicePremium.html

Microservices monolitik sistemleri sürdürülebilir varlık başarısız oldu karmaşık durumlara yararlıdır. Ön tasarım uygulamaları için iyi bir aday değiller. Öte yandan DDD, projelerin en başında karmaşıklığı ele almaya çalışıyor. Başarılı DDD, microservices uygulamalarını karşılamamalıdır. doğrulama, hesaplama ve sebat (CRUD) gibi

+0

Bu sorunun tüm sorularınızı cevapladığından emin değilim, ancak bunun microservices konusunda ilginç bir okuma olduğunu öğrendim: http://particular.net/blog/microservices-future-or-empty-hype –

+0

Her ne olursa olsun İstediğiniz mimari, DDD mimarisi diye bir şey yoktur. Mikroservislerden oluşan bir mimari, DDD'yi kullanarak da (ya da iyi değil) çalışacaktır. –

+0

DDD'de birden çok etki alanı aynı veritabanı tablolarını paylaşmaz. Bu, mikro servisler için de geçerlidir. Sorunuzda yazdıklarınızdan, sisteminizin bir DDD yaklaşımıyla hiç uyuşmayacağı sanılıyor. –

cevap

11

şeyler tüm fonksiyonlar olup hizmetlerdir. Bu görevleri tek bir servise merkezleyerek, tüm diğer hizmetleri sıkı bir şekilde bir araya getiriyorsunuz ve SOA'nın temel faydasını kaybediyorsunuz. Yüksek bağlılığı koruyarak hizmetlerinizi gevşek bir şekilde birleştirmek birincil hedefiniz olmalıdır. Bu tasarımın bunu ihlal ettiğini hissediyorum.

Sen oldukça merkezileşmiş jenerik hizmet ve katmanlarla daha ilgili iş fonksiyonlarının dikey dilimler, gibi hizmetler tasarlamak istiyorum. Bir hizmet, kuruluşunuz genelinde tüm veritabanına UI'ye kadar uzanan bileşenlerden oluşmalıdır. Ayrıca, her hizmetin kendi veritabanı veya en azından şeması kullanışlı değilse şemaya sahip olması gerekir. Bir veritabanını paylaşan hizmetleriniz olur olmaz, tekrar sıkı sıkıya bağlanırsınız. Eğer herhangi bir servis basit CRUD ekleme yapmak gerekirse son bir kayda göre

, o zaman bu böyle de olmalıdır hepsi bu. Önce bir etki alanı modeliyle eşleştirmeye gerek yok. Uygulanması gereken gerçek değişmezlere sahip iş süreçleri için DDD'yi kaydedin. Tamamen ya da hiç bir yaklaşım olmak zorunda değil. Her kullanım durumu için mantıklı olan aracı kullanın.

5

Microservices bir natural correlation between microservice and BC boundaries var çünkü Sınırlı Bağlam, bunlar tamamlayıcıdır "kırmak" için gerekiyordu.

biz microservice veri tablolarındaki kalıcı olduğunu garantee istiyoruz merkezi yapıda

Microservices amaçları facading için burada değiliz, tutarlıdır. Ve bunların hepsi merkezileştirme değil, de merkezileştirme ile ilgilidir. İş yetenekleri etrafında düzenlenmiş modüler birimlerdir.Genellikle Domain önünde Sınırlı Bağlamlarda, giriş kapısı olarak hareket edecek, Domain arkasında kalıcı bir mağazada değil vekiller.

sorununuza yanlış çözüm uygulamak için çalışıyoruz görünüyor - onların bütün amacı yendi veri merkezli monolit için yakınsama noktaları olarak kullanarak microservices.

Belki derken ne demek istediğine üzerinde durmak gerekmektedir "garanti verileri kalıcı tutarlı" ve "belirli kurallara uyan verileri ısrar". Sadece kalıcılık katmanında veya mikro hizmet olmayan servislerde uygulanabilir.

+2

İyi nokta. Mikro servisimizin amacı, verileri ve tabloları etki alanı uygulamaları tarafından kötüye kullanılmaya karşı korumaktır. İyi bir yaklaşım olduğundan emin değilim. DDD'nin kalıcılık agnostik olması gerekiyordu. Diğer alan adlarının "korunan" veriler hakkında bilgi sahibi olmasını engelleyerek, alanları kendilerine özgü olanlarla besleyemeyiz. Ayrıca, mikro servisin CRUD işlevlerini (hizmet için değeri yoktur) ve İş Kurallarını içereceğini düşünüyorum. İş süreci yok. Belki bir iş kuralı Motoru gibi bir şey düşünmelisiniz ... –

+1

hizmetlerimiz iş kurallarını içerdiğinden, ** ** olan alanınızı kurmak istiyorum gibi görünüyor. Aptal bir DDD uygulaması ve destekleyici bir akıllı mikrofon servisine sahip olmak istersiniz, ki bu gerçekten garip. – guillaume31

İlgili konular