Microservices söz konusu olduğunda, hizmetlerin gelişim yaşam döngüleri de bağımsız olmalıdır. *
Farklı SLDC ve farklı geliştirme ekipleri
Gerçek bir MS sisteminde, her biri bir veya daha fazla hizmetten sorumlu olan ekosistemin geliştirilmesinde yer alan birkaç ekip olabilir. Buna karşılık, bu takımlar farklı ofislerde, şehirlerde, ülkelerde, planlarda yer alabilirler ... Belki de birbirlerini tanımıyorlar, bilgi ya da kod paylaşmayı çok zorlaştıran (mümkünse). Ancak bu çok uygun olabilir çünkü paylaşılan kod aynı zamanda bir çeşit paylaşım mantığı anlamına gelir ve hatırlamak için önemli olan şey, belirli bir takım için anlamlı olanın başka bir takım için yapması gerekmediğidir. Örneğin, DTO Müşterisi göz önüne alındığında, oyundaki hizmete bağlı olarak farklı olabilir, çünkü müşteriler her hizmetten farklı yorumlanır (veya görülür).
Farklı ihtiyaçlar, farklı teknolojiler
İzole edilmiş SLDC'ler ayrıca ekiplerin kendi gereksinimlerine en uygun yığını seçmelerini sağlar. Belirli bir teknolojide uygulanan DTO'ların uygulanması, ekiplerin seçme kapasitelerini sınırlandırıyor.
DTO'lar iş kuralları veya hizmet sözleşmeleri değildir
Hangi DTO'lar gerçekten? Verileri bir taraftan diğerine taşımaktan başka bir amacı olmayan nesneleri düzleyin. Çanta ve alıcılar. Genel olarak, hiçbir bilgiye sahip olmadığından, yeniden kullanıma değecek bir tür "bilgi" değildir. Uçuculukları ayrıca kuplaj için onları kötü adaylar yapıyor.
Dherik’in söylediklerinin aksine, bir hizmetin DTO’larını değiştirmesi, aynı zamanda başka hizmetlerin de değişmesi gerekmeden mümkün olmalıdır . Servisler toleranslı okuyucular, toleranslı yazarlar olmalı ve toleranssız olmalıdır . Aksi takdirde, hizmet mimarisini bir anlam ifade etmeyecek şekilde birleştirmeye neden olurlar. Bir kez daha ve Dherik'in cevabının tersine, eğer üç hizmet aynı DTO'lara ihtiyaç duyuyorsa, hizmetlerin ayrıştırılması sırasında bir şeyler ters gitmiştir.
Farklı iş, farklı yorumlar
Hizmetler arasında çapraz kavramlar olsa (ve olacak olsa da), tüm hizmetleri aynı şekilde yorumlamaya zorlamak için kanonik bir model uygulamak zorunda olduğumuz anlamına gelmez.
Vaka Analizi
Diyelim ki şirketimiz Müşteri Hizmetleri , Satış ve Nakliye olmak üzere üç bölümden oluşmaktadır . Bu sürümlerin her birinin bir veya daha fazla hizmet olduğunu söyleyin.
Onun yüzünden Müşteri Hizmetleri, etki alanı dili , müşteriler, kavramı etrafında uygular hizmetleri müşterilerin olan kişiler . Örneğin, müşteriler isim , soyadı , yaş , cinsiyet , e-posta , telefon vb. Olarak modellenmiştir .
Şimdi, Sales and Shipping hizmetlerini kendi alan dillerine göre de modelliyor. Bu dillerde, konsept müşteri de belirleyici bir farklılık göstermektedir. Onlara göre, müşteriler (mutlaka) kişi değildir . İçin Satış , müşteriler bir olan Belge numarası Bir Kredi Kartı ve fatura adresi için, Nakliye bir tam adını ve gönderim adresi de.
Sales and Shipping'i Müşteri Hizmetinin kanonik veri modelini benimsemeye zorlarsak , tüm temsili sürdürmeleri ve müşteri verilerini müşteri hizmetleri ile senkronize tutmaları gerekiyorsa gereksiz karmaşıklığa neden olabilecek gereksiz verilerle uğraşmaya zorluyoruz. .
İlgili Bağlantılar
* İşte bu mimarinin gücünün dayandığı yer
proto
gRPC dosyasını veyaavro
Kafka'nın şemasını paylaşmak ve DTO'ları her iki hizmette de paylaşmak sorun değil, ancak iki proje arasında paylaşılan bir kütüphaneyi paylaşmam.