Di recente ho letto Hohpe e Woolf's Enterprise Integration Patterns, alcuni dei libri di Thomas Erl su SOA e guardato vari video e podcast di Udi Dahan et al. su sistemi CQRS ed Event Driven.
I sistemi nel mio posto di lavoro soffrono di un elevato accoppiamento. Sebbene teoricamente ogni sistema abbia un proprio database, tra loro c'è molto da unire. In pratica questo significa che esiste un enorme database che tutti i sistemi usano. Ad esempio, esiste una tabella di dati dei clienti.
Gran parte di ciò che ho letto sembra suggerire la denormalizzazione dei dati in modo che ogni sistema utilizzi solo il suo database e qualsiasi aggiornamento a un sistema venga propagato a tutti gli altri tramite la messaggistica.
Ho pensato che questo fosse uno dei modi per far rispettare i confini della SOA - ogni servizio dovrebbe avere il suo database, ma poi ho letto questo:
/programming/4019902/soa-joining-data-across-multiple-services
e suggerisce che questa è la cosa sbagliata da fare.
La segregazione dei database sembra un buon modo per disaccoppiare i sistemi, ma ora sono un po 'confuso. È una buona strada da percorrere? Si consiglia mai di separare un database, ad esempio un servizio SOA, un contesto DDD Bounded, un'applicazione, ecc.?