Rafael Pereira — Ingeniero de Software Sénior

Trabajo en los puntos en los que los sistemas simples dejan de ser simples.

Estudios de caso, proyectos y textos técnicos sobre escala, fallos, legado y reglas de negocio. Cada pieza muestra la restricción, la decisión y hasta dónde llega la solución.

Método

La restricción viene antes del diagrama.

Empiezo por lo que ocurre cuando un mensaje falla.

La base de datos no puede cambiar. El legado no puede parar.

El camino feliz viene después.

La decisión registra la alternativa descartada y la condición que justificaría revisarla.

El código muestra qué se hizo; el case muestra por qué.

Prueba

Tres sistemas, tres restricciones

Infosistemas feb/2025 – may/2026

~98% reducción de fallos intermitentes en los flujos críticos

Infosistemas: contrato de fallo en la mensajería RabbitMQ

Fallos intermitentes entre microservicios sin contrato para retry, DLQ o duplicidad. Más consumidores solo desplazaban la sobrecarga.

Abrir el case

Contrato de falha na mensageria
Contrato de falha na mensageria Publicação confirmada segue para uma fila durável e um consumidor idempotente. Falhas temporárias retornam para retry com backoff; falhas permanentes seguem para a DLQ. Publicação confirmada Fila durável prefetch controlado Consumidor idempotente retry + backoff DLQ por fluxo duplicidade não repete efeito de negócio

Publicação confirmada, consumo com prefetch controlado, retry com backoff e DLQ por fluxo. Escalar só consumidores fica de fora do desenho.

Ver o caso

VBET oct/2023 – feb/2025

~7 min → <1 s comisiones, de la carga original a la caché caliente

VBET: analítica sobre un SQL Server que no podíamos cambiar

La base era de otro equipo. El dashboard necesitaba dejar de depender de un schema que no controlábamos.

Abrir el case

Pipeline de comissões
Pipeline de comissões Dados de um SQL Server externo passam por ETL para uma base PostgreSQL própria, depois por cache, e alimentam leituras REALTIME e CLOSED. SQL Server externo ETL PostgreSQL pré-cálculo Cache Leituras dashboard REALTIME tendência CLOSED pagamento ~7 min no pico, menos de 1 s com cache quente

Cada estágio corresponde a uma decisão incremental documentada no case. Números de outras histórias não entram neste desenho.

Ver o caso

Flapper sep/2021 – jun/2022

~25% menos tablas en la separación por dominios

Flapper: descubrir el dominio antes de separar el monolito

El producto no podía parar, y los autores originales ya no estaban. Antes de migrar, fue preciso descubrir qué fronteras aún revelaba la base.

Abrir el case

Descoberta de domínio antes da migração
Descoberta de domínio antes da migração O banco do monólito PHP revela fronteiras de domínio. Pessoas, autenticação e aeronaves saem gradualmente para contextos com persistência própria. Monólito PHP banco como fonte de descoberta Pessoas Autenticação Aeronaves Strangler: um domínio por vez, sem parar o produto

O banco legado revela fronteiras; pessoas, autenticação e aeronaves saem gradualmente para contextos com persistência própria.

Ver o caso

Artefactos

Proyectos seleccionados

Repositorio público

SMS Manager

Importar CSV no puede bloquear la API Nest. La campaña persiste y publica en la cola RabbitMQ; consumidores en TypeScript, Go o Rust graban el resultado en Mongo. La API no espera a la operadora.

Abrir el proyecto

Desacoplamento da campanha
Desacoplamento da campanha CSV entra na API Nest, que persiste em PostgreSQL e publica na fila RabbitMQ. Consumidores em TypeScript, Go ou Rust, no mesmo contrato, registram o resultado no MongoDB. A API não bloqueia no ritmo da operadora. CSV upload API Nest campanha Postgres persistência API → fila Fila RabbitMQ TS Go Rust mesmo contrato Mongo resultado API não espera a operadora

CSV na API Nest com persistência Postgres; publicação na fila; consumidores no mesmo contrato gravam no Mongo. A API não espera a operadora.

Experimento documentado

goc_mcp

Maestro (Codex/Cursor) delega vía MCP; daemon FIFO y workers OpenCode ejecutan con estado en SQLite. La orquestación funcionó, pero la medición no confirmó reducción de costo o tiempo.

Abrir el proyecto

Orquestração local via MCP
Orquestração local via MCP Maestro MCP delega tarefas a workers OpenCode via daemon FIFO, um worker por vez. Estado em SQLite. A hipótese de reduzir tempo e custo não foi confirmada nas medições. Maestro MCP / Codex · Cursor Daemon · FIFO 1 worker por vez Worker OpenCode Worker OpenCode Worker OpenCode SQLite hipótese tempo/custo não confirmada

Maestro delega; daemon FIFO coordena um worker OpenCode por vez; SQLite guarda estado. A hipótese de eficiência não se confirmou.

Producto propio, desktop

md2cv

Perfil y versiones inmutables quedan en el SQLite de la máquina. El agente supervisado solo propone cambios bajo schema; ATS y exportación en PDF/DOCX reutilizan el mismo grafo, sin backend SaaS dueño de los datos.

Abrir el proyecto

Grafo local e agente supervisionado
Grafo local e agente supervisionado Perfil e currículos no SQLite local; versões imutáveis; candidatura no mesmo contexto; agente supervisionado propõe sob schema e só grava com confirmação; auditoria ATS e export PDF/DOCX. Sem backend SaaS como dono dos dados. Grafo do perfil SQLite · WAL · máquina local Versões imutáveis Markdown · restauração Candidatura vaga · versão Agente supervisionado confirma antes de gravar ATS PDF / DOCX sem SaaS dono

Perfil e versões no SQLite; candidatura no mesmo contexto; agente só propõe sob schema; ATS e export reutilizam o grafo sem SaaS dono.

Ver todos los proyectos

Recorrido

Una trayectoria de sistemas, no de cargos

  1. 2025 a 2026

    Arquitectura

    Plataformas de alquiler y flotas. La prueba pública de esta etapa es la mensajería.

    Infosistemas

  2. 2023 a 2025

    Analytics sobre una base externa

    SQL Server de otro equipo. El dashboard tenía que funcionar sin depender de un schema que no controlábamos.

    VBET

  3. 2023

    Postventa sobre legado

    El core en PHP 5.7 sostenía la operación. La automatización liberó soporte sin reescribir el monolito.

    Maxmilhas

  4. 2022 a 2023

    Marketplace multi-tenant

    White-label para incorporar bancos sin fork por cliente.

    South System / QUIQ-Itaú

  5. 2021 a 2022

    Modernización incremental

    El monolito no tenía a sus autores originales. La migración empezó con lo que la base de datos todavía dejaba leer.

    Flapper

Práctica

Cómo avanza el trabajo

Cada etapa limita la siguiente. Sin esas restricciones, la arquitectura se vuelve gusto personal.

Cómo avanza el trabajo

01

Contexto

Quién sufre cuando esto se rompe, y en qué operación.

02

Restricción

Lo que no puede parar, cambiar o tratarse como capacidad extra.

03

Decisión

El camino elegido, con la alternativa descartada a la vista.

04

Evidencia

Qué se midió, en qué escenario, con qué autoría.

05

Límite

La condición que justificaría revisar la decisión.

Contacto

¿Tienes un sistema que dejó de ser simple?

Escríbeme directo por @imrafaeldev, sin formulario — para conversación profesional, empieza en LinkedIn.

Abrir la página de contacto