Existem muitas coisas que você pode fazer para melhorar seu processo de implantação. Alguns deles são:
-
Certifique-se de que seu código esteja bem testado.
Idealmente, você deve ter 100% de cobertura de teste de unidade, bem como testes de integração para todos os cenários imagináveis.
Se você não tem isso, provavelmente deveria largar tudo e cuidar disso.
Analise o desenvolvimento orientado por comportamento.
Ter uma suíte de testes completa permitirá que você ...
-
Execute a integração contínua.
Sempre que alguém fizer uma alteração, o CI poderá então automaticamente executar a suíte de testes nele. Se a suíte de testes passar, ela poderá ser implantada imediatamente (ou agendar uma implantação). Para alterações que não requeiram alterações significativas em seus bancos de dados, isso, por si só, economizará muito tempo e dor de cabeça.
No caso de um problema, o IC também pode fornecer uma reversão com um clique.
O CI é muito menos útil se sua suíte de testes não for completa e correta, pois a premissa inteira é a capacidade de validar seu código de maneira automatizada.
-
Faça atualizações atômicas.
Idealmente, você não deve apenas copiar novos arquivos sobre o antigo no servidor de produção. Em vez disso, use uma ferramenta como capistrano, que copia todos os arquivos para um novo local e, em seguida, usa um link simbólico para apontar para a implantação desejada. Retroceder é instantâneo, pois envolve simplesmente alterar o link simbólico para apontar para a implantação anterior. (Embora isso não cubra necessariamente a migração do banco de dados.)
Verifique também se os contêineres, como o Docker, podem ajudá-lo.
-
Faça alterações menores e mais frequentes.
Se você tem testes, CI, ou nada, isso sozinho pode ajudar você de maneira significativa. Cada mudança deve ter seu próprio branch git, e uma implantação deve ter o menor número de alterações possível. Como as alterações são menores, há menos chances de dar errado durante uma implantação.
Na mesma nota, torne as alterações mais isoladas sempre que possível. Se você fez uma alteração no jogo Omaha e não afeta o Texas Hold'em, o 5 card stud ou qualquer outra coisa, então esse é o único jogo que precisa ser suspenso para uma manutenção.
-
Analise qualquer coisa de longa duração.
Você mencionou que algumas partes de suas implantações levam muito tempo. Isso é provavelmente alterações do esquema do banco de dados. Vale a pena ter um DBA em seu banco de dados, juntamente com cada alteração de esquema, para ver o que pode estar tendo um melhor desempenho.
Peça a um especialista para analisar qualquer outra parte de uma implantação que consuma grandes blocos de tempo.
-
Trabalhe horas estranhas.
Você já pode estar fazendo isso, mas vale a pena mencionar. Não se espera que os desenvolvedores (e administradores de sistemas!) Trabalhem "9 a 5", especialmente para uma operação 24x7. Se é esperado que alguém passe as horas da madrugada tomando conta de uma implantação, consertando qualquer problema e, em seguida, mantendo uma programação diurna, suas expectativas não são realistas, e você está configurando essa pessoa para o desgaste.