Você pode fazer várias coisas para melhorar seu processo de implantação. Alguns deles são:
Verifique se seu código está bem testado.
Idealmente, você deve ter 100% de cobertura de teste de unidade, bem como testes de integração para todos os cenários possíveis.
Se você não conseguiu, provavelmente deve largar tudo e cuidar disso.
Examine o desenvolvimento orientado pelo comportamento.
Ter um conjunto de testes completo permitirá que você ...
Execute a integração contínua.
Sempre que alguém comete uma alteração, o CI pode executar automaticamente o conjunto de testes nele. Se o conjunto de testes for aprovado, ele poderá implantar imediatamente (ou agendar uma implantação). Para alterações que não exigem nenhuma alteração significativa em seus bancos de dados, isso economiza muito tempo e dor de cabeça.
No caso de um problema, o IC também pode oferecer uma reversão com um clique.
O IC é muito menos útil se o seu conjunto de testes não estiver completo e correto, pois toda a premissa depende de poder validar seu código de forma automatizada.
Faça atualizações atômicas.
Idealmente, você não deve apenas copiar novos arquivos pelos antigos no servidor de produção. Em vez disso, use uma ferramenta como o 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. A reversão é instantânea, pois envolve simplesmente alterar o link simbólico para apontar para a implantação anterior. (Embora isso não abranja 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, IC ou nada, isso por si só pode ajudá-lo significativamente. Toda mudança deve ter sua própria ramificação git, e uma implantação deve ter o mínimo de alterações possível. Como as alterações são menores, há menos chances de dar errado durante uma implantação.
Nessa nota, faça 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, esse é o único jogo que precisa ser suspenso para manutenção.
Analise qualquer coisa de longa duração.
Você mencionou que algumas partes de suas implantações demoram muito tempo. Provavelmente, isso é alterações no esquema do banco de dados. Vale a pena examinar o DBA no seu banco de dados, juntamente com cada alteração de esquema, para ver o que pode ter um desempenho melhor.
Peça a um especialista no assunto para examinar qualquer outra parte de uma implantação que considere grandes blocos de tempo.
Trabalhe em horários estranhos.
Você já pode estar fazendo isso, mas vale a pena mencionar. Os desenvolvedores (e administradores de sistemas!) Não devem trabalhar mais "9 para 5", especialmente para uma operação 24x7. Se alguém espera passar a noite cuidando de uma implantação, resolvendo problemas e mantendo um horário diurno, suas expectativas são irrealistas e você está configurando essa pessoa para o esgotamento.