O blog da AWS

Migrando do CockroachDB para Amazon Aurora PostgreSQL: A jornada da Aarin para maior escalabilidade e eficiência operacional

Por Jean Philip de Rogatis, CTO, Aarin e Luis Tiani, Sr. Solutions Architect, AWS.

Introdução

A modernização de bancos de dados é uma jornada crucial para empresas que buscam maior escalabilidade e eficiência operacional. Neste blogpost, compartilharemos como a Aarin migrou sua infraestrutura de banco de dados do CockroachDB para o Amazon Aurora PostgreSQL, utilizando AWS Database Migration Service (AWS DMS) e implementando uma solução customizada de sincronização contínua.

A Aarin

A Aarin é uma empresa brasileira de tecnologia financeira, integrante do Grupo Bradesco, focada em democratizar o acesso a soluções financeiras para empresas de todos os portes. Fundada em 2020 e com sede em São Paulo, a Aarin atua em serviços de finanças incorporadas (embedded finance), transações via Pix e Banking as a Service (BaaS), permitindo que empresas ofereçam serviços financeiros aos seus clientes sem depender dos bancos tradicionais.

Contexto e Desafios

A Aarin inicialmente utilizava CockroachDB como sua solução de banco de dados principal, aproveitando seus benefícios de distribuição e alta disponibilidade. No entanto, com o crescimento da empresa, alguns desafios começaram a emergir:

  • Complexidade Operacional: A implementação do CockroachDB em um cluster Kubernetes enfrentava complexidades operacionais. O principal gargalo estava nos procedimentos de upgrade, que demandavam janelas de downtime incompatíveis com os SLAs acordados com as áreas de negócio da Aarin. Adicionalmente, a documentação incompleta da configuração original e a perda do conhecimento histórico da implementação amplificavam os riscos de cada operação de manutenção.
  • Limitações de Integração: Identificamos a necessidade de melhor integração com serviços nativos AWS o que permitiria maior aproveitamento dos recursos disponíveis na nuvem e otimização da infraestrutura atual.
  • Otimização de Custos: Necessidade de otimização dos custos operacionais, visando um equilíbrio entre performance e investimento.

Arquitetura da Solução

Nossa solução de migração foi estruturada em três componentes principais:

  1. AWS DMS para Full Load
    • Configuração de endpoints de origem (CockroachDB) e destino (Amazon Aurora PostgreSQL)
    • Mapeamento de schema e regras de transformação
    • Validação de integridade dos dados migrados
  2. Sistema de Sincronização Customizado
    • Queue-based architecture utilizando Amazon SQS
    • Microserviço de processamento de eventos
    • Sistema de validação e reconciliação de dados
  3. Monitoramento e Validação
    • Amazon CloudWatch Metrics para monitoramento em tempo real
    • Logs estruturados para auditoria
    • Scripts de validação para garantia de consistência

Iniciamos a implementação com o full load via AWS DMS, migrando a estrutura e dados principais do CockroachDB para o Amazon Aurora PostgreSQL. Para manter a sincronização contínua, desenvolvemos um serviço que monitora uma fila Amazon SQS, onde são registradas todas as alterações de dados pós-full load. Este serviço processa as mensagens da fila e aplica as mudanças em ambos os bancos simultaneamente, mantendo-os consistentes.

O processo é apoiado por um sistema de validação em tempo real e logs detalhados, permitindo monitoramento contínuo da performance e rápida identificação de possíveis inconsistências. Esta abordagem garantiu uma migração sem interrupções, mantendo a integridade dos dados durante toda a transição.

Implementação Detalhada

Preparação e Planejamento

Antes de iniciar a migração, estabelecemos os seguintes componentes críticos:

  • Ambiente de Staging
    • Réplica do ambiente de produção para testes
      • Mascaramento dos dados para ambinete não produtivo
    • Validação de compatibilidade de schemas
    • Testes de performance e latência

Estratégia de Migração

{

  "source": "CockroachDB",

  "target": "Aurora PostgreSQL",

  "migration-type": "full-load",

  "parallel-load": true,

  "validation-mode": "enabled"

}

Configuração do AWS DMS

Configuramos o AWS DMS com as seguintes especificações:

{

  "instance-class": "dms.r5.2xlarge",

  "engine-version": "3.4.7",

  "replication-task-settings": {

    "full-load-mode": true,

    "validation": true,

    "logging-level": "DETAILED"

  }

}

Solução de Sincronização Customizada

Para garantir a sincronização bidirecional, desenvolvemos um sistema baseado em eventos:

# Exemplo simplificado do handler de eventos

def process_database_change(event):
    try:
        # Processa mensagem do SQS
        message = parse_sqs_message(event)
        
        # Aplica alterações em ambos os bancos
        update_aurora_postgresql(message)
        update_cockroachdb(message)
        
        # Valida sincronização
        validate_consistency(message)
    except Exception as e:
        handle_error(e)

Monitoramento e Métricas

Implementamos diversos pontos de monitoramento:

  • Alarmes e Notificações
    • Atrasos de replicação
    • Falhas de sincronização
    • Limites de performance

Resultados e Benefícios

Métricas pós migração:

  • Redução de custos em aproximadamente 40%
  • Processamento de pico medido: 1.400 TPS
  • Volume diário de transações: 3 Milhões (4x maior que o anterior)
  • Alta estabilidade mesmo com cargas elevadas

A migração para Amazon Aurora PostgreSQL trouxe melhorias significativas:

  • Desempenho Melhorado: O Amazon Aurora proporcionou uma redução de latência e um aumento na velocidade das operações de leitura e gravação.
    • Otimização de queries complexas;
    • Menor latência em operações de I/O (input/output);
  • Custos Otimizados: ao utilizar um serviço gerenciado, foi possível reduzir os custos operacionais, redistribuindo recursos para áreas de inovação.
  • Integração Nativa com AWS: acesso direto a outros serviços AWS, como Amazon CloudWatch para monitoramento e AWS Lambda para automação.
    • Redução na complexidade de gerenciamento;
    • Integração nativa entre os serviços AWS
    • Backup e recovery automatizados

Melhores Práticas e Lições Aprendidas

  1. Planejamento Detalhado
    • Documentação completa do schema
    • Testes exaustivos em ambiente de staging
    • Plano de rollback bem definido
  2. Monitoramento Proativo
    • Métricas em tempo real
    • Logs detalhados
    • Alertas preventivos
  3. Validação Contínua
    • Checksums de dados
    • Comparação de registros
    • Verificação de integridade

A estratégia de migração fundamentou-se nesses três elementos críticos. A fase preparatória envolveu o mapeamento estrutural completo do banco de dados, simulações extensivas em ambiente controlado e definição de procedimentos de contingência. O monitoramento da operação foi estabelecido através de indicadores instantâneos de performance, rastreamento granular de operações e mecanismos de alerta preventivo. A integridade do processo foi assegurada por meio de rotinas automatizadas de verificação, análise comparativa dos dados e protocolos de consistência, garantindo assim a precisão e segurança de toda a transição.

Conclusão

A migração do CockroachDB para Amazon Aurora PostgreSQL representou um marco importante para a Aarin. A combinação de AWS DMS com uma solução customizada de sincronização permitiu uma transição suave e controlada, resultando em uma infraestrutura mais robusta e gerenciável, trazendo eficiência operacional e reduzindo custos.

Recursos Adicionais

Documentação do Amazon Aurora

Guia do usário AWS DMS

Melhores Práticas do PostgreSQL


Sobre os Autores

Jean Philip de Rogatis é CTO na Aarin, liderando todo o time de Desenvolvimento e já foi arquiteto de soluções sênior na AWS. Trabalha na Indústria Financeira, Entusiasta de novas tecnologias, construiu mais de 10 sistemas: de soluções de big data a portais de vendas, entregando um crescimento YoY de três dígitos e liderando uma equipe de 50+ pessoas. Ajuda empresas a transformar seus negócios, adotando tecnologias baseadas em nuvem para encantar seus clientes, parceiros e funcionários.
Luis Tiani é Arquiteto de Soluções Sênior na Amazon Web Services (AWS). Especializa-se em temas de Dados e Analytics, auxiliou diversos clientes nos segmentos de Serviços Financeiros, DNB, PME e Enterprise em suas jornadas de adoção de Serviços de Analytics AWS. Como Arquiteto de Soluções, trabalha com clientes do setor financeiro no desenvolvimento e implementação de soluções de BigData/Data Lake, Modernização de Aplicações, Migrações para Nuvem e iniciativas de IA/ML.

Sobre os Revisores

Leonardo Azize é Arquiteto de Soluções sênior na AWS, atua com clientes da indústria de FSI, tem trabalhado com desenvolvimento e infraestrutura de aplicações web em multinacionais. Quando não está trabalhando, Leonardo gosta de passar o tempo com a família e brincar com a filha.
Rodolfo D’Alessio é Customer Success Manager na Amazon Web Services (AWS), onde atua há mais de 6 anos. Atua no setor financeiro, conduzindo estratégias de adoção de serviços AWS e gerenciando o relacionamento com clientes estratégicos.