O problema
O TopSec existe para agregar, sincronizar e visualizar dados em tempo real sem depender de infraestruturas gigantes nem stacks pesados demais para o produto. O briefing era simples de dizer e difícil de entregar: manter os dados vivos, rápidos e consistentes enquanto vários serviços conversam ao mesmo tempo.
A decisão mais dura
Desenhar uma linha clara entre o que vive no backend .NET 8 e o que se resolve a partir do Next.js. Um caso subtil tornou a linha óbvia: as rotas /api mais o middleware next-intl estavam a produzir redirects 307 para /es/api/*. Tecnicamente válido, na prática partido. Endpoints em tempo real e de stats falhavam em silêncio sob certos locales.
O patch que ninguém te pede para escrever é o que justifica o preço do engenheiro: em vez de andar a corrigir regras de redirect uma a uma, reescrevi o matcher do middleware para excluir /api por completo. Mudança visualmente mínima, arquitetonicamente enorme.
Otimizar cedo demais é mau. Ignorar performance desde o início é pior.
Princípio de trabalho
A outra decisão foi manter o PostgreSQL como única fonte de verdade. Para este produto, consistência e capacidade de fazer queries complexas valiam mais do que qualquer ganho de velocidade que se pudesse arrancar a um NoSQL. Aborrecido está bem quando aborrecido está correto.
O que parti
A produção caiu uma vez porque assumi que uma imagem Docker tinha sido genuinamente reconstruída. O código «novo» continuava a comportar-se como o velho. O verdadeiro culpado: npm ci falhava em silêncio porque faltava o package-lock, deixando a build inconsistente. Perdi horas a depurar lógica de aplicação para um problema de pipeline.
Lição
Desconfia de todos os deploys até teres verificado, com os teus próprios olhos, qual o artefacto que está mesmo a correr. SHA da imagem, hash do contentor, log do commit de build ao arranque. O minuto mais barato que vais gastar.
Resultado
- Arquitetura multi-serviço estável em VPS: backend, frontend, Redis, PostgreSQL, nginx, tudo coordenado.
- Grande queda de erros de routing e tempo real depois da reescrita do middleware.
- Tempos de resposta melhorados com caching bem colocado e separação limpa de responsabilidades.
- Arquitetura pronta para crescer novos módulos sem reescrever o núcleo.
- Superfície pública: mkir.es. Walkthroughs técnicos mais profundos disponíveis sob pedido.