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.
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.
Prossimo passo
Portate la data, non la lista dei desideri
Quale scadenza vi costringe a farlo, cosa fa il sistema oggi, e chi è ancora lì che ricorda perché. Tre risposte, e da quelle si può definire il perimetro della valutazione.
Chiedete una valutazione
Due documenti che potreste consegnare a un altro fornitore — compresa la conclusione che dovreste lasciare stare il sistema.
ProveUna migrazione con il servizio ancora in funzione
Sostituire le fondamenta sotto un’applicazione di pagamento mentre le persone la usavano per pagare, poi spostarla di nuovo prima della scadenza successiva.