Ho svolto ricerche sulle architetture dei microservizi cercando di ottenere una panoramica di alto livello di tutti i pro e contro, whens e perché, ecc. Molte delle informazioni che sto leggendo / guardando provengono da ThoughtWorks (Martin Fowler, Neal Ford, et al).
La maggior parte del lavoro di Martin Fowler sull'argomento ha qualche anno, quando Microservices (come un nome familiare nella programmazione, se non nella pratica generale) era ancora giovane, quindi ne prendo molto con un pizzico di sale.
Una cosa in particolare è questa:
As I hear stories about teams using a microservices architecture, I've noticed a common pattern.
- Almost all the successful microservice stories have started with a monolith that got too big and was broken up
- Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble.
This pattern has led many of my colleagues to argue that you shouldn't start a new project with microservices, even if you're sure your application will be big enough to make it worthwhile. .
(ref: link - enfatizza il loro)
Ora, a 3 anni di distanza e con microservizi un termine più onnipresente, è generalmente gradevole che un nuovo sistema sia in genere meglio servito con blocchi di servizi più grandi (-than-microservice-but-smaller-monolith) per iniziare con e rendendoli più granulari come parte di una misura evolutiva?
Oppure, esiste una norma per iniziare un progetto da zero con un'architettura microservice granulare, in contrasto con le affermazioni precedenti?
Sembra un approccio generale sano, ma curioso dei pensieri della comunità.