Veri çoğaltmasını veya en basit mikro hizmet tasarımı için paylaşılan bir veritabanını önlemek için zor buluyorum, bu da bir şey eksik olduğumu düşündürüyor. Karşılaştığım sorunun temel bir örneği. Birinin bir envanteri yönetmek için bir web uygulaması kullandığını varsayarsak, iki hizmete ihtiyaç duyarlar; bunlardan biri, kalemleri ve stoktaki miktarı yöneten envanter ve kullanıcı verilerini yönetecek bir kullanıcı hizmeti için. Veritabanını kimin stokladığını denetlemek istiyorsak, envanter hizmeti için kullanıcı kimliğini veritabanına son stoklama değerine göre ekleyebiliriz.
Uygulamayı kullanarak, azalmakta olan tüm öğeleri ve son kez stoklayanların bir listesini görmek isteyebiliriz, böylece tekrar stoklamalarını isteyebiliriz. Yukarıda açıklanan mimariyi kullanarak, miktarın 5'ten az olduğu tüm öğelerin öğe ayrıntılarını almak için envanter hizmetine bir istekte bulunulur. Bu, kullanıcı kimlikleri de dahil olmak üzere bir liste döndürür. Ardından, envanter hizmetinden alınan kullanıcı kimlikleri listesi için kullanıcı adı ve iletişim bilgilerini almak üzere kullanıcı hizmetine ayrı bir istekte bulunulur.
Bu çok verimsiz görünüyor ve farklı hizmetler API'larına birden fazla istek yapmadan önce birden fazla hizmet almıyor ve bu da birden fazla veritabanı sorgusu yapıyor. Bir alternatif, envanter verilerindeki kullanıcıların ayrıntılarını çoğaltmaktır. Bir kullanıcı iletişim bilgilerini değiştirdiğinde, değişikliği diğer tüm hizmetler aracılığıyla çoğaltmamız gerekir. Ancak bu, mikro hizmetlerin sınırlı bağlam fikrine uymuyor gibi görünüyor. Ayrıca tek bir veritabanı kullanabilir ve bunu farklı hizmetler arasında paylaşabiliriz ve bir entegrasyon veritabanının tüm sorunlarına sahip olabiliriz .
Bunu uygulamanın doğru / en iyi yolu nedir?