sh4.tech
Luciano Serra
Luciano Serra Founder-engineer · cofundador e CTO, construiu do zero uma rede de 15.000 telas, 2015–2024 · São Paulo, remoto Email LinkedIn Currículo (PDF)

Sistemas que aguentam quando o negócio cresce.

Vinte anos entregando software. Cofundei uma empresa de mídia digital out-of-home no Brasil e construí a tecnologia dela do zero: da primeira tela a 15.000, 200 milhões de eventos de proof-of-play por dia, 300 bilhões de linhas em ClickHouse próprio. Meus sócios captaram o dinheiro e cuidaram do comercial, e eu construí e cuidei da tecnologia por dez anos.

Desenho sistemas de produção do zero e assumo os que já estão rodando. Os dois precisam aguentar quando o negócio cresce.

agora ▸ construindo do zero uma plataforma de desempenho para atletas profissionais, para uma empresa de ciência do esporte em Londres. Python, FastAPI, Next.js; mais de 300.000 pontos de dados puxados de um portal de fornecedor sem API, e o motor de insights com IA vem a seguir.

Ordens de grandeza, de produção log₁₀ de uma contagem · 10³ a 10¹²
  1. 15.000telas em campo
  2. 5.392.734dias-máquina em 2026
  3. 200 mieventos de proof-of-play por dia
  4. 100 bi+linhas na maior tabela
  5. 300 bi+linhas armazenadas

Cinco coisas diferentes contadas no mesmo eixo. O eixo só diz quantas; cada marca diz o que conta.

Como eu trabalho, do zero ou do que já roda

Medir. Construir ou consertar. Depois crescer o negócio em cima.

Nessa ordem, porque cada etapa entrega os números da seguinte. A mesma ordem para um produto que precisa existir até uma data e para um que já roda e precisa parar de quebrar.

  1. Medir

    Primeiro acho o número em que o negócio precisa confiar: contagem na origem, contagem no destino e a diferença entre as duas. Se ainda não existe nada, a primeira versão é desenhada em volta desse número. Leva alguns dias para chegar nele, e normalmente a conversa já muda ali.

  2. Construir, ou estabilizar

    Do zero: o menor sistema que produz esse número certo, com o caminho para escalar já desenhado, porque reescrever sob carga é a versão cara. Já rodando: fazer parar de quebrar. Duplicatas, timeouts que escondem um ao outro, jobs vivos só porque o deploy reinicia. A mesma entrada dá a mesma saída todo dia, e qualquer um consegue conferir.

  3. Crescer

    Depois o negócio cresce em cima: mais telas, mais clientes, mais linhas, sem reescrever. Chave de ordenação antes de codec, retenção por tipo de dado, lotes em vez de protocolo tagarela. Cada decisão sai dos números da etapa um, para poder ser conferida contra eles depois.

Fez rápido com IA? Ótimo. A IA te leva até a demo. Eu levo até a produção.

Luciano Serra apoiado numa cadeira, perto da janela de um escritório
São Paulo · UTC−3
Artigos

Respostas para a pergunta que você buscou, com os números junto.

Dica1 a 3 min Nota3 a 6 min Deep dive8 min ou mais
Todos os artigos, por problema →
Casos

Um construído do zero. Dois assumidos rodando. Os três medidos.

Sistemas em produção, com faturamento que depende de eles estarem certos. Nomes de clientes e parceiros ficam de fora de propósito; os números são os que medimos.

Todos os casos →

Construído do zero

300B+linhas

327,43 bilhões de linhas em 2,08 TiB, a maior tabela com 100,78 bilhões · 2026-09-03

A plataforma de proof-of-play por trás de 15.000 telas

Desenhado
Uma linha por exibição, como prova de faturamento, vinda de telas que ficam horas sem rede. Playlogs em cache no aparelho, enviados em lotes para um servidor de ingestão, depois Kafka entrando em ClickHouse próprio. MQTT só para presença e telemetria.
Conforme cresceu
Dois bilhões de linhas no MySQL deixaram de ser razoáveis, e o armazenamento foi para ClickHouse em bare metal. Chave de ordenação escolhida pelas consultas primeiro, depois um par de codecs por perfil de coluna, testado em cerca de sessenta variações com a consulta mais pesada no loop.
Rodando
200 milhões de linhas por dia durante anos. 5,5x no total, 269,6x no timestamp da chave, 4,37 bytes por linha. A frota foi da primeira tela a 15.000 com o mesmo desenho.

clickhousekafkaedge buffering

Assumido rodando

460.691

dias-máquina validados contra a origem, 18 diferenças · out/2026

Conciliar o que foi vendido com o que foi ao ar

Como estava
Três motores de ocupação no código, cada um com sua ideia de dia-máquina. O comercial queria uma tela; o número por trás dela não era confiável.
O que mudou
Unifiquei os motores antes de construir qualquer coisa visível. A tela lê um retrato pré-calculado e aponta divergências entre vendido e veiculado. Um mês inteiro foi validado linha a linha contra a origem.
O que segurou
5.392.734 dias-máquina em 2026, financeiro batendo 100%, e o diretor comercial comparou a uma cirurgia de catarata e fez disso a rotina diária do time. As decisões comerciais agora começam nessa tela.

conciliaçãosnapshotauditoria

Assumido rodando

−67%

mensagens de telemetria por dia depois da virada · medido no tópico, 2026

Mover a presença dos aparelhos para MQTT sem perder a frota

Como estava
15.000 telas em elevadores e shoppings se anunciando por polling HTTP. Perder contato com uma tela em campo era justamente o que não podia acontecer.
O que mudou
Quatro meses de teste e rollout controlado. Eu dei a direção e revisei cada passo; um colega fez a maior parte do hands-on. O proof-of-play manteve o próprio caminho: cache no aparelho, upload em lotes, depois Kafka entrando no ClickHouse.
O que segurou
O volume de telemetria no Kafka caiu dois terços com a mesma frota, e o caminho do faturamento ficou exatamente como estava.

mqttfrotarollout

Sobre

Cofundador, engenheiro, operador. Eu construí a tecnologia; meus sócios captaram o dinheiro e cuidaram do comercial.

Cofundei uma empresa de mídia digital out-of-home no Brasil e construí a tecnologia dela do zero, da primeira tela a uma frota de 15.000. Construir a tecnologia e, ao mesmo tempo, captar capital e tocar o comercial é mais do que o dia de uma pessoa, então dividimos o trabalho: eu construí e cuidei da tecnologia por dez anos, meus sócios cuidaram de capital e vendas. Sempre estive perto do negócio mesmo assim; a tela de ocupação dos casos acima é onde o time comercial começa a manhã.

Hoje ainda lidero projetos de tecnologia por lá e estou construindo do zero uma plataforma de desempenho para atletas profissionais, para uma empresa de ciência do esporte em Londres: Python e FastAPI, Next.js, mais de 300.000 pontos de dados puxados de um portal de fornecedor sem API; o motor de insights com IA é a próxima parte.

Cresci no paddock do automobilismo brasileiro, onde meu pai é uma lenda. Meu hábito de medir tudo vem de lá, e também o respeito por coisa que não pode falhar no dia da corrida. Também treino jiu-jitsu.

sh4 não significa nada. É curto e fácil de lembrar, só isso.

A versão longa →

  • 15.000telas em campo, elevadores e shoppingstamanho da frota na data da medição, arredondado
  • 200Meventos de proof-of-play por dia, Kafka entrando no ClickHouse~196,7M linhas/dia, soma das quatro tabelas de log, 2026-09-05
  • 300B+linhas guardadas, a maior tabela passou de 100 bilhões327,43 bi de linhas em 2,08 TiB, 2026-09-03

Crescendo mais rápido que os seus sistemas?

Vamos conversar → LinkedIn

Isso costuma começar de dois jeitos. Um negócio com receita que precisa crescer sem quebrar. Ou um produto que funciona na demo e quebra em produção. Me escreva qual é o seu. Respondo com perguntas, depois com um plano.