O que eu considero que é um ambiente de testes: uma réplica exacta do ambiente de produção, mas com dados dummy. Algo onde facilmente um developer possa fazer login, navegar pelas aplicações web, fazer acções, etc.
Eu diria que um ambiente de testes é fundamental. Mas infelizmente onde trabalho não há nada disto e pelo que falo com outras pessoas isto é normal. Quando não há ambiente de testes, acontece isto:
- Chega um gajo novo à empresa e tem de implementar uma funcionalidade
- Enquanto conhece os cantos à casa, não consegue fazer logins, não consegue experimentar funcionalidades nenhumas porque os ambientes estão todos desactualizados ou em baixo
- Além de estar a ser improdutivo, tem de ir chatear outros colegas para lhe prepararem o ambiente
- Por vezes preparar um ambiente não é trivial...
E não é trivial porque, na minha opinião, um processo de deploy para produção devia passar pelos seguintes passos:
- Full build (eu já nem falo em testes...)
- Especificação do deploy num documento qualquer: infelizmente é normal termos uma equipa que desenvolve e outra que faz deploy. Normalmente estas instruções vão num documento word passo a passo; eu acho que deveriam ir num makefile qualquer (tipo nant)
- A equipa de desenvolvimento corre os passos de deploy no ambiente de testes, e de seguida testa as funcionalidades
- Se está tudo bem, então segue-se o mesmo procedimento para produção
Nota que o passo 3 pode poupar muitos problemas e tempo, pois permite desde logo o despiste de vários problemas. Agora, há outro pormenor importante... se estes passos não forem corridos em todas as máquinas que que têm o projecto, vamos ficar com deploys em várias máquinas que estão outdated, levando assim a um problema de ambientes que prejudica o desenvolvimento. E aqui também incluo as máquinas dos developers... Porque muitas vezes um update não é algo tão simples como fazer um update ao código.
É que isto é diferente de integração contínua, em que sabemos que um full deploy do zero funciona bem. Na prática temos ambientes onde temos de ir fazendo updates progressivos, sem poder fazer um fresh install. Basta pensar em bases de dados.
Sendo esta problemática dos deploys e dos ambientes tão comum e tão error-prone, pergunto-me como é possível empresas andarem com processos cowboy e metodologias completamente Change and Pray.
Posted
25-10-2007 17:11
por
pre