Nella nostra architettura abbiamo un paio di componenti che vengono distribuiti come servizio HTTP. Ogni componente ha il proprio database.
Ora ho il componente A che ha bisogno di dati che sono memorizzati nel database di Comonent B. I dati sono una query piuttosto complessa che utilizza Group By, Sum e Count per ottenere una forma aggregata dei dati.
Qual è la migliore descrizione del design qui:
- Il componente A ha direttamente interrogato il database B
- Implementa un'interfaccia nel componente B che è lì solo per servire i dati necessari al componente A
Dal mio punto di vista:
1:
- Meno LOC
- Funziona se B è irraggiungibile, ma il database è ancora attivo
- Non è necessaria una chiamata HTTP aggiuntiva
- Se A richiede i dati in un altro formato, non è necessario modificare B
2:
- Incapsulamento del modello nel database B
- Chiara responsabilità: ogni componente richiede solo il proprio database