Os contêineres do Semaphore fornecem estabilidade para a AppSignal

  • ⛔️️ Builds instáveis
  • ⛔️ Agentes de build difíceis de configurar e depurar
  • ⛔️ Tempo de build do Ruby Gem: 14min
  • ⛔️️ Tempo de build do JRuby: 7min
  • ⛔️ UI confusa
  • ⛔️ Experiência de suporte ‘mista’
  • ✅ Builds confiáveis
  • ✅ Suporte de contêineres contínuo
  • ✅ Build de gem Ruby de 6,5 min ⬇️ 2,2x
  • ✅ Build de JRuby de 1,5 min ⬇️ 4,5x
  • ✅ UI intuitiva
  • ✅ Suporte rápido

Experimente o Semaphore

O desafio

A equipe da AppSignal se viu à mercê de suas antigas ferramentas de CI. Os builds eram instáveis. A equipe decidiu que era hora de mudar quando não conseguiu obter a ajuda necessária de seu antigo provedor de CI. “O CircleCI fez uma alteração em algum lugar em sua infraestrutura e isso quebrou consistentemente nosso build”, explica Tom de Bruijn, que é desenvolvedor na AppSignal. Além disso, não era apenas um provedor de CI. Tom continua: “Tivemos um problema semelhante com o TravisCI, os builds eram inconsistentes e esses problemas ocorriam apenas no TravisCI.”

Devido às falhas esporádicas de builds e testes, o valor da configuração de CI da equipe começou a se deteriorar. Primeiro, muito tempo foi perdido reexecutando builds para ver se uma falha era real. Em segundo lugar, Tom dedicou muito esforço para depurar os builds frágeis. Terceiro, e mais importante, as falhas aleatórias começaram a mascarar problemas reais. Como Tom descreve, “testes com falhas entraram sem que percebêssemos. Se o build falha sempre ou aleatoriamente, você não vai mais olhar o resultado do build.”

Para piorar os problemas com sua configuração anterior de CI, a equipe achou a interface do usuário difícil de usar. “As pessoas se perdiam na interface de workflow do CircleCI”, relata Tom. Isso significava que a equipe evitava construir o tipo de workflows avançados que poderiam melhorar os tempos de build. Além disso, a variedade de jobs distintos gerava muitas notificações no Slack. Portanto, era difícil saber quando um conjunto completo de jobs para um pull request estava completo. “A equipe achava que os builds estavam prontos antes de realmente estarem,” lembra Tom.

No geral, a AppSignal precisava que sua nova solução de CI/CD:

  • ✔️ Dar a eles controle total sobre o ambiente de execução
  • ✔️ Utilizar agentes de build SaaS de baixa manutenção
  • ✔️ Ser suportada por um atendimento ao cliente ágil
  • ✔️ Modelar simplesmente todo o fluxo de trabalho

A solução

O principal conselho de Tom para quem está considerando trocar de provedor de CI é mover o ambiente de teste para contêineres. O suporte contínuo do Semaphore para contêineres Docker permitiu que o fluxo de trabalho da AppSignal fosse portado rapidamente. O contêiner de teste do servidor da equipe, da própria coleção privada do Docker Hub da AppSignal, deu a eles controle total sobre o ambiente de execução e os isolou de mudanças externas.

Todos os jobs no fluxo de trabalho são coletados em um único modelo. “A interface do fluxo de trabalho é melhor”, diz Tom, “não preciso mais mostrar às pessoas onde podem ver o workflow completo, por exemplo”. Como resultado da modelagem de fluxo de trabalho mais simples, as notificações do Slack chegam apenas para fluxos de trabalho completos – não para cada job individual como antes.

Através da experiência do usuário aprimorada do Semaphore, a equipe conseguiu explorar o paralelismo que seu fluxo de trabalho permite. “Dividimos mais builds para que partes separadas possam rodar em paralelo”. A documentação de alta qualidade do Semaphore tem sido uma grande ajuda, “conseguimos encontrar a maioria das respostas para nossas perguntas na documentação”, conclui Tom.

Outro aspecto importante da solução são seus baixos requisitos de manutenção. O Semaphore provisiona agentes de build conforme necessário. Como resultado, os engenheiros da AppSignal não precisam gastar tempo e recursos na configuração e manutenção dos agentes.

AppSignal Workflows
Fluxo de trabalho da AppSignal no Semaphore

Os resultados

E qual é a avaliação de Tom sobre os resultados? “Executar os builds do Ruby gem no Semaphore funciona perfeitamente, sem falhas aleatórias, e é feito muito mais rápido”. A erradicação de builds instáveis resulta diretamente em uma economia de tempo. Indiretamente, a maior confiabilidade impulsiona ainda mais a produtividade da equipe.

O tempo decorrido e o tempo de CPU de cada ciclo de build também melhoraram radicalmente. Por exemplo, o Ruby gem da AppSignal costumava levar cerca de 14 minutos em tempo real (e 85 minutos de tempo de CPU). Agora, leva apenas 6,5 minutos (40 minutos de CPU). Os builds do JRuby também aceleraram: 7 minutos na solução antiga e apenas 1 minuto e 30 segundos com o Semaphore.

“O build é mais rápido desde o início com o tipo de máquina padrão”, observa Tom. “Mudamos todos os nossos projetos do CircleCI para o Semaphore e também começamos a migrar os builds do TravisCI para nossas integrações no Semaphore.”

A AppSignal é um dos principais provedores europeus de APM em tempo real, fundada em 2012.

Setor

Tecnologia da Informação

Tamanho da empresa

11-50 funcionários

Equipe de engenharia

6 pessoas

Stack Tecnológico

Ruby on Rails

MongoDB

Javascript

React

Star us on GitHub