Apakah layanan mikro "Pengguna" adalah ide yang bagus?

9

Saya baru mengenal layanan microser, dan dari pemahaman saya, DDD mengatakan agar layanan microser dibangun di sekitar domain bisnis. Ini berarti layanan-layanan microsoft yang baik akan seperti ScheduleScheduler dan SendNotification dalam konteks sistem pemesanan pertemuan.

Dalam contoh ini, kedua layanan mikro ini akan memerlukan akses ke data pengguna untuk memenuhi fungsi bisnis mereka, dan saya berjuang dengan cara terbaik untuk menyediakannya.

Bagi saya, Pengguna tampak seperti objek yang harus ada sebagai entitas di dalam layanan mikro , tetapi harus ada di sebagian besar layanan mikro karena data pengguna diperlukan hampir di mana-mana. Ini juga memperkenalkan banyak duplikasi.

Opsi lainnya adalah memiliki layanan microser pengguna yang menyediakan operasi CRUD pada basis data pengguna. Ini kemudian dapat digunakan oleh microservices lain untuk mengakses data pengguna, tetapi masalah yang saya miliki dengan itu adalah layanan pasangan erat bersama-sama ke titik di mana kita berakhir dengan monolit terdistribusi, yang sedikit lebih baik daripada monolit itu sendiri.

Apakah alasan saya tampaknya valid? Bagaimana orang lain menghadapi masalah?

Umair
sumber
1
Monolit terdistribusi tidak benar-benar lebih baik daripada monolit, biasanya lebih sulit dipertahankan. Ini adalah istilah yang digunakan untuk menggambarkan transisi yang gagal ke arsitektur layanan mikro.
Milan Velebit
1
Apakah Anda tidak bingung dengan otentikasi dan data pengguna?
user1428716
Saya pikir ini akan membantu Anda untuk membuat daftar data pengguna apa yang dibutuhkan layanan ini. Untuk memulai, informasi pengguna apa yang diperlukan layanan pemberitahuan?
JimmyJames
2
Anggap Anda memiliki semua jawaban tidak akan membantu Anda mendapatkannya. Inti dari latihan ini adalah membuat Anda sadar bahwa Anda mungkin tidak memerlukan data pengguna di setiap layanan. Layanan microservice yang benar-benar bersih dan dapat digunakan kembali tidak membutuhkan 'data pengguna'. Perlu tujuan untuk notifikasi.
JimmyJames
2
@Umair Cara yang baik untuk mengetahui apakah Anda dapat melakukan ini atau itu dengan layanan microser adalah untuk menentukan mengapa Anda membutuhkan layanan microser di tempat pertama. Kecuali jika Anda mencoba untuk memecahkan masalah tertentu di mana mereka adalah pilihan yang unggul, menggunakan layanan microser hanya demi itu biasanya merupakan ide yang mengerikan yang akan menggigit Anda di pantat seperti pengurai html-regex buatan tangan fanatik. Katakan saja.
T. Sar

Jawaban:

2

Jika Anda benar-benar membutuhkan objek / model / catatan Pengguna yang sama di sebagian besar layanan microser Anda, Anda mungkin tidak memerlukan layanan microser terpisah sama sekali ATAU mereka seharusnya menjadi objek-agnostik sejauh pengetahuan mereka berjalan. Dengan demikian, setiap layanan mikro mengelola sub-jenis model Pengguna dengan data yang diperlukan untuk fungsinya, dengan kunci yang digunakan untuk membedakan Pengguna itu. Di dunia yang ideal, dengan cara itu Anda dapat melakukan mutasi yang diperlukan dan menyebarkan perubahan di seluruh sistem melalui semacam broker acara (dengan asumsi Anda memiliki arsitektur yang dikendalikan oleh peristiwa), jika tidak, setiap layanan harus mengetahui beberapa (atau semua) layanan lain dan apa yang harus mereka lakukan dan jenis objek apa yang mereka harapkan terima.

Perlu diingat bahwa dalam lingkungan layanan mikro yang benar, setiap layanan microser diharapkan memiliki penyimpanan data sendiri yang terisolasi dari sisa sistem, mendukung pernyataan awal saya bahwa Anda harus membuang konsep entitas Pengguna sepenuhnya.

Sebagai contoh, sebuah layanan mikronik SendNotification hanya akan menerima objek dengan pengenal websocket (yang diteruskan ke seluruh layanan, akhirnya mencapai yang ini) dan data yang seharusnya dikembalikan ke pengguna, dan mungkin saja akan memverifikasi bahwa bidang yang diperlukan ada dan dorong pemberitahuan ke saluran yang sesuai oleh pengidentifikasi WS. Itu tidak harus tahu jenis objek yang ditanganinya sama sekali.

Milan Velebit
sumber