Architecture Coffee

Issue 10070

· 5 min

Modernizzare senza scommettere tutto su un cutover

La sostituzione reversibile come disciplina per spostare comportamento e traffico un passo alla volta

Progettare una modernizzazione come sequenza di sostituzioni osservabili e reversibili, creando confini che permettano di spostare comportamento e traffico senza dipendere da un unico cutover finale.

practice

Cosa fare in pratica

Se devi modernizzare un sistema, evita di pensare al progetto come a una sostituzione unica. Imposta invece una sequenza di passi piccoli, ciascuno con un risultato verificabile. Prima crea un seam: un punto in cui routing, contratto o ownership siano esplicitamente controllabili. Poi sposta una sola responsabilità alla volta, osserva il comportamento in produzione o in un ambiente molto simile, e conserva sempre un percorso di ritorno finché il nuovo comportamento non è stabile. Il punto chiave è architetturale, non solo operativo: stai costruendo opzioni. Ogni incremento dovrebbe ridurre rischio o produrre valore anche se il programma si fermasse lì. • Definire un seam prima di spostare logica, dati o traffico. • Limitare ogni incremento a una responsabilità o a un flusso osservabile. • Rendere espliciti rollback, criteri di stop e segnali di successo. • Validare le ipotesi prima di ampliare lo scope.

trade-offs

Le vere trade-off da esplicitare

La modernizzazione reversibile costa più all'inizio rispetto a un taglio netto: servono adapter, routing controllato, osservabilitàGlossarioOsservabilitàLa capacità di comprendere il comportamento di un sistema a partire dai segnali che produce.Apri la voce completa e disciplina di rollout. In cambio riduci il rischio di bloccare il programma su un'ipotesi sbagliata e puoi correggere la rotta senza rifare tutto. Il compromesso da gestire è tra velocità apparente e opzioni future. Un big bang sembra più rapido finché non consideri il costo di un fallimento: coordinamento alto, rollback difficile, impatto operativo e poca capacità di apprendere. La sostituzione incrementale è meno spettacolare, ma rende il cambiamento governabile. • Più lavoro iniziale per seam, testGlossarioTestUna verifica deliberata che produce evidenze su una specifica aspettativa o rischio.Apri la voce completa e osservabilità. • Meno rischio di irreversibilità e di decisioni premature. • Più coordinamento continuo, meno dipendenza da un cutoverGlossarioCutoverIl momento in cui traffico o comportamento passano al nuovo sistema, con un revert dichiarato.Apri la voce completa finale. • Più controllo sul programma, meno velocità apparente nel breve periodo.

enterprise-example

Esempio realistico in azienda

Immagina un gruppo bancario che deve sostituire un motore di pricing legacy usato da più canali. Un approccio big bang richiederebbe la migrazione simultanea di regole, dati, integrazioni e consensoGlossarioConsensoUn impegno condiviso sufficiente a sostenere una decisione, non necessariamente una preferenza unanime.Apri la voce completa operativo. Con una sostituzione reversibile, invece, il team introduce prima un adapter che duplica le richieste e confronta i risultati, poi devia un sottoinsieme di traffico su una nuova implementazione e mantiene un routing di ritorno immediato. Se emergono differenze significative, il traffico torna al vecchio motore mentre il team corregge il comportamento. In questo modo il comitato di architettura non deve approvare un salto cieco, ma una serie di decisioni reversibili e misurabili. • Duplicazione e confronto prima della deviazione completa. • Deviazione di un sottoinsieme di traffico con rollback rapido. • Verifica progressiva di regole, dati e risultati funzionali. • Governance basata su evidenze, non su promessa di cutover finale.

references

Per approfondire

Fonti esterne autorevoli per approfondire modernizzazione incrementale, seam e reversibilitàGlossarioReversibilitàIl costo e lo sforzo pratici necessari per cambiare o annullare una decisione dopo l’impegno.Apri la voce completa. • Martin Fowler, Strangler Fig Application - https://martinfowler.com/bliki/StranglerFigApplication.html • Michael Nygard, Documenting Architecture Decisions - https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions • Nicole Forsgren, Jez Humble, Gene Kim - Accelerate: The Science of Lean Software and DevOps - https://itrevolution.com/product/accelerate/

Una modernizzazione efficace non punta al colpo unico perfetto: crea confini reversibili, sposta responsabilità in modo osservabile e mantiene sempre un'uscita sicura.

Per la prossima riunione

Nel vostro prossimo effort di modernizzazione, qual è il seam più utile da creare per rendere reversibile il primo spostamento di traffico o comportamento?

Una domanda per te

Questa issue sul tema della modernizzazione tramite sostituzione reversibile ti è stata utile o interessante per valutare meglio il trade-off tra cutover unico e progressione incrementale?