Ho osservato Microservices per un po 'di tempo. Il concetto non è nuovo ma è comunicato in modo leggero. Quindi, sono molto entusiasta di questo.
Tuttavia, c'è una domanda che non sono sicuro di quale sia la risposta: ogni microservice dovrebbe avere un proprio modello di archiviazione dei dati isolato completamente? Considera quanto segue:
Note: This is probably not a good example as the seperation here is done based on read/writes whereas the good approach would be to separate the business concerns.
- products-write-service: responsabile della gestione della creazione e delle modifiche dei prodotti. Conosce MongoDB e scrive i dati lì.
- product-lookup-service: responsabile della gestione del recupero dei prodotti tramite i loro identificatori, fornendo un elenco di base dei prodotti in base alle categorie, ecc. Conosce MongoDB e legge i dati da lì.
- product-search-service: responsabile della gestione delle richieste di ricerca sui prodotti. Conosce Elasticsearch e legge i dati da lì.
Qui abbiamo due tecnologie separate per l'archiviazione dei dati tra tre servizi. Tuttavia:
-
products-write-service
eproducts-lookup-service
funzionano sullo stesso modello di archiviazione dati. Esiste una relazione collaudata tra due servizi. - alla fine della giornata, dovrebbe esserci un processo per eseguire ETL da MongoDB a Elasticsearch per
products-search-service
per funzionare. In un certo senso, tre microservizi hanno il proprio modello di archiviazione dei dati, ma esiste un processo intermedio che conosce questi due modelli.
Che cosa dici di questo modello? La separazione è completamente sbagliata qui?