Sócio | Head de Infraestrutura & DevOpsPartner | Head of Infrastructure & DevOps
2015 — hojepresentEntrei na Hapolo quando a empresa era formada por duas pessoas — eu e meu sócio. Ao longo de 10 anos, ajudei a construí-la até se tornar uma empresa de médio porte de rastreamento veicular, e hoje sou responsável por toda a infraestrutura que a sustenta. I joined Hapolo when the company was two people — me and my business partner. Over 10 years I helped grow it into a mid-sized vehicle tracking company, and today I am responsible for all the infrastructure that supports it.
- Infraestrutura cloud: gestão de centenas de servidores Linux (DigitalOcean e Contabo) — load balancers, bancos de dados MySQL, workers de processamento e serviços de comunicação com rastreadores. Inclui a infraestrutura dedicada de clientes, administrada pela Hapolo. Cloud infrastructure: managing hundreds of Linux servers (DigitalOcean and Contabo) — load balancers, MySQL databases, processing workers and the services communicating with tracking devices. This includes the dedicated client infrastructure managed by Hapolo.
- Observabilidade: implantei do zero o monitoramento da empresa — Zabbix, Grafana e RabbitMQ — além de monitores próprios em Python com alertas via Slack (disco, filas, backups, atividades de conta cloud). Observability: I built the company's monitoring from scratch — Zabbix, Grafana and RabbitMQ — plus custom Python monitors with Slack alerts (disk, queues, backups, cloud account activity).
- Migração de stack em produção: conduzi a migração dos serviços críticos de Python para Go em dezenas de servidores, elevando a capacidade de ~800 para ~10.000 conexões simultâneas por servidor, com deploy em lote e rollback. Production stack migration: I led the move of critical services from Python to Go across dozens of servers, raising capacity from ~800 to ~10,000 concurrent connections per server, with batch deployment and rollback.
- Automação: dezenas de rotinas em Python, Bash e PowerShell — deploy, limpeza e restauração de logs, verificação de disco, relatórios diários automatizados. Automation: dozens of routines in Python, Bash and PowerShell — deployment, log cleanup and restoration, disk checks, automated daily reports.
- Gestão de custos: controle mensal de toda a infraestrutura cloud, identificação de gargalos e otimização de gastos. Cost management: monthly control of all cloud infrastructure, identifying bottlenecks and optimizing spend.
- Fornecedores e contratos de SLA: sou o ponto de contato técnico da empresa com a DigitalOcean e demais provedores internacionais — suporte, escalonamento de incidentes, negociação e a elaboração dos contratos de SLA que amparam as infraestruturas dedicadas de clientes. Toda essa comunicação é conduzida em inglês. Vendors and SLA contracts: I am the company's technical point of contact with DigitalOcean and other international providers — support, incident escalation, negotiation and drafting the SLA contracts covering clients' dedicated infrastructure. All of it conducted in English.
- Novas ferramentas para clientes: quando a plataforma não atende uma necessidade, a ferramenta nasce comigo — levantamento do que o cliente precisa de fato, desenho do fluxo e da interface pensando em quem vai operar aquilo todo dia, e a especificação entregue ao time de desenvolvimento. New client-facing tools: when the platform doesn't cover a need, the tool starts with me — finding out what the client actually needs, designing the flow and the interface around whoever will operate it every day, and handing the specification to the development team.
- Liderança: responsável por toda a operação de suporte e atendimento da empresa, com gestão direta de uma equipe de 5 pessoas — distribuição de tarefas, prazos e qualidade do atendimento. Implantei os processos internos da empresa do zero com Trello e Slack, com alertas e integrações automatizadas. Leadership: I own the entire support and customer service operation, directly managing a team of 5 — task assignment, deadlines and service quality. I built the company's internal processes from scratch with Trello and Slack, with automated alerts and integrations.
Um cliente reportou que o GPS ficava parado enquanto a comunicação dava sinal de vida. Investigando até o protocolo binário dos equipamentos, achei dois bugs reais: um de fuso horário (pacotes sem fix chegam com o ano decodificado como 2006, que tinha horário de verão, gravando a data 1 hora no passado) e um de parser lendo o nibble errado do byte de GPS. Nenhum dos dois era a causa da reclamação — conferi no banco e derrubei a minha própria hipótese: os aparelhos afetados tinham posição avançando normal, e a causa real era do lado do equipamento, que mandava só heartbeat. Entreguei dois relatórios técnicos ao time do worker e um laudo ao cliente explicando a diferença sem jargão. A client reported that GPS was frozen while communication showed signs of life. Digging down to the devices' binary protocol, I found two real bugs: a timezone one (packets without a fix arrive with the year decoded as 2006, which had daylight saving, storing the timestamp one hour in the past) and a parser reading the wrong nibble of the GPS byte. Neither was the cause of the complaint — I checked the database and disproved my own hypothesis: the affected devices had positions advancing normally, and the real cause was device-side, sending only heartbeats. I delivered two technical reports to the worker team and a written report to the client explaining the difference without jargon.
Quando um cliente pedia relatório de meses atrás, alguém subia um servidor a partir do snapshot de backup, esperava o banco levantar, copiava as tabelas e destruía tudo — na mão, em horas de atenção. Automatizei o ciclo inteiro, com o servidor vivendo só os minutos da cópia (cerca de US$ 0,60 por execução). O detalhe que só apareceu testando: a API de cópia retornava sucesso mesmo sem copiar nada, então toda execução passou a ser validada por contagem de linhas no destino. When a client asked for a report from months back, someone would spin up a server from the backup snapshot, wait for the database, copy the tables and destroy everything — by hand, over hours. I automated the whole cycle, with the server living only for the minutes of the copy (around US$ 0.60 per run). The detail that only showed up in testing: the copy API returned success even when it copied nothing, so every run is now validated by a row count on the destination.
Quatro contas de nuvem, a maior com mais de cem servidores, precisavam de conferência diária de atividades e backups — que na prática ninguém fazia. Automatizei com as contas em paralelo e relatório por email e Slack, destacando ações críticas como destruir, desligar ou reconstruir. A primeira versão levava 12 minutos paginando o histórico inteiro; parar a paginação ao sair da janela de 24 horas derrubou para 45 segundos. Four cloud accounts, the largest with over a hundred servers, needed a daily check of activity and backups — which in practice nobody did. I automated it with the accounts running in parallel and a report by email and Slack, highlighting critical actions like destroy, power off or rebuild. The first version took 12 minutes paginating the entire history; stopping pagination once outside the 24-hour window brought it down to 45 seconds.
Onde a operação chegou: o que era diagnóstico manual e reação depois da queda hoje é monitoramento próprio em cima de Zabbix e Grafana, com alerta que chega antes do cliente perceber — threshold, espera de confirmação e cooldown para o alerta não virar ruído. A operação roda dentro do SLA acordado com os clientes que dependem da infraestrutura dedicada. Where the operation stands today: what used to be manual diagnosis and reaction after an outage is now custom monitoring on top of Zabbix and Grafana, with alerts arriving before the client notices — threshold, confirmation delay and cooldown so alerts don't become noise. The operation runs within the SLA agreed with the clients who rely on dedicated infrastructure.