Pitch: Construindo um SaaS de Monitoramento Sintético com Python e Django: Arquitetura, Stack e o Desafio dos Falsos Positivos
Olá, pessoal! Acompanho a turma aqui há algum tempo e hoje decidi compartilhar um pouco do que estou construindo.
Sou desenvolvedor e, nos últimos meses, mergulhei em um projeto para resolver uma dor pessoal: monitorar múltiplos clientes e sites de forma simples, útil e confiável, sem a complexidade (e o custo) das ferramentas enterprise.
O resultado é o Synthetic 10, um SaaS de monitoramento sintético e páginas de status focado no mercado nacional.
Mas antes de falar da ferramenta em si, queria compartilhar com vocês a teoria, a engenharia e as decisões técnicas por trás de um sistema desse tipo. Sei que a comunidade aqui curte saber como as coisas funcionam "por baixo do capô".
O que é Monitoramento Sintético?
Diferente do monitoramento passivo (RUM - Real User Monitoring), que observa o tráfego real dos usuários, o Monitoramento Sintético simula interações com o seu sistema em intervalos regulares. Basicamente, é um "robô" testando se a porta está aberta.
Existem três níveis principais de testes sintéticos:
Ping (ICMP) / Port Check: O mais básico. "O servidor está ligado? A porta 443 responde?". Baixo custo, mas não garante que a aplicação está rodando corretamente.
HTTP/HTTPS Checks: O mais comum (e o foco do meu SaaS). O monitor faz uma requisição GET ou HEAD e espera um status 200 OK. Aqui validamos certificados SSL, redirecionamentos e tempo de resposta (TTFB).
Browser Tests (Transacional): O mais complexo. Um navegador headless (Puppeteer/Playwright) abre o site, clica em "Login" e verifica se logou. Garante a funcionalidade completa, mas é caro computacionalmente.
A Stack do Projeto (O "Boring Tech" que funciona)
Para construir o Synthetic 10, optei por tecnologias sólidas e maduras para garantir estabilidade:
Backend: Python com Django (Django Rest Framework) / Prometheus
Infra: Docker e Nginx.
Banco de Dados: PostgreSQL (com garantir o isolamento Multi-tenant).
Verificadores/Workers: Celery com Redis para gerenciar as filas distribuídas de verificação.
O Grande Vilão: Falsos Positivos
Quem já configurou Zabbix ou Prometheus sabe: o pior alerta é o alerta falso. Ele cria a "fadiga de alerta". Se o seu celular toca às 3h da manhã e o site estava online, você para de confiar na ferramenta.
Um "timeout" nem sempre significa servidor caído. Pode ser:
Micro-interrupção na rota da internet.
Bloqueio temporário de firewall/WAF.
Lentidão momentânea de DNS.
A Solução Clássica (que implementei): Lógica de Confirmação (Double Check). O sistema não alerta no primeiro erro. Se houver falha na detecção, ele agenda imediatamente uma rechecagem (alem de esperar por um tempo determinado). Só se a confirmação falhar é que o alerta (WhatsApp/Telegram) é disparado.
O Futuro: AIOps e Inteligência Artificial
Estudando para melhorar o algoritmo de detecção, vi que o mercado está migrando para AIOps. Aqui é onde a IA entra como alternativa superior às regras estáticas. Tenho estudado três vertentes para o roadmap:
Baseline Dinâmico: Em vez de configurar "Avise se demorar > 5s", a IA aprende que "toda terça às 14h esse site demora 2s". Se demorar 4s, é uma anomalia, mesmo sendo abaixo do timeout padrão.
Correlação de Eventos: Se 50 sites monitorados falham ao mesmo tempo, uma regra simples mandaria 50 alertas. Uma IA entende que isso é provavelmente uma queda no Cloud Provider e agrupa em um único alerta: "Possível instabilidade na AWS us-east-1".
Previsão de Falha: Analisar padrões de latência crescente (degradação) para avisar antes do site cair.
Ainda não estou usando IA generativa no core do Synthetic 10 (custo/benefício do MVP), mas a lógica de Baseline Dinâmico é o próximo passo.
Pedido de Feedback (Usabilidade / Must-have)
Estou abrindo o projeto para a comunidade testar. Meu objetivo agora é validar a robustez do mecanismo de verificação atual e a utilidade da Página de Status Pública (que criei para que agências possam enviar aos clientes).
Se alguém tiver interesse em testar, deixei o link abaixo. Críticas sobre a usabilidade, sugestões de integrações ou dúvidas sobre a implementação em Django são muito bem-vindas.
Link para quem quiser "quebrar" o sistema: https://synthetic10.com
Um abraço!