Il refactoring è uno strumento meraviglioso se usato bene.
Se hai dei test ben progettati nel tuo monolite, questo sarà abbastanza facile. Se non vuoi aggiungerli. Aggiungerli in seguito è sempre più costoso, ma preferibile ancora alla codifica e alla sperimentazione.
Ciò di cui si tratta è che i requisiti reali per il tuo progetto sono nel codice di lavoro. Ciò significa che devi stare attento a conservare questo stato di funzionamento mentre apporti le modifiche. Buoni test assicurano che il comportamento non sia cambiato anche quando la struttura lo ha.
Fai questo lentamente e con attenzione ed è straordinario come puoi trasformare un disegno completamente in dentro e mantenere tutto funzionante.
Dal tuo commento:
That answeres one part of my question. The other was: Does it make sense to develop a system which uses both a monolithic and a microservice based architecture? - toogley
Non avrebbe senso continuare ad aggiungere funzionalità in entrambi gli stili monolitico e microservizio allo stesso tempo. Tuttavia, non c'è motivo per cui non si possa rompere un pezzo come microservizio e lasciare il resto monolitico fino a quando non si è riusciti a spezzare il resto.
Ogni stile ha vantaggi e compromessi. Rimanendo bloccato a metà strada non avrete i vantaggi di entrambi. Ma avrai il vantaggio di poter iniziare a lavorare verso il tuo obiettivo senza dover chiudere tutto finché non hai finito.