Mari kita asumsikan bahwa kita memiliki aplikasi Boot Musim Semi yang menggunakan arsitektur layanan microser. Setiap layanan memiliki model domain sendiri, tetapi setiap layanan harus mereferensikan objek domain pengguna. Apa yang akan menjadi pendekatan terbaik tentang cara mengatasi masalah ini? Apakah lebih baik untuk setiap layanan untuk hanya memiliki userId dan kemudian, ketika diperlukan, meminta layanan pengguna untuk detail pengguna, atau akan lebih baik untuk memiliki perpustakaan domain bersama untuk semua layanan microser?
spring
microservices
pengguna1176999
sumber
sumber
Jawaban:
Jika Anda memang menggunakan layanan-layanan microser untuk mendapatkan keuntungan dari skalabilitas, kopling longgar, dan modifikasi independen yang mudah dari masing-masing layanan, Anda harus tetap menggunakannya semaksimal mungkin.
Arsitektur keseluruhan
Saya pikir pendekatan terbaik adalah:
Bacaan tambahan:
Berbagi kode
Sekarang jika Anda menyetujui solusi di atas, kami memiliki layanan microservice (enkapsulasi model domain untuk pengguna) dan semua layanan lainnya adalah konsumen dari microservice yang sama. Pertanyaannya adalah untuk mengetahui apakah Anda ingin:
Saya tidak akan mengambil posisi yang jelas tentang hal itu, karena ada perang pendapat tentang topik pembagian kode ini, dan saya tidak berpikir bahwa saya berada dalam posisi untuk mengambil posisi objektif. Ini sudah ada beberapa bacaan tambahan:
Pendapat saya sendiri tentang itu adalah bahwa Anda TIDAK HARUS BERBAGI kode antara penyedia-pengguna dan konsumen-pengguna, untuk menghindari penggabungan yang ketat. Namun Anda DAPAT BERBAGI kode konsumsi-pengguna antara konsumen jika Anda memiliki manajemen versi yang kuat. Pendekatan ini akan memiliki beberapa keunggulan:
sumber
Saya akan menghindari perpustakaan bersama jika mungkin. Tanyakan pada diri sendiri sifat-sifat pengguna apa yang dibutuhkan setiap layanan? Seringkali ada domain inti di mana sebagian besar perilaku di sekitar pengguna akan hidup, dengan domain pendukung sering hanya membutuhkan userId.
Jika layanan Anda memerlukan detail lain tentang pengguna, lihat beberapa saran di sini mengenai cara menangani situasi seperti itu
sumber