La mía es una historia de "éxito". Mi proyecto involucró un sitio primario con 4 sitios satelitales escritos / administrados independientemente (subdominios con diferentes aplicaciones en ellos). Teníamos 4 bases de usuarios principales (todas dentro de directorios activos separados) y ninguna tenía un sistema de autenticación común. 3 eran aplicaciones bien establecidas y en silos, y el cuarto satélite era completamente nuevo y había copiado gran parte de su código base de nuestro sitio más establecido.
Objetivo: Implementar un sistema de identidad para toda la empresa que pueda autenticar cuentas en 4 dominios y administrar cuentas completas (con autoservicio) en 1 de los dominios. Debido a que .Net ya se implementó en los satélites, el sitio asp clásico que sirvió como "entrada" necesitaría ser reescrito, la administración de identidad añadida y todos los sitios necesitarían pruebas de regresión para asegurarse de que ningún servicio se vea afectado.
Recursos: 3 arquitectos principales: programador, gestión de identidad, gerente de proyectos. Aproximadamente 20 desarrolladores, 10 analistas, 10 probadores.
Tiempo de finalización (comienzo a fin): 1,5 años.
Lanzamiento exitoso: casi fracaso
Éxito de longevidad: fabuloso
Yo era el arquitecto de gestión de identidad, así que diseñé las bases de datos, subsistemas e interfaces lógicas por las cuales interactuarían todos los satélites. El arquitecto "programador" fue un desarrollador líder con un amplio conocimiento comercial de todos los satélites y experiencia con las aplicaciones y su desarrollo hasta ese momento.
Después de varios meses de reunir requisitos con aproximadamente 50 personas diferentes de varios departamentos de nuestra corporación, logramos resolver la arquitectura lógica y comenzamos a eliminar el código. Debido a la naturaleza del cambio, tuvimos que reescribir nuestro propio sitio web y toda la funcionalidad que contenía en .Net. En algunos casos era solo una cuestión de refactorización. En muchos casos implicó una reescritura completa de los procesos que lo rodean. En 2 casos, simplemente abandonamos la característica original como no importante. Perdimos 2 fechas límite en el proceso (pero terminamos alcanzando la fecha límite original que había propuesto, apenas). El día del lanzamiento, nada funcionó. Lanzamos un sábado, por lo que el impacto fue bastante mínimo, pero pasé todo el día revisando registros, reescribiendo piezas y evaluando las cargas del servidor. Más pruebas podrían haber ayudado.
Al final del primer día, todos los sitios estaban en funcionamiento y todo funcionaba (diría que fue un éxito nominal). En el transcurso de los últimos 2.5 años, todo ha sido un gran éxito. Tener todos nuestros sitios en una arquitectura común con una base de marco común ha hecho que el desarrollo y el trabajo entre desarrolladores sean mucho más fáciles. Las características que escribí en nuestro sitio hace 2.5 años (durante nuestra reescritura) han sido vistas / adoptadas por un par de silos satelitales.
Hemos aumentado el registro, el seguimiento de usuarios, el aumento del tiempo de actividad, una aplicación singular responsable de la autenticación / autorización / identificación. Los silos satelitales pueden centrarse por completo en sus aplicaciones y pueden confiar en que cualquier problema de autenticación / autorización existe con la aplicación de gestión de identidad.
Nuestro proyecto fue una gran frustración, angustia y desastres. Al final ha valido la pena y algo más. Estoy 100% de acuerdo con la evaluación de reescrituras de Joel Spolsky como regla general, pero siempre hay excepciones. Si está considerando una reescritura, solo necesita asegurarse de que sea absolutamente lo que necesita. Si es así, prepárate para todos los dolores que vienen con él.