Se você já precisou configurar um servidor web, com certeza esbarrou nesses dois: Apache e NGINX.
O Apache é o veterano. Está aí desde 1995, tem uma penca de módulos, roda bem com PHP, Python, Ruby… e permite configurar regras direto em cada pasta com o arquivo .htaccess. Porém, por muito tempo, ele criava um processo ou thread para cada requisição, o que complicava a escalabilidade, especialmente em ambientes de alta carga. Isso melhorou com o módulo mpm_event, que permite uma gestão mais eficiente das conexões, principalmente quando combinado com PHP-FPM. Porém, essa configuração precisa ser feita manualmente para tirar o máximo de proveito…
Já o NGINX (lê-se “engine-x”) nasceu em 2004 com uma missão clara: lidar com milhares de conexões simultâneas. Ele usa uma arquitetura assíncrona, é leve, rápido e excelente pra servir arquivos estáticos, fazer proxy reverso ou balancear carga.
Na prática, o NGINX costuma ser mais performático. O Apache ganha em flexibilidade e compatibilidade com sistemas legados. Muitos projetos usam os dois juntos, num modelo hibrido com NGINX na frente, como proxy reverso, para o Apache, que processa a aplicação.
No fim, a melhor escolha depende do seu cenário, do projeto… e do que você já domina.
Todo dev tem aquele projeto que cresce junto com ele. O meu é o NetView, um sistema de monitoramento de rede que nasceu no início de 2023 pra resolver uma dor bem prática onde eu trabalho, e hoje virou um projeto completo com dashboard em tempo real, CLI, integração com WhatsApp e uma arquitetura modular em Node.js.
Esse texto é um relato técnico (e pessoal) dessa jornada: de um script PHP direto ao ponto até uma aplicação extensível e em produção real. O que aprendi no caminho, os erros que corrigi e as soluções que construí estão aqui.
💡 Todo o código, de todas as versões, está disponível no GitHub
O começo de tudo: Vigianet
O NetView começou em 2023 com outro nome: VigiaNet. A ideia era simples: ter uma página que mostrasse, de forma visual, o status dos principais equipamentos de rede do hospital: servidores, impressoras, dvr’s, roteadores, etc.
A stack era bem direta:
index.html com Vue.js
Um setInterval que fazia requisição com Axios a cada 20 segundos
Um devices.php que fazia ping nos dispositivos e devolvia um JSON
Mas o detalhe está na lógica. O backend PHP:
Mantinha uma lista de dispositivos, com nome, IP e se deveria ser monitorado 24h ou só em horário comercial.
Avaliava a regra de horário antes de tentar o ping.
Executava ping -n 1 -w 1 (Windows) via exec(), interpretava o retorno e montava um JSON com os status.
Dispositivos fora de horário eram marcados como tal, sem tentar ping.
O frontend Vue.js fazia polling, processava o JSON e criava cards coloridos (verde, vermelho, cinza). Tinha até animação blink pro status offline.
Limitações? Várias:
Latência de até 20s entre a queda e o aviso visual.
Nenhum alerta proativo.
Tráfego constante, mesmo sem mudanças.
Mas, pra um projeto que nasceu como um quebra galho, era mais do que funcional. E foi minha porta de entrada pra entender monitoramento de rede.
A primeira virada: Node.js + WebSocket
Com o tempo, surgiu a necessidade de alertas automáticos, via WhatsApp, quando um dispositivo caía. Isso motivou a primeira grande reescrita: sai PHP, entra Node.js, WebSocket e alertas proativos.
Nascia o NetView v2.
A arquitetura ainda era monolítica:
netview_server.js era o único arquivo responsável por:
Iniciar servidor WebSocket
Ler config/devices.json
Executar pings periodicamente
Detectar mudanças de status
Enviar mensagens via WhatsApp (usando whatsapp-web.js)
O frontend se conectava via WebSocket e recebia atualizações em tempo real, nada mais de polling. O dashboard era dinâmico e imediato. E foi completamente reformulado.
Mas a v2 ainda tinha limitações:
Tudo centralizado num único arquivo.
Configurações sensíveis hardcoded.
Script auxiliar (achagrupo.js) pra descobrir o ID do grupo do WhatsApp.
Funcionava. Mas adicionar um dispositivo significava editar código manualmente.
Arquitetura de verdade: v3
A partir da versão v3, veio a grande virada arquitetural. O código ficou mais limpo, testável, modular e o NetView virou um sistema de verdade.
Organização por responsabilidades
A lógica foi quebrada em módulos:
NetViewServer: orquestrador de tudo
PingService: cuida dos pings com backoff exponencial
DeviceStateManager: gerencia o status e histórico
NotificationManager: decide quando notificar
WhatsAppClient: integra com o WhatsApp
ConfigManager: observa e carrega a config
Essa separação facilita testes, debugging e extensões futuras.
Ping mais inteligente
O ping agora tem:
Tentativas com backoff exponencial
Timeout configurável
Compatibilidade com Windows e Linux
Análise de perda de pacotes
Concorrência com Promise.all
CLI Interativo
Criei um CLI interativo com readline e chalk que permite configurar tudo sem abrir o código:
$ node server.js --cli
device-add → adicionar novo dispositivo
wa-groups → listar grupos do WhatsApp
wa-set → selecionar o grupo para notificações
logs → ver as ultimas 20 linhas do arquivo de log
Por que não usar o Zabbix?
Desde que criei o NetView, vez ou outra me perguntam: “Mas o Zabbix já não faz tudo isso?”
Sim, o Zabbix faz muito mais do que o NetView jamais pretendeu fazer. E tá tudo bem! O NetView nunca foi pensado para competir com ferramentas estabelecidas, ele nasceu para resolver uma dor específica de forma rápida e simples.
Característica
Zabbix
NetView
Complexidade
Alta
Baixa
Setup inicial
Horas
Minutos
Interface
Completa, mas densa
Simples e direta
Alertas
Configuráveis, múltiplos canais
WhatsApp integrado, basta conectar
Extensibilidade
Templates, plugins, APIs
No código
Ideal para
Ambientes que precisam de monitoramento robusto, relatórios, SLA
Quem quer algo funcionando rápido, com alertas diretos
O NetView é mais como um “canivete suíço” para quem precisa de algo funcionando hoje, sem treinamento da equipe ou semanas de configuração. É o projeto que você monta numa tarde e deixa rodando.
Se sua infraestrutura é crítica e você tem tempo para fazer direito, use Zabbix. Se você só quer parar de ficar perguntando “a impressora da recepção tá funcionando?”, o NetView resolve.
Mais que um projeto, uma trilha de aprendizado
O NetView é um reflexo da minha trajetória como dev. Começou resolvendo um problema com um script PHP. Depois virou playground com Node.js. Hoje é um sistema estável, modular, fácil de manter, e cheio de lições no meio do caminho.
É por isso que eu gosto tanto dele. Porque ele cresceu comigo.
O que realmente aprendi
Esse projeto me ensinou muita coisa na prática, não só sobre código, mas sobre evolução de software:
✅ Como organizar sistemas em módulos coesos ✅ CLI com readline e UX de terminal ✅ Lógica de retry com backoff exponencial ✅ WebSocket bidirecional ✅ Integração com APIs não convencionais (WhatsApp Web) ✅ Logs com Winston, histórico com JSONL ✅ Hot reload de arquivos de config ✅ Controle de concorrência com Promises
Mas principalmente: que software bom é software que resolve problemas reais. O NetView não é revolucionário. Não vai mudar o mundo. Mas toda vez que chego e vejo os vários cards no dashboard, sei que aquele script PHP simples de 2023 virou algo útil de verdade.
E talvez seja isso que faz a diferença: não a complexidade do código, mas o problema que ele resolve.
O MoodFilme continua simples — e é assim que eu prefiro. Mas por trás, mudei tudo. Refiz a estrutura, refatorei o código, deixei mais leve e fácil de manter.
A interface é a mesma. Fiz só pequenos ajustes. O foco foi deixar a base sólida o suficiente pra poder continuar evoluindo o projeto sem tropeçar em código velho.
O que mudou
Recomendações: o algoritmo agora pensa como aquele amigo que manja de cinema. Vai dos bem avaliados aos populares e, se precisar, desenterra umas pérolas escondidas.
Backend: o backend é em Node.js, hospedado na Vercel. Mais velocidade e menos travas.
Frontend: reorganizei tudo em módulos: interface, requisições, estado. O código ficou mais limpo e modular, sem acúmulo de gambiarra.
Novos moods: Misterioso, Aventureiro, Relax, Contemplativo e Inspirador.
Outras pequenas melhorias: Agora dá pra acessar um humor direto pela URL (/sombrio, por exemplo), e o site dá um alô diferente dependendo do horário — só pra deixar mais pessoal.
E o que vem por aí
Com essa base nova, algumas ideias que já estão no radar:
Mais moods (manda sua sugestão!)
Salvar recomendações que você gostou
Compartilhar recomendações por link direto
Pra fechar
O MoodFilme é um projeto pessoal. Não tem anúncio, não rastreia ninguém. Só existe pra te ajudar a achar um filme que combine com o seu momento.
Testou e curtiu? Fala comigo no @vitor.fcp. Leio tudo.
Descobri há um tempo o Always Free da Oracle e, olha… é difícil ignorar. Eles oferecem recursos de nuvem de graça e por tempo ilimitado.
São dois tipos de instâncias:
ARM (Ampere A1): você tem 4 OCPUs e 24 GB de RAM no total. Pode usar tudo em uma única VM ou dividir em até 4 menores.
AMD (E2.1.Micro): dá pra criar até 2 VMs AMD, cada uma com 1 OCPU e 1 GB de RAM.
Além disso, você ainda tem 200 GB de armazenamento disponíveis. Um detalhe importante: todos esses recursos só podem ser criados na home region que você escolhe quando cria sua conta. E essa escolha não dá pra mudar depois, então vale pensar bem antes de confirmar.
No meu caso, nunca consegui criar instâncias ARM, porque vivem esgotadas na região que escolhi. Mas tudo bem: meu foco sempre foi na AMD mesmo, e têm dado conta do recado. Já rodei uns projetinhos meus por lá, sisteminhas web, bot de zap, etc. Tudo funcionando 24/7, sem pagar um centavo.
O painel da Oracle é meio chatinho no começo, tem uma curva de aprendizado, mas nada que alguns tutoriais e tentativa-e-erro não resolvam. Depois que pega o jeito, vira uma baita opção pra manter serviços no ar de forma estável e gratuita.
Se você curte brincar com infra ou quer subir algo leve sem gastar nada, vale a pena testar.
“Sempre foi assim, não vai mudar” essa frase tem um quê de conformismo que me incomoda. Hoje, por acaso, estava pensando nisso e, coincidentemente, acabei encontrando um vídeo do Luíde (tá aí embaixo) em que ele fala justamente sobre por que se recusa a ser pessimista. Me identifiquei bastante com o que ele disse.
O pessimismo/cinismo parece ter dominado as redes sociais, e isso, entre outros fatores, fez meu interesse por Instagram e afins diminuir. Não que minha saída vá fazer diferença no mundo, mas ando preferindo focar mais na minha vida. Tentar estar presente. Lutar contra os devaneios que sempre aparecem.
Enfim, assiste ao vídeo. Vale a pena a reflexão. Além desse novo canal, o Luíde também tem um projeto mais antigo, um podcast chamado Rebobinado, onde já abordou vários temas parecidos com os que tem explorado agora.