Il problema
Nel 2010 ho messo in produzione il gestionale che 250 edicole usano per lavorare: vendite, resi, ordini, e il collegamento quotidiano con il distributore che porta i giornali. Non è un portale che si consulta. È lo strumento con cui aprono la cassa la mattina.
L’ho scritto in Silverlight, che allora era la scommessa di Microsoft per le applicazioni web ricche.
Il vincolo
Silverlight è morto molto prima che io lo togliessi. Microsoft ha smesso di puntarci, i browser hanno cominciato a rifiutarlo, e chi l’aveva usato è passato ad altro.
Tecnicamente si poteva ancora tenere in piedi: bastavano plugin e configurazioni sul browser. Ma una toppa che funziona su una postazione, moltiplicata per 250 negozi che aprono alle sei del mattino e non hanno un reparto IT, smette di essere un problema tecnico e diventa un problema di gestione. Ed è quello, non il codice, a decidere quando una migrazione non è più rimandabile.
Restava però il vincolo vero: non si poteva spegnere niente. Nessuna finestra di fermo, nessun weekend di migrazione, nessun «da lunedì cambia tutto» a duecentocinquanta esercenti che non avevano chiesto niente.
Come l’ho risolto
Non con una riscrittura. Sostituendo un sottosistema alla volta, nell’ordine in cui contavano.
2017 — la parte che usano le edicole. Prima quella, perché è quella che non può fermarsi. Riscritta su ASP.NET MVC, con le stesse abitudini e le stesse schermate: l’obiettivo non era modernizzare, era uscire da Silverlight senza che l’esercente se ne accorgesse. Quella base è ancora in esercizio oggi, ed è ancora in sviluppo dopo nove anni.
2020 — l’amministrazione. Con i clienti già al sicuro, ho potuto rifare il back office come andava fatto, su una piattaforma nuova invece che compatibile.
2022 — l’amministrazione, di nuovo, questa volta per scelta e non per necessità. E la sincronizzazione col distributore, riscritta a parte.
Tutto insieme sarebbe stato un progetto più breve da raccontare e molto più rischioso da fare. In sedici anni il sistema non è mai stato fermo più di qualche ora, e quell’unica volta era una migrazione pianificata dal server locale al cloud.