Feature Flipping para evitar trabalhar com branching, e faz mais de dez deploys por dia.
A Etsy investiu muito nos seus testes automatizados e nas suas ferramentas. Hoje, eles fazem mais de 25 deploys por dia.
O IMVU (site de jogos sociais e avatars 3D) executa mais de 1 milhão de testes e 50 deploys cada dia.
Primeiro faça uma estimativa (ou medição) do tempo que seu time precisa para entregar uma linha de código em produção com o processo que vocês têm hoje.
Montar um servidor de Integração Contínua, que é o primeiro passo para o Deploy Contínuo.
Antes de continuar, é fundamental certificar-se que os testes existentes cobrem a maior parte do aplicativo. Se algumas empresas não hesitam em criar os seus próprios frameworks de testes (Netflix criou o projeto "Chaos Monkey" que desliga os servidores aleatoriamente), é perfeitamente possível usar os frameworks existentes, como JUnit, Gatling, Fitnesse, etc. Para diminuir o tempo de execução dos testes, a IMVU os distribui em mais de 30 máquinas. Outras empresas preferem usar os serviços de Nuvem, como Amazon Web Services, para instanciar os ambientes de Teste na hora e paralelizar a execução dos testes.
Quando a integração contínua já estiver compilando e testando suficientemente os artefatos, ela já poderá ser usada para entregar os artefatos para o time que vai subir o aplicativo nos diferentes ambientes. Nesse estágio, já estamos na Entrega Contínua.
Agora, o time que cuida dos deploys precisa melhorar as construções e adicionar as tarefas de deploy. Esse passo requer que as tarefas de configuração dos ambientes, de deploy dos artefatos e de migração dos esquemas de banco de dados (caso existam) já estejam automatizadas.
É preciso dar atenção especial aos scripts de deploy, já que eles são código, e devem respeitar os critérios de qualidade, sendo versionados num repositório, com testes, etc.
Uma solução mais radical, porém bem interessante, é forçar o ritmo da entrega. Por exemplo, trocar uma entrega mensal para uma semanal. Isso irá expor os problemas que atrapalham o processo de Deploy, permitindo planejar ações de melhoria.
Tem alguns padrões de arquitetura bem úteis para implementar o Deploy Contínuo: