Configurando o Sharpe E Rabbit na prática
O sistema Sharpe E Rabbit é uma ferramenta de automação baseada em regras que roda sobre infraestruturas containerizadas. Não é a solução mais sexy do mercado, mas tem seus pontos fortes quando você precisa de algo estável para pipelines de dados. Vou explicar como configurei aqui no escritório e os problemas que encontrei no caminho. Primeiro, o básico. Você precisa de um servidor com pelo menos 4GB de RAM dedicados, embora 8GB sejam o ideal se for processar volume médio de dados. O sistema opera em Docker, então ter o Docker Engine atualizado e o Docker Compose instalado é pré-requisito. Baixe a imagem oficial diretamente do repositório do projeto no GitHub, 2.4.1 é a mais estável que testei até agora.
Download e instalação inicial do sharpe e rabbit
O link direto para download está em https://github.com/sharpe-e-rabbit/sharpe-e-rabbit/releases/tag/v2.4.1. Não use mirrors ou repositórios terceiros, já vi casos de pessoas baixando versões modificadas com malware incluso. Achei isso acontecer com um colega meu que usou um mirror chinês sem verificar o checksum SHA-256. Depois de baixar, extraia o arquivo e navegue até a pasta. O comando de inicialização padrão é docker-compose up -d. Espere cerca de 3 a 5 minutos para todos os containers subirem. Os logs aparecem no stdout e você pode acompanhar com docker-compose logs -f. Se algum container falhar na inicialização, verifique primeiro o healthcheck do banco de dados PostgreSQL, que é o componente mais sensível.
A configuração inicial exige que você edite o arquivo docker-compose.yml e defina as variáveis de ambiente. O POSTGRES_USER, POSTGRES_PASSWORD e POSTGRES_DB são obrigatórios. Eu recomendo usar senhas com pelo menos 16 caracteres, alfanuméricos, porque o sistema não implementa rate limiting nativo nas requisições de login. Isso significa que um ataque de força bruta é tecnicamente viável se a senha for fraca.
Primeiro uso e fluxo operacional
Após a instalação, acesse a interface web em http://seuservidor:8080. O sistema já vem com um usuário admin padrão, mas você DEVE alterar a senha imediatamente. A tela inicial mostra o dashboard com métricas de saúde dos serviços rodando. Se tudo estiver verde, você está pronto para começar a criar jobs. O fluxo principal funciona assim: você cria um job, define os gatilhos de execução, configura os parâmetros de entrada e sai. Os gatilhos podem ser baseados em tempo (cron), eventos de arquivo, ou disparadores manuais via API REST. Eu uso principalmente os gatilhos de tempo, porque são mais previsíveis e fáceis de depurar quando algo dá errado.
Os jobs executam em containers isolados, o que é bom para isolamento mas ruim para performance quando você precisa de comunicação inter-container frequente. No meu caso, tive que configurar uma rede Docker personalizada porque os containers padrão não conseguiam se comunicar entre si de forma confiável. O problema era que o firewall interno do Docker bloqueava conexões entre redes diferentes sem configuração explícita. A API REST do sistema está documentada em http://seuservidor:8080/api/docs. Use o método GET /jobs para listar jobs existentes e POST /jobs para criar novos. Os tokens de autenticação expiram a cada 24 horas por padrão, o que é seguro mas pode ser irritante se você tiver scripts de automação que precisam de acesso contínuo. A solução que encontrei foi criar um job agendado que renova o token automaticamente a cada 20 horas.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Problemas comuns e soluções práticas
O erro mais frequente que encontrei foi o timeout de conexão com o banco de dados durante picos de carga. O sistema tem um pool de conexões configurável, mas o valor padrão de 10 conexões é baixo para cargas reais. Eu aumentei para 50 conexões e configurei o timeout de idle para 30 segundos, o que resolveu completamente o problema de performance. Outro problema comum é a perda de jobs durante reinicializações do servidor. Isso acontece porque o sistema usa memória RAM para armazenar jobs em fila, e jobs não persistidos são perdidos quando o container para. A solução é configurar a persistência em disco editando o arquivo de configuração e definindo o caminho do diretório de jobs. Eu uso /var/lib/sharpe-e-rabbit/jobs como diretório de persistência.
Um detalhe importante que muitos usuários ignoram é a necessidade de configurar backups regulares do banco de dados. O sistema não faz backup automático, então se o banco corromper, você perde todos os jobs configurados. Eu criei um script cron que faz backup diário do banco e envia para um storage S3 compatível, com retenção de 30 dias. A memória RAM é outro ponto crítico. O sistema consome aproximadamente 500MB em idle, mas pode chegar a 2GB durante processamento intensivo. Se seu servidor tiver menos de 4GB, você vai enfrentar trocas de memória constantes que degradam a performance drasticamente. Monitore o uso com o comando docker stats, que mostra consumo em tempo real.
Limitações e quando NÃO usar
O sharpe e rabbit não é adequado para sistemas que exigem baixa latência, porque o overhead de containerização adiciona pelo menos 50 a 100ms de delay em cada operação. Se você precisa de processamento em tempo real, considere usar uma solução bare-metal ou serverless ao invés dessa abordagem containerizada. O sistema também não escala horizontalmente de forma nativa. Você pode adicionar mais workers, mas a coordenação entre nós requer configuração manual complexa e não há balanceamento de carga automático. Para clusters pequenos com menos de 5 nós, funciona razoavelmente bem. Para infraestruturas maiores, recomendo avaliar alternativas como Kubernetes com operadores dedicados.
Outra limitação séria é a falta de suporte a linguagens de programação modernas em alguns módulos. O sistema suporta Python 3.8+, Go, e Node.js 16+, mas versões mais recentes de algumas bibliotecas podem não ser compatíveis. Sempre teste antes de confiar em produção. O custo de licenciamento também é um fator a considerar. A versão community é gratuita mas limitada a 100 jobs ativos simultâneos. Para volumes maiores, a licença enterprise custa aproximadamente 500 dólares por mês, o que pode ser prohibitivo para pequenas equipes ou startups.
Dicas avançadas para otimização
Se você trabalha com grandes volumes de dados, configure o worker pool dinâmico. O sistema permite ajustar o número de workers conforme a carga, mas isso requer monitoramento constante. Eu uso um script que aumenta os workers durante horários de pico e reduz durante a madrugada, economizando recursos. A rede Docker personalizada que mencionei antes também permite otimizar throughput. Configure bridges com MTU 9000 para jumbo frames se sua infraestrutura de rede suportar. Eu vi ganhos de 30% em velocidade de transferência de dados com essa configuração.
Finalmente, sempre mantenha logs detalhados em nível INFO ou DEBUG durante desenvolvimento. O sistema permite rotação automática de logs, mas o padrão é manter apenas os últimos 10MB. Aumente para 100MB ou mais se estiver diagnosticando problemas complexos, porque logs antigos podem conter informações cruciais sobre a causa raiz de falhas.