Esta pergunta é apenas para aprendizado e aprimoramento do meu entendimento técnico. Sei que não há uma solução perfeita e essa pergunta é possível, sem fim, lista de soluções, mas acho que é muito importante para todo arquiteto entender a diferença entre demo e um projeto ao vivo.
Eu criei muitas soluções de demonstração em .Net no passado. Agora, fui designado para arquitetar e implementar uma solução da web em nível de produção, então eu queria perguntar - em um nível muito alto, o que é necessário para converter uma demonstração em uma solução em nível de produção. Pelo meu entendimento, isso exigirá (além da implementação funcional dos requisitos dos clientes):
- Unidade de teste de todos os métodos
- Garantindo ~ 100% de cobertura do código
- Registrando todas as exceções e possíveis cortes de pontos - possível com o AOP
- Usando padrão de design de interface, injeção de dependência, possivelmente usando uma estrutura, por exemplo, spring.net
- Usando contadores e criadores de perfil de desempenho para instrumentação
- Aplicação de segurança apropriada - ou seja, autenticação do Windows (se for o que for exigido pelo cliente).
- Gerenciamento de transações em todos os métodos
- Backup dos arquivos de aplicativos da web antes da nova implantação da solução
O quê mais?
Minha pergunta está mais relacionada ao lado técnico, em vez de funcional / documentação, caso contrário, iremos para outro caminho :-)
Obrigado.