Vamos reduzir o tempo de deploy com Github Actions?
(blog.lemonbase.team)Vamos reduzir o tempo de deploy com Github Actions?
Este é um artigo sobre várias tentativas de reduzir o tempo de deploy usando Github Actions e sobre a experiência de resolver os problemas encontrados nesse processo.
- À medida que o tempo de deploy foi aumentando, surgiu um problema que começou a impactar negativamente a velocidade de desenvolvimento e a produtividade da equipe
- O artigo explica como foram realizadas diversas melhorias para resolver esse problema, como a conversão do processo de deploy para processamento paralelo e a introdução de gatilhos de build seletivos
Situação do problema
- O tempo de deploy com Github Actions foi aumentando gradualmente, chegando a uma média de 27 minutos
- Começou a afetar a produtividade de desenvolvimento
- Como Frontend, Intro e Backend eram buildados e implantados de forma sequencial, com o tempo isso se tornou um método ineficiente e o tempo de deploy aumentou
Principais melhorias
- Introdução de processamento paralelo
- Ao separar em paralelo as tarefas de deploy de Frontend e Backend, que antes eram executadas em série, o tempo de deploy foi reduzido de 27 para 18 minutos.
- Nesse processo, o código do Github Workflow também foi modularizado
- Introdução de gatilhos de build seletivos
- Foi usado
path-filterpara buildar apenas as partes alteradas, mas foi identificada uma situação problemática em casos de rollback - Em vez de usar a abordagem com
path-filter, foram oferecidas opções no Workflow para que o desenvolvedor pudesse escolher o alvo do deploy
- Foi usado
- Estratégia de uso de Docker Image Tag
- Com a reutilização de Docker Image, o tempo de deploy foi reduzido de 18 para 15 minutos.
- Processamento paralelo no deploy
- O processo foi dividido para permitir paralelização também na etapa de deploy, reduzindo ainda mais o tempo
- Separação da Intro
- O build da página de introdução foi separado do build do serviço no frontend para maximizar a eficiência do deploy.
Resultado
- Redução de 55% no tempo de deploy (27 min -> 12 min)
- Possibilidade de redução de até 70%, diminuição de custos de infraestrutura e aumento da produtividade no desenvolvimento do produto.
- Benefícios adicionais
- Melhoria na reutilização e na facilidade de manutenção por meio da modularização do Workflow
- Redução do tempo de resolução de problemas e aumento da estabilidade do sistema
Ainda não há comentários.