A minha é uma história de "sucesso". Meu projeto envolveu um site primário com 4 sites de satélite gerenciados / gravados de forma independente (subdomínios com aplicativos diferentes). Tínhamos quatro bases de usuários principais (todas em diretórios ativos separados) e nenhuma possuía um sistema de autenticação comum. 3 eram aplicativos bem estabelecidos e em silos, e o 4º satélite era novinho em folha e copiou grande parte de sua base de códigos do site mais estabelecido.
Objetivo: implementar um sistema de identidade para toda a empresa que possa autenticar contas em quatro domínios e gerenciar completamente (com autoatendimento) em um dos domínios. Como o .Net já foi implementado nos satélites, o site asp clássico que serviu como "entrada" precisaria ser reescrito, o gerenciamento de identidade adicionado e todos os sites precisariam de testes de regressão para garantir que nenhum serviço fosse impactado.
Recursos: 3 arquitetos principais - programador, gerenciamento de identidades, gerente de projetos. Aproximadamente 20 desenvolvedores, 10 analistas, 10 testadores.
Tempo para conclusão (início ao fim): 1,5 anos
Lançamento com Sucesso: Quase Falha
Sucesso na longevidade: fantástico
Como eu era o arquiteto de gerenciamento de identidades, projetei os bancos de dados, subsistemas e interfaces lógicas pelas quais todos os satélites interagiam. O arquiteto "programador" era um desenvolvedor líder com amplo conhecimento comercial de todos os satélites e experiência com os aplicativos e seu desenvolvimento até aquele momento.
Depois de vários meses reunindo requisitos com 50 pessoas diferentes de vários departamentos de nossa empresa, conseguimos resolver a arquitetura lógica e começamos a inserir código. Devido à natureza da mudança, tivemos que reescrever nosso próprio site e todas as funcionalidades que ele continha no .Net. Em alguns casos, era apenas uma questão de refatoração. Em muitos casos, envolveu uma reescrita completa dos processos que o cercavam. Em 2 casos, simplesmente abandonamos o recurso original por não ser importante. Perdemos dois prazos no processo (mas acabamos atingindo o prazo original que eu havia proposto - mal). No dia do lançamento, nada funcionou. Lançamos no sábado, então o impacto foi bastante mínimo, mas passei o dia inteiro vasculhando logs, reescrevendo peças e avaliando as cargas do servidor. Mais testes podem ter ajudado.
No final do primeiro dia, todos os sites estavam em funcionamento e tudo estava funcionando (eu diria que foi um sucesso nominal). Ao longo dos últimos 2,5 anos, tudo foi um grande sucesso. Ter todos os nossos sites em uma arquitetura comum, com uma base de estrutura comum, facilitou muito o trabalho de desenvolvimento e desenvolvimento entre desenvolvedores. Os recursos que escrevi em nosso site há 2,5 anos (durante a reescrita) foram vistos / adotados por alguns dos silos de satélite.
Aumentamos o registro, o rastreamento do usuário, o tempo de atividade, um aplicativo singular responsável pela autenticação / autorização / identificação. Os silos de satélite podem se concentrar inteiramente em seus aplicativos e confiar que existem problemas de autenticação / autorização com o aplicativo de gerenciamento de identidades.
Nosso projeto foi de muita frustração, mágoa e desastres. No final, valeu a pena e depois alguns. Estou 100% de acordo com a avaliação de Joel Spolsky das reescritas como regra geral, mas sempre há exceções. Se você está pensando em reescrever, basta garantir que seja absolutamente o que você precisa. Se for, esteja preparado para todas as dores que o acompanham.