Nonostante ci siano molti motivi per scegliere un’architettura microservice per il proprio sistema, non vuol dire che sia adatta per ogni azienda e per ogni progetto. Per programmi di minori dimensioni e con un numero ridotto di compiti, i microservizi possono corrispondere a uno sforzo superfluo. Non solo la realizzazione dei servizi, ma la manutenzione, lo sviluppo continuo e il monitoraggio sono tutti passaggi impegnativi. Anche la semplice verifica comparativa tra microservice e monolito per vedere quale funziona meglio va ben pianificata e, sebbene i microservice sono facili da analizzare e da misurare, un elevato numero di questi accresce enormemente l’impegno necessario.
Guardando i vantaggi di come si svolge il lavoro, si capisce che non è adatto a ogni progetto, soprattutto non da un giorno all’altro. Un punto a favore nel lavoro con i microservice è l’indipendenza dei singoli team, evitando per esempio che un team debba attendere i risultati di un altro. Ma se l’intero team di sviluppo si compone di poche persone, allora questa separazione perde di significato. Inoltre se si segue la legge di Conway, un team di piccole dimensioni all’interno del quale, per motivi pratici, non è possibile tracciare una linea divisoria e dove le cooperazioni cambiano in continuazione, otterrà certamente un altro risultato.
Anche nel caso in cui si tratti di un team di grandi dimensioni è necessario un cambiamento significativo: le posizioni che controllano centralmente lo sviluppo stanno diventando sempre più obsolete e i team di sviluppo si organizzano in maniera sempre più indipendente. Una ristrutturazione simile richiede un dispendio sia di tempo che di risorse economiche. Anche questa è una questione che va tenuta a mente nel caso si stia ponderando di cambiare sistema.
Alcuni sostenitori delle architetture di microservice consigliano perciò una strategia monolith first, ovvero iniziare da una struttura monolitica. Perciò può risultare sensato iniziare un progetto di programmazione partendo da un monolito e sfruttare i vantaggi offerti da questo approccio, soprattutto nelle fasi iniziali. Una volta che il progetto ha raggiunto una dimensione adatta, allora sarà il caso di passare a un’architettura microservice. Tra i due sistemi si trova l’architettura service-oriented (SOA), che rappresenta una buona opzione intermedia, che a sua volta prevede un approccio basato sui moduli corrispondenti ai singoli processi.