Haruskah Anda mempublikasikan Peristiwa Domain atau Peristiwa Integrasi?

Saran umum adalah untuk tidak memublikasikan peristiwa domain di luar batas layanan Anda. Mereka seharusnya hanya ada dalam batas layanan Anda. Sebagai gantinya, Anda harus memublikasikan peristiwa integrasi untuk batasan layanan lainnya. Meskipun saran umum ini masuk akal, itu tidak begitu memotong-dan-kering. Ada banyak alasan mengapa Anda ingin memublikasikan peristiwa domain untuk digunakan oleh layanan lain. Berikut adalah pendapat saya tentang Peristiwa Domain dan Peristiwa Integrasi dan kapan menggunakannya.

Youtube

Lihat saluran YouTube saya tempat saya memposting semua jenis konten yang menyertai posting saya termasuk video ini yang menampilkan semua yang ada di posting ini.

Acara Domain

Apa yang kebanyakan orang rujuk dan terapkan secara umum ketika mereka berbicara tentang Peristiwa Domain berada dalam satu batas. Ketika perubahan keadaan atau sesuatu terjadi, peristiwa domain diterbitkan yang kemudian diproses oleh konsumen dalam batas yang sama.

Ini umumnya semua dilakukan dalam proses. Artinya semua konsumen memproses acara yang sama dalam proses yang sama dengan penerbit. Tidak ada perantara pesan atau pesan asinkron yang terjadi. Semuanya dilakukan dalam memori dan dalam proses. Karena itu, ini sering dapat dibungkus dalam transaksi basis data yang sama. Jika konsumen melempar pengecualian, itu akan menaikkan tumpukan panggilan ke penerbit, yang kemudian dapat mengembalikan transaksi.

Meskipun ini tampak di permukaan seperti pola yang baik, seringkali hal ini kurang diinginkan daripada benar-benar membuat konsumen Anda terisolasi dan memindahkan pemrosesan konsumen dari proses. Lebih lanjut tentang itu di posting video/blog mendatang.

Acara Integrasi

Peristiwa integrasi umumnya digunakan untuk berintegrasi dengan batas layanan lainnya. Ini berarti kami memindahkan pekerjaan dari proses dengan memanfaatkan perantara pesan. Konsumen masing-masing akan memproses acara secara terpisah tanpa mempengaruhi penerbit atau konsumen lainnya.

Haruskah Anda mempublikasikan Peristiwa Domain atau Peristiwa Integrasi?

Peristiwa integrasi berbeda dari Peristiwa Domain karena Peristiwa Domain adalah konsep yang sangat spesifik dalam suatu batas. Sebuah peristiwa domain mungkin tidak berarti apa-apa atau memiliki arti yang berbeda dirasakan untuk batas lain. Peristiwa Integrasi secara khusus untuk memberitahu batas luar lainnya bahwa sesuatu telah terjadi di dalam batas.

Acara Di Dalam vs Di Luar

Umumnya, Peristiwa Domain akan disebut sebagai “Acara Orang Dalam” karena tidak keluar dari batasnya. Sedangkan Peristiwa Integrasi disebut sebagai “Peristiwa Luar” karena tujuannya adalah untuk meninggalkan batasnya.

Haruskah Anda memublikasikan Peristiwa Domain atau Peristiwa Integrasi?

Mengapa orang merekomendasikan untuk tidak mengekspos peristiwa domain ke batas lain melainkan mengekspos peristiwa integrasi saja? Meskipun rekomendasi itu memiliki maksud yang baik, itu agak menyesatkan. Bagi saya, Anda dapat mengekspos peristiwa domain di luar batas Anda jika memenuhi 3 persyaratan berikut: Stabilitas, Pemahaman, dan Persyaratan Konsumen.

Stabilitas

Peristiwa yang stabil pertimbangkan untuk mengekspos di luar batas Anda sendiri.

Jika Anda berbicara dengan pakar bisnis dan domain secara kolaboratif menentukan berbagai peristiwa domain yang merupakan bagian dari batas tertentu, maka mereka cenderung menjadi konsep bisnis yang stabil.

Jika konsep bisnis stabil, maka acara Anda akan stabil dan kemungkinan tidak akan berubah. Ini adalah alasan utama mengapa orang mengadvokasi Acara Integrasi. Setelah Anda mengekspos suatu peristiwa ke konsumen luar, Anda harus membuat versinya seperti yang Anda lakukan pada perubahan API apa pun yang bersifat publik.

Jika Anda menggunakan konsep bisnis yang stabil maka mereka tidak akan berubah. Peristiwa Domain bukan untuk penyebaran data melainkan untuk menunjukkan apa yang telah terjadi. Ini seringkali sangat berguna untuk proses bisnis yang berjalan lama di mana banyak batasan yang berbeda terlibat. Peristiwa domain lebih bersifat perilaku daripada berasal dari CRUD.

Memahami

Mel Conway

Batas layanan dapat berupa batas linguistik. Satu konsep dalam satu batas dapat memiliki arti yang sangat berbeda di batas lain. Karena itu, peristiwa domain di satu batas mungkin tidak berarti apa-apa, atau yang terburuk memiliki makna yang dirasakan berbeda di batas lain.

Jika Anda mengekspos peristiwa domain ke batas lain, maka perlu ada pemahaman yang jelas tentang apa peristiwa itu dari batas lain. Harus ada tingkat pemahaman bersama. Seperti yang disebutkan, ini sering terjadi ketika peristiwa domain digunakan sebagai cara untuk memberi tahu berbagai batasan dalam sistem yang semuanya merupakan bagian dari proses bisnis yang berjalan lama.

Persyaratan Konsumen

Sementara manfaat dari arsitektur yang digerakkan oleh peristiwa adalah untuk memisahkan produsen dan konsumen, dalam praktiknya Anda benar-benar peduli dengan persyaratan konsumen.

Ada berbagai tujuan untuk acara. Terutama untuk notifikasi atau propagasi data. Konsumen acara akan peduli dengan acara karena dua alasan khusus ini.

Jika mereka ingin menggunakan suatu peristiwa karena propagasi data, itu karena mereka ingin menyimpan salinan cache lokal dari data yang dimiliki dari batas lain. Jenis peristiwa ini akan sering berisi lebih banyak data dan sering menjadi “peristiwa gemuk” atau disebut sebagai Transfer Negara yang Dibawa Peristiwa.

Jika layanan ingin mengkonsumsi suatu peristiwa karena itu adalah bagian dari proses bisnis yang berjalan lama, maka layanan tersebut tidak terlalu peduli dengan keadaan seperti halnya hanya diberi tahu bahwa suatu peristiwa telah terjadi, dan sekarang ia harus bereaksi dan melakukan bagiannya dari proses bisnis.

Untuk propagasi data, event sering kali diturunkan dari CRUD atau event berbasis properti. Misalnya, ProductUpdated.

Sedangkan event yang digunakan untuk notifikasi umumnya lebih bersifat behavioral. Misalnya, ProductInventoryAdjusted.

Peristiwa Domain atau Peristiwa Integrasi?

Seperti biasa, itu tergantung. Jika peristiwa domain Anda adalah konsep bisnis yang stabil dan dipahami di luar batas Anda sebagai bagian dari proses bisnis yang berjalan lama, maka ya, menerbitkan peristiwa domain di luar batas Anda dapat diterima. Jika peristiwa digunakan untuk propagasi data atau lebih bersifat CRUD, maka terbitkan Peristiwa Integrasi.

Kode sumber

Anggota tingkat pengembang saluran YouTube saya atau Patreon mendapatkan akses ke sumber lengkap untuk aplikasi demo apa pun yang berfungsi yang saya posting di blog atau YouTube saya. Lihat Keanggotaan YouTube atau Patreon untuk info lebih lanjut.

tautan yang berhubungan

Ikuti @CodeOpinion di Twitter