Servizi · modernizzazione dei sistemi preesistenti

La scadenza che vi costringe a farlo è nel calendario di qualcun altro.

La modernizzazione è raramente una decisione sulla qualità del codice. È una data fissata da qualcun altro — un fornitore che chiude il supporto, uno store che cambia le regole, un runtime che perde gli aggiornamenti di sicurezza — e l’unica variabile che controllate è se la affrontate con calma o con tre settimane di preavviso.

Perciò questa pagina comincia dalle date anziché dal nostro metodo. Se nessuna di esse vi riguarda, la raccomandazione onesta è più in basso ed è di non fare nulla.

Attualmente in vigore

Le scadenze che in questo momento stanno davvero muovendo i budget

Non un discorso generale sul debito tecnico. Date precise, prese dalle policy di supporto dei fornitori stessi, che decidono se un’applicazione può ancora essere distribuita, aggiornata o corretta.

Scadenze di fine supporto già passate, a poche settimane e successive Tre gruppi di date. Già passate: il supporto a Xamarin è terminato il 1 maggio 2024, e dal 31 agosto 2026 le nuove app e gli aggiornamenti su Google Play devono avere come target Android 16. A poche settimane: il 1 novembre 2026 è l’ultima data per una proroga concessa sul Play Store, e .NET 8 e .NET 9 arrivano entrambi a fine supporto il 10 novembre 2026. La successiva: .NET 10, una release con supporto a lungo termine, termina il 14 novembre 2028 — quindi la versione scelta adesso fissa la prossima scadenza. GIÀ PASSATE 1 maggio 2024 Fine supporto Xamarin 31 ago 2026 Play Store: aggiornamenti con target Android 16 IMMINENTI 1 nov 2026 Ultima data per una proroga Play Store 10 nov 2026 Fine .NET 8 e .NET 9 LA SUCCESSIVA 14 nov 2028 .NET 10, la release LTS La versione a cui passate adesso decide quando lo rifarete. Date prese dalle policy di supporto dei fornitori stessi e verificate il 17 ottobre 2026. Se questa pagina è superata quando la leggete, è un fatto che ci riguarda, e vale la pena conoscerlo prima di affidare un incarico a chiunque.
Un’applicazione su .NET 8 o .NET 9 smette di ricevere patch di sicurezza a novembre 2026. Un’applicazione Android che non può essere aggiornata sul Play Store non può nemmeno essere corretta — e questo trasforma una questione di manutenzione in una questione di distribuzione.

Diagnosi

Quattro tipi di sistema preesistente, tre dei quali valgono una spesa

  • Il framework è morto. Il fornitore ha smesso di rilasciarlo, o lo rilascia senza aggiornamenti di sicurezza. Xamarin e CUBA Platform sono i due che incontriamo più spesso. Questo caso ha una data attaccata e la data non è negoziabile.
  • La piattaforma ha cambiato le regole. App store che alzano i target API level, browser che abbandonano un plugin, un circuito di pagamento che dismette un protocollo, versioni di TLS che scompaiono. Il vostro codice non è cambiato; è cambiato il terreno sotto di esso.
  • Le persone sono andate via. Non c’è nulla di tecnicamente sbagliato. Nessuno di chi è rimasto riesce a modificarlo in sicurezza, quindi nessuno lo modifica, quindi lentamente smette di corrispondere all’attività dell’azienda. La versione costosa di questo caso si scopre quando qualcuno finalmente ci prova.
  • Non è più possibile metterlo in produzione. Rilasci manuali, un server che nessuno osa riavviare, nessuna build riproducibile, nessuna strada verso un container. Spesso è il vero ostacolo dietro "non riusciamo a muoverci in fretta" — e quello che si risolve senza toccare affatto l’applicazione.

Prima di qualunque piano

Una valutazione che potreste consegnare a un altro fornitore

Nessuno può quotare la migrazione di un sistema che non ha letto. La valutazione è un incarico separato a prezzo fisso e produce due documenti anziché una proposta:

  • Una relazione tecnica. La metodologia usata, la base di evidenze, la causa radice accertata di ciò che sta effettivamente cedendo, i difetti collegati, i rischi per la sicurezza delle informazioni trovati lungo il percorso, un piano di rimedio e cifre stimate indicate come stime.
  • Una sezione su ciò che non ha potuto accertare. Di solito perché i dati non c’erano. Una valutazione senza una sezione sui limiti o non ha cercato abbastanza a fondo o non vi sta dicendo qualcosa.
  • Un’istruzione di implementazione. Passo per passo, per nodo di infrastruttura e componente software, con una procedura di verifica, una procedura di rollback, scenari di test e una checklist di accettazione — scritta per i vostri ingegneri.

Entrambi i documenti sono vostri. Portateli a un altro fornitore, al fornitore della piattaforma o al vostro consiglio di amministrazione. Abbiamo firmato incarichi in cui valutiamo noi e implementa qualcun altro, e quel confine sta nel contratto e non in una rassicurazione.

La migrazione in sé

Per ondate, con il sistema vecchio ancora in funzione

01 · Prima il rischio con una data

Tutto ciò che ha una voce di calendario attaccata — un runtime senza supporto, una scadenza imposta da uno store, un certificato che scade. Queste cose non negoziano e non si curano del piano di sprint, quindi vengono per prime, indipendentemente da ciò che è più interessante.

02 · Niente va fuori servizio

Gli utenti continuano a usare il sistema mentre cambia sotto di loro. Sull’applicazione di pagamento che manteniamo, la migrazione di framework è avvenuta mentre le persone la usavano per pagare — che è lo standard, non un risultato da celebrare.

03 · Affiancamento, non un interruttore

Vecchio e nuovo girano insieme mentre il traffico si sposta in incrementi che potete invertire. Una migrazione che dipende da un unico weekend di passaggio è una migrazione con una sola possibilità, e questa è una scelta di pianificazione, non un dato tecnico.

04 · Il rollback scritto per primo

Prima della modifica, non durante l’incidente. Se la procedura di rollback non si può scrivere, la modifica non è compresa abbastanza bene per essere fatta — che è un’informazione utile e a quel punto arriva a poco prezzo.

05 · Comportamento conservato, poi migliorato

Compreso il comportamento che sembra un difetto e si rivela il 2014 che arriva a una soluzione tampone che nessuno ha messo per iscritto. Questi casi vengono elencati e decisi deliberatamente, non lasciati cadere in silenzio perché sembravano sbagliati.

06 · La via di rilascio, presto

Build riproducibile, migrazioni da vuoto, un’immagine container, un runbook — spesso vale la pena farlo prima che l’applicazione cambi, perché senza di esso ogni ondata successiva è più lenta e più rischiosa di quanto debba essere.

Domande adiacenti

Tre casi che sembrano questo e non lo sono

State lasciando CUBA Platform

Allora la maggior parte del sistema si sposta intatta e il costo si concentra in una parte piccola e identificabile — una conversazione diversa, con una forma diversa — cosa si sposta, cosa viene riscritto, cosa non ha un sostituto

Il sistema va dismesso, non spostato

A volte la conclusione onesta è che due delle sue quattro funzioni sono svolte meglio altrove, la terza non è più compito di nessuno e la quarta è un foglio di calcolo. È una risposta più economica di qualunque migrazione e preferiamo darla.

Volete che qualcuno lo gestisca in modo permanente

La modernizzazione finisce; l’esercizio no. Possiamo fare il passaggio di consegne al vostro team o a un altro fornitore, e possiamo mettere ingegneri dentro il vostro team per portarlo avanti — le clausole che decidono quell’accordo

Domande

Quelle che arrivano prima che esista un budget

Il nostro sistema funziona. Perché dovremmo toccarlo?

Di solito non dovreste. Un sistema vecchio, noioso e che fa il suo lavoro non è un problema, e "usa un framework fuori moda" non è una giustificazione economica. I motivi per agire sono esterni e hanno una data: il fornitore ha smesso di rilasciare aggiornamenti di sicurezza, una piattaforma attraverso cui distribuite ha cambiato le regole, un runtime da cui dipendete arriva a fine supporto, oppure l’ultima persona che lo capiva ha dato le dimissioni. Se non si applica nessuno di questi casi, vi diremo di lasciarlo stare.

Riscrittura o migrazione?

Migrazione, in quasi tutti i casi che abbiamo visto, e le eccezioni sono più rare di quanto l’entusiasmo suggerisca. Una riscrittura riparte da una specifica che nessuno ha messo per iscritto, perché la specifica reale è il comportamento del sistema che state sostituendo — comprese le parti che sembrano difetti e sono in realtà il 2014 che arriva a una soluzione tampone che nessuno ha documentato. La migrazione conserva quel comportamento e sostituisce le parti che hanno effettivamente ceduto.

Potete lavorare su un sistema che non avete costruito?

È la maggior parte di questo lavoro. Comincia con due settimane di lettura anziché di progettazione, e la prima consegna è un resoconto scritto di ciò che il sistema fa davvero — che in modo affidabile non è ciò che dice la documentazione e spesso non è nemmeno ciò che l’azienda crede. Abbiamo preso in carico un’applicazione di pagamento in produzione, una base di codice mobile ereditata e un’infrastruttura che qualcun altro gestiva da anni.

Il sistema sarà fuori servizio durante la migrazione?

Non dovrebbe esserlo, e progettare perché non lo sia è la parte più difficile. Ondate anziché un big bang, il sistema vecchio che gira a fianco del nuovo finché il nuovo si è guadagnato il traffico anziché riceverlo a una data stabilita, e una procedura di rollback scritta prima che serva e non durante. Sull’applicazione di pagamento che manteniamo, la migrazione di framework è avvenuta senza interrompere il servizio — le persone l’hanno usata per pagare per tutto il tempo.

Che cosa produce la valutazione?

Due documenti. Una relazione tecnica con la metodologia, le evidenze, la causa radice di ciò che sta effettivamente cedendo, i difetti collegati, i rischi di sicurezza notati lungo il percorso, un piano di rimedio — e una sezione su ciò che lo studio non ha potuto accertare e perché. E un’istruzione di implementazione scritta per i vostri ingegneri: passo per passo, per componente, con una procedura di verifica, una procedura di rollback, scenari di test e una checklist di accettazione. Potete consegnare entrambi a un altro fornitore.

Dovete essere voi a fare il lavoro?

No, e firmiamo contratti che lo dicono. Ci sono incarichi in cui valutiamo noi e implementa il vostro team, e quel confine sta nei documenti e non in una conversazione. Un revisore che può essere pagato solo se la verifica trova del lavoro per lui ha un interesse in ciò che la verifica trova, ed è un elemento da rimuovere dall’accordo anziché da negare.