Quanto tempo vocês levam para fazer rollback de um deploy quebrado?
Esses dias implementei uma feature de rollback no Hangar e fiquei curioso para saber como vocês lidam com isso hoje.
Imagina o cenário:
Você faz um deploy, aparentemente está tudo certo, e alguns minutos depois percebe que quebrou produção.
Normalmente dá para fazer um git revert, voltar para o commit anterior e disparar outro deploy.
Funciona, mas dependendo do projeto você ainda precisa passar novamente por build, geração da imagem e todo o processo de deploy.
No Hangar resolvi fazer diferente.
Quando o rollback está ativado, a cada deploy eu salvo a imagem que foi compilada naquela versão.
Então se eu tiver:
Deploy #54 ← produção atual
Deploy #53
Deploy #52
Deploy #51
e o deploy #54 quebrar alguma coisa, o usuário pode simplesmente escolher o #53 e clicar em Rollback.
Como aquela imagem já foi compilada anteriormente, não fazemos o build novamente.
Em poucos segundos aquela versão volta para produção.
O que achei interessante nessa abordagem é que você não está reconstruindo um commit antigo. Você está colocando em produção exatamente a mesma imagem que já estava funcionando anteriormente.
Claro que existe um custo nisso, principalmente armazenamento das imagens antigas, então deixei a funcionalidade opcional.
Estou construindo o Hangar, um PaaS brasileiro, e fiquei curioso para saber como vocês resolvem isso hoje.
Vocês fazem git revert + novo deploy? Guardam imagens anteriores? Usam alguma funcionalidade da própria plataforma?