Migração de Busca e Pipeline ETL: MeiliSearch para OpenSearch
Redesenho arquitetural da esteira de dados (ETL) e migração de motor de busca para suportar volumetria massiva (>2.7 milhões de documentos), sanando de vez os gargalos críticos de memória (V8 OOM).
Contexto
Escalar um produto exige coragem para reavaliar a sua base. Com o ritmo de crescimento da plataforma, passamos a lidar com uma volumetria massiva de leitura e escrita (mais de 2.7 milhões de documentos complexos e gigabytes de índices).
A infraestrutura anterior, operada sobre MeiliSearch, começou a cobrar um preço alto na escala transacional: lentidão progressiva em paginações pesadas e travamentos críticos do servidor Node.js por estouro dos limites na pilha de agrupamento — o temido V8 Heap Out of Memory. Precisávamos de uma solução não apenas para "trocar o banco", mas para redesenhar toda a esteira de dados (ETL) com garantias absolutas de resiliência e nível Enterprise.
Estratégia de Arquitetura (Engine & ETL)
Deslocamos a complexidade computacional para a camada conectiva do RDS usando `JSONB_AGG(DISTINCT to_jsonb(table.*))`. O banco serializa o JSON nativamente; o Node.js vira proxy ultrarrápido.
Eliminamos o nocivo sistema tradicional de `OFFSET/LIMIT`. Usando ponteiros baseados em cursores lógicos (last_id iterativo), extraímos lotes estelares de 50.000 registros na latência unitária sem perda de ciclo.
Fragmentamos a página em batches RESTful de 500 docs. Saturações ou Rate Limits da AWS (HTTP 429) acionam o Exponential Backoff preservando ativamente o cluster contra instabilidades catabólicas.
Desafio técnico: Trafegar milhares de entidades filhas separadas (Disciplinas, Assuntos) e montar a árvore do objeto dentro do Node.js causava alta latência e estouros iminentes da memória RAM.
Resultados e Pilares de Infraestrutura
Além de extirpar o gargalo e consolidar uma performance de varredura impiedosa durante as sincronizações em base viva, formatamos balizas arquitetônicas cruciais para a segurança em Cloud.
Zero-Dependency
Extinguimos credentials hardcodadas. Usando AWS AssumeRole e assinaturas nativas dinâmicas (Princípio do Menor Privilégio) validamos toda a conexão via Serverless/IAM.
Custo Controlado
Exploramos agilidade temporal do OpenSearch Serverless (AOSS) nos ambientes de validação (Homologação) e cravamos Domínios Gerenciados na base Produção garantindo as previsões atuariais cloud.
Elastic Mapping
Profundidades M:N estritas em propriedades 'nested', garantindo a acurácia granular. E impedimos bloqueios repassando a gestão síncrona do `refresh_interval` unicamente pela AWS.
Observabilidade Nativa
Módulos críticos com alta cadência precisam ter defesas analíticas para monitorar saúde em tempo real e não depender exclusivamente das visões cegas de dashboard.
Foi desenvolvido um Analytics Logger anexado organicamente ao worker do indexador. Na intersecção ou término do pipeline as seguintes telemetrias (KPIs) vitais são manifestadas na stdout:
- Duração Total da Trilha ETL.
- Throughput Processado vs Lotes Entregues na Bulk API.
- Auditoria Explícita de Erros ou Limitações (Throttling Interceptados).
Esse contrato consolidado constrói a segurança base para as futuras evoluções de índices transicionais (Blue / Green deployments). Construir software que escala de verdade, muitas vezes, é sobre orquestrar as difíceis e certeiras escolhas dos bastidores matemáticos! 🛠️☁️