A Nourish Care reduziu o tempo de execução de seus testes de 3 horas para 12 minutos com o Semaphore
Experimente o Semaphore
Neste vídeo, você encontrará as respostas para estas perguntas:
Qual o papel do CI/CD nas suas operações diárias?
Toda vez que abrimos um pull request, passamos por diversas verificações de qualidade antes de pensar em qualquer outra coisa. Primeiro, fazemos a verificação de linting. Para Rails, temos as melhores práticas configuradas para garantir que estamos fazendo as coisas da maneira correta, utilizando ferramentas como o RuboCop. Se todas essas verificações passarem, rodamos nossa suíte de testes automatizados.
Atualmente, temos cerca de 8.000 testes que são executados toda vez que fazemos um pull request. Se esses testes passarem, recebemos um selo verde no pull request. Quando aprovado, podemos mesclar. Após a mesclagem, o código é automaticamente implantado no ambiente de desenvolvimento para testes e, semanalmente, fazemos releases para os ambientes superiores, de staging para beta e depois para produção uma semana depois. Tudo isso é feito através do Semaphore.
Por que você escolheu o Semaphore como sua plataforma de CI/CD?
Estamos na Nourish há três anos e acredito que estamos usando o Semaphore há cinco anos. Conversei com o Ben, que implementou a ferramenta, e ele mencionou que antes da versão 2.0 do Semaphore, estávamos usando a versão 1.0. Portanto, já estamos com o Semaphore há bastante tempo e nunca sentimos a necessidade de mudar. Não é algo que cause problemas, é mais sobre o que estamos fazendo em cima dele, que pode falhar um pouco e precisarmos corrigir.
Mas o Semaphore é ótimo, ele simplesmente funciona. Estamos sempre adicionando novos microsserviços e eu configurei alguns deles no Semaphore. Tem sido muito rápido e fácil. Basta adicionar o repositório do GitHub ao Semaphore e garantir que o YAML esteja configurado corretamente. E pronto, é só rodar, e podemos implantar rapidamente.
Quais recursos do Semaphore você acha mais úteis?
O principal recurso seria a execução de testes paralelizados. Com os 8.000 testes, eles demorariam cerca de 3 horas para rodar se fossem executados um por vez. Mas os temos rodando em 20 nós, o que faz com que os testes sejam executados em cerca de 12 minutos. Usamos uma ferramenta chamada Knapsack, que otimiza a execução para que todos os testes levem o mesmo tempo.
Outros recursos úteis incluem o teste de UI com o Capybara, onde obtemos capturas de tela quando os testes falham. O Semaphore permite que retiremos essas capturas e as forneçamos como artefatos para analisar rapidamente o que deu errado. Isso ajuda bastante, pois erros de UI nem sempre indicam exatamente o que aconteceu, mas ver uma captura de tela do erro facilita muito a resolução.
Também temos um ótimo recurso de cache de dependências, como os módulos do Node, que tornam as builds muito mais rápidas, pois podemos armazená-los em cache e reutilizá-los sempre que possível. Temos cerca de 20 servidores de produção, e uma das coisas que eu gosto é que, ao fazer o deploy, basta pressionar um botão e ele é enviado para todos os 20 servidores ao mesmo tempo. Posso ver os logs de cada um, e se algum falhar, posso reiniciar aquele servidor individualmente.
E por fim, ter tudo em um arquivo YAML é excelente, pois podemos tratá-lo como infraestrutura como código e revisar facilmente qualquer alteração para entender por que algo pode ter quebrado.
Como você avalia o suporte do Semaphore?
Raramente precisamos usar o suporte, perguntei para as pessoas da equipe e a maioria nunca precisou. Eu precisei de suporte cerca de um ou dois meses atrás e recebi uma resposta muito rápida. A pessoa foi muito útil e, embora o problema fosse totalmente meu, ela ainda me ofereceu soluções e conselhos, o que eu realmente apreciei, pois ela poderia apenas ter dito que o problema era simples e que eu deveria resolver por conta própria. Então, foi uma experiência muito positiva.
Por que você recomendaria o Semaphore?
A rapidez na configuração. Isso é realmente rápido e fácil de fazer, então você não tem muito a perder ao testar. Além disso, é muito personalizável. Temos diversos pipelines rodando e podemos bloquear certos processos para evitar que algo vá para a produção acidentalmente, o que alivia bastante o estresse. Eu não preciso mais me preocupar com muitas coisas. Apenas pressiono o merge e sei que o código estará no ambiente de staging em 20 minutos e já está lá. É muito fácil de usar, então definitivamente recomendaria.
A Nourish trabalha de perto com prestadores de cuidados, organizações locais de saúde e assistência social, além de famílias e comunidades, para melhorar a gestão, entrega, monitoramento e aprimoramento dos cuidados.
Setor
Saúde, Prontuário Eletrônico de Saúde, Tecnologia da Informação, Enfermagem e Cuidados Residenciais
Sede
Europa, Oriente Médio e África (EMEA)
Stack
Vue
Ruby on Rails
Rail views
Angular
AWS
Python
Typescript
Go
Resultados reais. Impacto real. 🎯📈