Contenuti

Come decidere se spacchettare un monolite: segnali e falsi positivi

Come decidere se spacchettare un monolite: segnali e falsi positivi

/en/quando_decomporre_monolite/img.png

Capire quando il monolite non fa più al caso per la nostra situazione.

I microservizi sono come le caramelle: non bisogna esagerare, altrimenti ci si ritrova con un problema più grande di quello che avevamo prima.


Il monolite non è sempre male, quando e come usarlo

Il monolite è spesso dipinto come un mostro da combattere, ma la verità è che nella fase iniziale di un prodotto resta il modo più solido, economico e veloce per evolvere software.
Un monolite:

  • è semplice da capire: un unico codice, un’unica pipeline, un unico deploy;
  • è efficiente per team piccoli, che non possono sostenere la complessità dei microservizi;
  • riduce i costi iniziali di infrastruttura, osservabilità e orchestrazione;
  • facilita decisioni rapide, perché la conoscenza del sistema è concentrata.

Il monolite è la scelta giusta quando:

  • il business model non è ancora chiaro;
  • le funzionalità cambiano rapidamente;
  • è necessario ottimizzare la velocità del team;
  • non esistono colli di bottiglia tecnici reali ma solo timori futuri.

Molti CTO iniziano a parlare di microservizi troppo presto. Se non c’è ancora complessità, introdurla è uno spreco.


Quando il monolite comincia ad andare stretto

Il segnale migliore non è tecnico: è organizzativo.
Un monolite diventa un limite quando crea attrito tra team, rallentamenti e interdipendenze.

Segnali affidabili (“veri positivi”)

  • Team che si bloccano a vicenda perché lavorano sullo stesso modulo.
  • Release rischiose o lente, dove ogni deploy sembra una lotteria.
  • Aree del codice stabilizzate e aree in continua evoluzione che si influenzano troppo.
  • Performance critiche localizzate, non risolvibili solo con scaling verticale.
  • Domini di business distinti, con roadmap autonome difficili da portare avanti in un unico codebase.

Falsi positivi più comuni

  • “I microservizi sono moderni, dobbiamo farli.”
  • “Facciamo più assunzioni, quindi servono microservizi.”
  • “Ci serve scalare ogni feature indipendentemente” (spesso non è vero: si scala l’intero monolite senza drammi).

I microservizi non risolvono problemi culturali, mancanza di ownership, processi lenti o debito accumulato.
Se il problema è umano o organizzativo, spacchettare il monolite lo peggiora.


Come pianificare la decomposizione

La decomposizione non è un big bang: è una strategia evolutiva.
Qui entra in gioco uno dei pattern più efficaci: Strangler Fig (il ficus strangolatore).

Perché il pattern Strangler Fig funziona

  • permette di sostituire parti del monolite gradualmente, senza bloccare lo sviluppo;
  • consente di spostare funzionalità in servizi esterni solo quando sono “mature”;
  • garantisce rollback semplici, perché il monolite resta attivo finché la “nuova radice” non è solida.

Cosa partire a estrarre

  • funzionalità con confini chiari e basso rischio;
  • moduli già quasi isolati;
  • parti del codice che il team conosce bene e può migrare senza sorprese;
  • componenti stabilizzate nel business (es. billing, autenticazione, reporting).

Cosa NON estrarre all’inizio

  • componenti “core” ancora turbolenti;
  • parti con forte accoppiamento non compreso;
  • funzionalità ad alta velocità di modifica (domini in evoluzione).

In questa fase, la domanda da farsi è:
“Sto migrando per risolvere un problema reale o per inseguire una moda architetturale?”


Come assicurare uptime durante lo shotgun surgery

Ogni migrazione rischia di introdurre regressioni, downtime e incoerenze.
La parola d’ordine è stratificazione, non chirurgia esplosiva.

Ecco i pilastri per mantenere uptime:

🔹 Edge adaptors

Specchiano le call del monolite verso il nuovo servizio, e permettono di cambiare implementazione senza toccare i client.

🔹 Contract-first

Definire prima le API, poi implementarle.
Evita che microservizi nascano come “copie stoviglie” del vecchio monolite.

🔹 Feature flags

Attivazione graduale, rollback immediati.

🔹 Osservabilità minima necessaria

  • log strutturati
  • tracing distribuito
  • metriche business-driven
    Non serve un’astronave: serve visibilità.

🔹 Deploy frequenti e piccoli

La decomposizione è una maratona fatta di tanti sprint sicuri.


Come rendersi conto quando fermarsi

Non tutto deve diventare un microservizio.
Uno degli errori più grandi è la decomposizione infinita, motivata dall’idea che più è frammentato, più è moderno.

Saprai che è il momento di fermarti quando:

  • ogni dominio ha un team proprietario, autonomo e responsabile;
  • i servizi sono pochi, stabili e con confini chiari;
  • il TTM (time-to-market) torna competitivo;
  • la complessità marginale di ogni nuovo servizio supera il beneficio;
  • il monolite residuo è piccolo, stabile e fa bene quello che deve fare.

Il risultato ottimale non è un sistema tutto microservizi, ma un ecosistema bilanciato, dove ogni pezzo ha dimensioni e responsabilità sensate.


Conclusione

La domanda giusta non è “Quando devo passare ai microservizi?”, ma:
“Il mio monolite è ancora lo strumento migliore per continuare a crescere?”

La decomposizione è un percorso, non un obiettivo.
Richiede disciplina, consapevolezza e la capacità di distinguere tra necessità e moda.
E soprattutto richiede di ricordare che l’architettura deve servire il business, non il contrario.