Niedawno czytam Wzorce integracji przedsiębiorstw Hohpe i Woolf, niektóre książki Thomasa Erla na temat SOA oraz oglądam różne filmy i podcasty Udi Dahana i in. w systemach CQRS i systemach sterowanych zdarzeniami.
Systemy w moim miejscu pracy cierpią z powodu wysokiego sprzężenia. Chociaż teoretycznie każdy system ma własną bazę danych, istnieje wiele połączeń między nimi. W praktyce oznacza to, że istnieje jedna ogromna baza danych, z której korzystają wszystkie systemy. Na przykład istnieje jedna tabela danych klienta.
Wiele z tego, co przeczytałem, zdaje się sugerować denormalizację danych, tak aby każdy system korzystał tylko ze swojej bazy danych, a wszelkie aktualizacje jednego systemu były propagowane do wszystkich innych za pomocą przesyłania komunikatów.
Myślałem, że to jeden ze sposobów egzekwowania granic w SOA - każda usługa powinna mieć własną bazę danych, ale potem przeczytałem:
/programming/4019902/soa-joining-data-across-multiple-services
i sugeruje, że jest to niewłaściwa rzecz.
Segregacja baz danych wydaje się dobrym sposobem na oddzielenie systemów, ale teraz jestem trochę zdezorientowany. Czy to dobra droga? Czy kiedykolwiek zaleca się segregowanie bazy danych, na przykład usługi SOA, kontekstu DDD Bounded, aplikacji itp.?