TG

Arquitetura serverless do iTOP, plano de migração para Postgres e um post sobre RPC

Dia de arquitetura: VPS travando levou a comparar Vercel, Neon e AWS, desenhar a migração do iTOP para Postgres com tRPC, mais SEO/GEO no conteúdo e um post sobre RPC, REST e GraphQL.

Dia espalhado por muitos workspaces, mas com um centro de gravidade claro: arquitetura. Um build travando em produção virou um mergulho longo em custo, escala e infraestrutura, e desse mergulho saíram um plano de migração e até um post de blog.

O build travando que virou decisão de arquitetura

O frontend Next.js do iTOP estava travando e se cancelando sozinho no build em produção, num Dokploy sobre uma VPS de 8 GB. O free -h contou a história: 113 MB livres, RAM no talo rodando dois Mongos, dois Next e os serviços do Dokploy. Diagnostiquei o gargalo de memória e, em vez de remendar, decidi tratar como dívida técnica a pagar: levar app e banco para a nuvem, de preferência serverless.

Aí abriu o leque. Comparei Atlas M10 contra Supabase Pro, depois Vercel + Neon, e por fim um equivalente AWS, pesando não só preço mas mão de obra. Entendi as CU-hours do Neon, o billing serverless, e modelei cenários de 500 a 200 mil usuários. No caminho destrinchei conceitos que sempre uso de ouvido: load balancer, API gateway, CDN e cache, egress. A pergunta que mais rendeu foi a do pico: 10 mil pessoas entrando ao mesmo tempo para comprar 200 ingressos. Daí estudei waiting room (o do Cloudflare e a alternativa de uma fila própria na borda com Upstash Redis) e o decremento atômico de ingresso para evitar overselling, que no Postgres vira um updateMany condicional dentro de uma transação. Salvei tudo em docs.

Terraform e o plano de migração para Postgres

Em paralelo, desenhei o deploy na AWS com Terraform (ECS Fargate + RDS PostgreSQL). Como não sei quase nada de Terraform, pedi um TERRAFORM_LEARN.md que explica arquivo por arquivo a partir dos requisitos reais do produto, e comparei Aurora com DocumentDB. No fim, fechei um plano de migração do iTOP de Mongo para Postgres no Neon, mirando o melhor do Next.js 16, React 19 e tRPC. Plano salvo, sem pressa de executar.

Conteúdo, SEO e GEO

Outro fio do dia, presente nos dois sites. No iTOP: blog com keywords, negrito estratégico e GEO (FAQ com JSON-LD, sitemap e robots), a central de ajuda interativa em /docs com links diretos, e os termos de pagamento via ASAAS (subconta, split, KYC, diferença de PJ e PF, deixando claro que não fazemos custódia do dinheiro). Também ficou explícito que dá pra comprar ingresso sem criar conta, removi referências a um brinde que não existe mais e abri uma issue para um tour guiado no futuro. No site pessoal, o mesmo fio: passei a emitir o meta de keywords por página e assei as regras de GEO dentro da skill de blog, pra todo post futuro já nascer otimizado.

Um post sobre RPC, REST e GraphQL

A conversa de arquitetura do iTOP passou bastante tempo no tRPC, e isso virou material. Escrevi um post bilíngue tratando RPC, REST e GraphQL como a mesma chamada remota vista de ângulos diferentes, encostando nas camadas do modelo OSI e num app fullstack em TypeScript. Saiu também um post sobre performance no Next.js, partindo do caso concreto do export const dynamic = "force-dynamic" que foi parar no código porque o build quebrava no Docker com Dokploy e Mongo.

Um projeto novo

Comecei a entender um projeto novo na área de contabilidade. Como nem eu sabia a dor que ele resolve, escrevi um PRD pra clarear o escopo (BPO, controladoria) e comparei com o que ERPs e ferramentas de mercado já cobrem ou deixam de cobrir, além de pensar a parte técnica e as integrações.

Dia de fundação. Quase nada apareceu na tela, mas é o tipo de trabalho que sustenta tudo que vai aparecer.