Semaphore reduz pela metade o tempo do push até o deployment para os builds pesados da Channable
😔 Antes do Semaphore:
- ⛔️ Builds em Haskell de 30 minutos
- ⛔️ Agentes de build com baixa capacidade
- ⛔️ Perda de aceleração na paralelização
- ⛔️ Produtividade perdida com troca de contexto
- ⛔️ Espera por clones do Git
😄 Após adotar o Semaphore:
- ✅ Builds em Haskell em 10 minutos ⬇️ 3x
- ✅ Agentes de build poderosos
- ✅ Mais compilação em paralelo
- ✅ Menos interrupções no fluxo de trabalho
- ✅ Cache local do Git
Experimente o Semaphore
O desafio
O fluxo de trabalho da equipe da Channable só permite merges na branch master após o sistema de CI verificar o commit de merge. Se outro merge para a master acontecer nesse meio tempo, os resultados dos builds dos outros commits de merge são invalidados. “Longos períodos de espera no CI são frustrantes”, explica Robert Kreuzer, cofundador e CTO. “Se demora muito, você acaba indo fazer outra coisa, e quando se lembra de verificar seu build, alguém já fez um merge na master, então você precisa começar de novo.” Além disso, tempos de build longos levam a mais troca de contexto, então, para o bem da produtividade, a equipe estava ansiosa para acelerar o pipeline de CI/CD.
A Channable estava enfrentando alguns problemas específicos com sua solução de CI existente, o Travis. Primeiro, os períodos de espera para os jobs começarem eram longos, e não havia visibilidade sobre o que estava causando o atraso. Em segundo lugar, o pipeline da Channable inclui a compilação de código Haskell para binários nativos, o que é intensivo em CPU. A equipe descobriu que os builds nas máquinas do Travis eram muito mais lentos do que em suas próprias estações de trabalho.
A espera excessiva e os tempos de execução do pipeline se tornaram um foco ainda mais evidente no contexto de problemas em produção. Desde o push de um hotfix até o deployment, o processo podia facilmente levar 20 minutos, o que, como Robert destaca, “é muito tempo para um bug crítico ficar em produção.”
“Para pipelines que exigem muito processamento, é definitivamente a ferramenta certa para o trabalho.”

Robert Kreuzer
co-fundador e CTO
No geral, a Channable precisava que sua nova solução de CI/CD:
- ✔️ Reduzir o tempo de espera para builds na fila
- ✔️ Máquinas de build mais rápidas para compilações intensivas em CPU
- ✔️ Cache local rápido para operações de Git que consomem muita largura de banda
“O cache do Semaphore foi ainda melhor do que esperávamos, muito rápido e fácil de usar.”

Robert Kreuzer
co-fundador e CTO
A solução
A equipe da Channable avaliou uma série de soluções, incluindo AppVeyor, Azure DevOps, BitBucket Pipelines, CircleCI, Cirrus, CodeShip, Concourse, GitLab CI e SourceHut builds. A disponibilidade de máquinas de build multicore e o cache flexível e fácil de usar destacaram-se como diferenciais a favor do Semaphore.
“O maior impacto para nós foi a disponibilidade de VMs maiores com múltiplos núcleos”, diz Robert. “Especialmente a compilação em Haskell e nossa suíte de testes se beneficiaram muito do paralelismo adicional.” O Semaphore oferece três tipos de máquinas Linux. Cada job em um pipeline roda em um agente de build separado. Para a etapa de compilação em Haskell, que consome muita CPU, a Channable escolheu a variante mais poderosa, com 8 núcleos, para maximizar a velocidade.
Outras melhorias em relação à solução anterior vieram através do caching. O primeiro tipo de cache que impulsionou o desempenho foi o cache local do Git no Semaphore. Esse cache reduziu consideravelmente o tempo gasto clonando repositórios Git. O segundo tipo de cache usado no fluxo de trabalho acelerou o pipeline da Channable e reduziu o tráfego de download. O Semaphore fornece um cache para cada projeto. Esse cache está disponível em cada job do pipeline.
O fluxo de trabalho da Channable armazena dependências que mudam com pouca frequência após o primeiro build bem-sucedido de cada dia. O cache está disponível em todos os jobs nativamente, o que facilitou a configuração do build. “O cache do Semaphore foi ainda melhor do que esperávamos,” conclui Robert, “muito rápido e fácil de usar.”


Os resultados
O Semaphore coloca os jobs em fila para serem executados em um pool de até 50 máquinas de build por organização, um aumento de dez vezes em relação ao plano mais poderoso anunciado pelo Travis. Com mais agentes para rodar os jobs e agentes mais poderosos para os jobs maiores, a nova solução de CI/CD trouxe os resultados esperados. Como Robert resume, “o ganho geral de desempenho em comparação com o Travis teve o resultado esperado: reduzimos aproximadamente pela metade o tempo do push até o resultado.” Grande parte dessa economia veio dos agentes de build de alto desempenho usados para a compilação intensiva em CPU do Haskell. O tempo para uma reconstrução completa dos binários nativos (com todas as dependências no cache) caiu de 30 minutos no Travis para cerca de 10 minutos com o Semaphore.
No geral, a equipe obteve as melhorias de produtividade e tempo que buscava. “O tempo para entregar (desde o merge de um PR até o pacote ser implantado) diminuiu devido aos tempos de espera mais curtos,” relata o CTO, “tornando os deployments menos disruptivos para o fluxo de trabalho geral.”
“Baixo tempo de fila, builds rápidos, uma solução de cache eficiente.”

Robert Kreuzer
co-fundador e CTO
A Channable desenvolve uma solução SaaS para empresas de e-commerce enviarem seus produtos ou serviços para diversos marketplaces, mecanismos de comparação e plataformas de afiliados. A plataforma, criada pela empresa com mais de 100 funcionários, tornou-se a principal solução de gerenciamento de feeds de produtos nos Países Baixos.
www.channable.com
Setor
eCommerce
Tamanho da empresa
100-200 funcionários
Equipe de engenharia
35 pessoas
Stack Tecnológico
Python
Haskell
Nix
JavaScript
Resultados reais. Impacto real. 🎯📈