Saya baru-baru ini membaca Hohpe dan Woolf's Enterprise Integration Patterns, beberapa buku Thomas Erl tentang SOA dan menonton berbagai video dan podcast oleh Udi Dahan et al. pada sistem CQRS dan Event Driven.
Sistem di tempat kerja saya menderita kopling tinggi. Meskipun setiap sistem secara teoritis memiliki database sendiri, ada banyak yang bergabung di antara mereka. Dalam praktiknya ini berarti ada satu database besar yang digunakan semua sistem. Misalnya, ada satu tabel data pelanggan.
Banyak dari apa yang saya baca tampaknya menyarankan data yang dinormalisasi sehingga setiap sistem hanya menggunakan basis datanya, dan setiap pembaruan ke satu sistem disebarkan ke semua yang lain menggunakan pesan.
Saya pikir ini adalah salah satu cara menegakkan batas-batas dalam SOA - setiap layanan harus memiliki database sendiri, tetapi kemudian saya membaca ini:
/programming/4019902/soa-joining-data-across-multiple-services
dan ini menunjukkan bahwa ini adalah hal yang salah untuk dilakukan.
Memisahkan basis data sepertinya merupakan cara yang baik untuk memisahkan sistem, tetapi sekarang saya agak bingung. Apakah ini rute yang baik untuk ditempuh? Pernahkah disarankan agar Anda memisahkan basis data, katakanlah layanan SOA, konteks Berbatas DDD, aplikasi, dll?