🌟 Artigo em Destaque
Sincronização Bidirecional entre Oracle e WordPress com API Intermediadora em NestJS
Jadiael Juvino
15 de dezembro de 2024
8 min de leitura
Oracle
WordPress
NestJS
BullMQ
BullBoard
API
Redis
Basic Auth
Sincronização de Dados
LearnDash
Implementação de sincronização de dados entre Oracle e WordPress com API intermediadora em NestJS, garantindo filas, triggers, segurança e zero falhas em produção.
Sincronização Bidirecional entre Oracle e WordPress com API Intermediadora
Um desafio recente foi manter uma sincronização de dados em dois sentidos entre um banco de dados Oracle (SENIOR) e uma plataforma LMS baseada em WordPress.Planejamento e Aprovação
O processo envolveu planejar toda a solução, apresentar o planejamento para aprovação e, em seguida, realizar a implementação completa.Durante esse trabalho, me especializei em fluxos de construção de plugins para WordPress, explorando em profundidade a manipulação de hooks de plugins.
Mapeamento das Informações
O primeiro passo foi mapear quais informações deveriam ser sincronizadas do banco Oracle para o WordPress e vice-versa.Em seguida, defini formas de implementar essa integração nos plugins e no próprio WordPress.
Oracle → WordPress
Para o fluxo do Oracle para o WordPress, a solução foi composta pelas seguintes etapas:- Criação de uma API Intermediadora desenvolvida em NestJS, com sistema de filas usando
BullMQ
eBullBoard
protegido porBasic Auth
. - Essa API intermediadora ficou responsável por orquestrar a comunicação bidirecional, evitando travamentos e garantindo alta performance.
- No Oracle, criei uma View específica com apenas os dados necessários para sincronização, reduzindo custos de processamento.
- Implementei triggers que, sempre que ocorria uma inserção, atualização ou exclusão, enviavam uma requisição para a API intermediadora.
ela recebe a requisição da trigger, retorna rapidamente uma resposta e, apenas depois, processa a requisição em segundo plano.
Isso evitava que a trigger fique presa aguardando a conclusão do processamento, reduzindo riscos e custos de performance no banco Oracle.
WordPress → Oracle
Para o fluxo do WordPress para o Oracle, o caminho foi o inverso:- Mapeei eventos dos plugins e do próprio WordPress (como estatísticas, progressos e dados de uso).
- Esses eventos enviavam informações para a API intermediadora.
- No Oracle, foram criados usuários com permissões limitadas, views dedicadas e procedures responsáveis por aceitar dados de atualização e inserção.
Tratamento de Falhas
Outro ponto importante foi o tratamento de falhas:- Falhas são registradas em memória e exibidas no
BullBoard
, sem serem sobrescritas por erros mais recentes. - Além disso, criei uma tabela dedicada no Oracle para salvar os registros de falha, permitindo investigar e corrigir fluxos de sincronização com base em evidências concretas.
Resultado em Produção
Após todo o fluxo implementado, alcançamos em produção:- 0 erros
- 0 necessidade de intervenção manual
Boas Práticas Adotadas
Além da parte técnica, gosto de pensar em cada projeto sob outros pontos de vista:- Como será mantido no futuro
- Como poderá ser escalado
- Como será utilizado por outros times
Isso facilita a evolução futura e reduz a curva de aprendizado para outras equipes que precisem atuar no mesmo código.
J
Jadiael Juvino
Engenheiro de Software especializado em desenvolvimento backend e frontend, com experiência em C#, JavaScript, NestJS, PHP e bancos de dados. Apaixonado por compartilhar conhecimento e criar soluções inovadoras.