La mia è una storia di "successo". Il mio progetto riguardava un sito primario con 4 siti satellite gestiti / scritti in modo indipendente (sottodomini con diverse applicazioni su di essi). Avevamo 4 basi utenti primarie (tutte all'interno di directory attive separate) e nessuna aveva un sistema di autenticazione comune. 3 erano applicazioni ben consolidate e silosate e il 4 ° satellite era nuovo di zecca e aveva copiato gran parte della sua base di codice dal nostro sito più consolidato.
Obiettivo: implementare un sistema di identità a livello aziendale in grado di autenticare account su 4 domini e gestire account completi (con self-service) in 1 dei domini. Poiché .Net era già implementato sui satelliti, il classico sito asp che fungeva da "lead-in" avrebbe dovuto essere riscritto, aggiunta la gestione delle identità e tutti i siti avrebbero avuto bisogno di test di regressione per assicurarsi che nessun servizio fosse interessato.
Risorse: 3 architetti primari: programmatore, gestione delle identità, project manager. Circa 20 sviluppatori, 10 analisti, 10 tester.
Tempo per il completamento (dall'inizio alla fine): 1,5 anni
Avvio riuscito : Near Failure
Successo di longevità: eccezionale
Ero l'architetto della gestione delle identità, quindi ho progettato i database, i sottosistemi e le interfacce logiche con cui tutti i satelliti avrebbero interagito. L'architetto "programmatore" era uno sviluppatore principale con una vasta conoscenza commerciale di tutti i satelliti ed esperienza con le applicazioni e il loro sviluppo fino a quel momento.
Dopo diversi mesi di raccolta di requisiti con circa 50 persone diverse provenienti da vari reparti della nostra società, siamo riusciti a far risaltare l'architettura logica e abbiamo iniziato a sborsare il codice. A causa della natura del cambiamento, abbiamo dovuto riscrivere il nostro sito Web e tutte le funzionalità che conteneva in .Net. In alcuni casi era solo una questione di refactoring. In molti casi ha comportato una completa riscrittura dei processi che lo circondano. In 2 casi abbiamo semplicemente abbandonato la funzionalità originale in quanto non importante. Abbiamo perso 2 scadenze nel processo (ma alla fine abbiamo raggiunto la scadenza originale che avevo proposto - a malapena). Il giorno del lancio non ha funzionato nulla. Abbiamo lanciato un sabato, quindi l'impatto è stato minimo, ma ho passato l'intera giornata a esaminare i registri, riscrivere i pezzi e valutare i carichi del server. Altri test potrebbero aver aiutato.
Alla fine del primo giorno, tutti i siti erano attivi e funzionanti e tutto funzionava (direi un successo nominale). Nel corso degli ultimi 2,5 anni, tutto è stato un successo eccezionale. Avere tutti i nostri siti su un'architettura comune con una base framework comune ha reso molto più semplice lo sviluppo e il lavoro tra sviluppatori. Le funzionalità che ho scritto nel nostro sito 2,5 anni fa (durante la nostra riscrittura) sono state viste / adottate da un paio di silos satellitari.
Abbiamo aumentato la registrazione, il tracciamento degli utenti, il tempo di attività aumentato, un'applicazione singolare responsabile dell'autenticazione / autorizzazione / identificazione. I silos satellitari possono concentrarsi interamente sulle loro applicazioni e possono fidarsi che esistano problemi di autenticazione / autorizzazione con l'applicazione di gestione delle identità.
Il nostro progetto è stato un sacco di frustrazione, angoscia e catastrofi. Alla fine ha pagato e poi alcuni. Sono d'accordo al 100% con la valutazione delle riscritture di Joel Spolsky come regola generale, ma ci sono sempre delle eccezioni. Se stai considerando una riscrittura, devi solo assicurarti che sia assolutamente quello di cui hai bisogno. Se lo è, allora preparati a tutti i dolori che ne derivano.