O que é o Amazon Aurora PostgreSQL

O Amazon Aurora PostgreSQL é um banco de dados relacional gerenciado pela AWS, totalmente compatível com o PostgreSQL padrão. A diferença fundamental em relação ao RDS PostgreSQL convencional está na arquitetura: o Aurora foi projetado como um serviço nativo de nuvem, com armazenamento distribuído e replicação integrada desde o início.

Na prática, isso significa que ele não é simplesmente um PostgreSQL rodando em uma instância EC2 gerenciada. A AWS redesenhou a camada de armazenamento para tirar proveito da infraestrutura distribuída, o que resulta em até 3x mais throughput que uma instalação PostgreSQL padrão em hardware equivalente.

O Aurora aceita o mesmo driver, as mesmas extensões e os mesmos comandos SQL que você já usa com PostgreSQL. A migração de código é, na maioria dos casos, transparente. A diferença está em como os dados são armazenados, replicados e recuperados.


Arquitetura Interna do Aurora

Separação de computação e armazenamento

No RDS PostgreSQL tradicional, computação e armazenamento estão acoplados na mesma instância. O Aurora separa essas duas camadas: as instâncias de banco processam queries, enquanto o armazenamento vive em um cluster distribuído independente.

Essa separação traz consequências importantes:

  • Escalar leitura não exige duplicar armazenamento. Réplicas de leitura compartilham o mesmo volume de dados.
  • O armazenamento cresce automaticamente de 10 GiB até 128 TiB, sem necessidade de provisionar disco manualmente.
  • Failover é mais rápido porque a nova instância não precisa reconstruir dados locais.

Armazenamento distribuído e tolerância a falhas

O Aurora mantém 6 cópias dos dados distribuídas em 3 Availability Zones. Esse modelo tolera:

  • Perda de até 2 cópias sem impacto na capacidade de escrita
  • Perda de até 3 cópias sem impacto na capacidade de leitura

Cada operação de escrita é confirmada quando 4 das 6 cópias respondem (quorum de escrita). Para leitura, bastam 3 cópias. Isso elimina a necessidade de configurações complexas de replicação síncrona que seriam necessárias para atingir nível similar de durabilidade no RDS.

Log-Based Storage

Uma diferença arquitetural significativa: o Aurora envia apenas os registros WAL (Write-Ahead Log) para a camada de armazenamento. As páginas de dados são materializadas diretamente no storage distribuído, eliminando checkpoints tradicionais.

No PostgreSQL padrão, checkpoints são operações pesadas que pausam a escrita para sincronizar páginas sujas do buffer pool com o disco. Sem essa necessidade, o Aurora consegue manter throughput mais estável, especialmente sob carga intensa de escrita.

O resultado direto: recuperações de crash são quase instantâneas e o lag de replicação entre a instância primária e as réplicas de leitura fica tipicamente abaixo de 100ms, já que as réplicas consomem diretamente do mesmo volume de armazenamento. Todas as transações mantêm propriedades ACID completas.


Comparação: Aurora PostgreSQL vs RDS PostgreSQL

AspectoAurora PostgreSQLRDS PostgreSQL
ArmazenamentoDistribuído, 6 cópias em 3 AZs, até 128 TiBEBS por instância, até 64 TiB
ReplicaçãoMesmo volume, lag < 100msBaseada em WAL, lag de segundos a minutos
FailoverMulti-AZ nativo, ~30 segundosMulti-AZ opcional, 1-2 minutos
Réplicas de leituraAté 15 réplicasAté 5 réplicas
PerformanceSem checkpoints locais, até 3x mais throughputPostgreSQL padrão, dependente de tuning
Global DatabaseSuporte nativo, replicação cross-regionNão disponível
BackupsContínuos e incrementais no S3Snapshots diários
Custo base~20% mais caro (instância + I/O)Mais econômico para cargas previsíveis

O ponto central da comparação não é que o Aurora é universalmente superior. É que ele resolve problemas específicos — alta disponibilidade, replicação de leitura massiva, failover rápido — que no RDS exigiriam configuração manual significativa e ainda assim não atingiriam o mesmo nível de confiabilidade.


Aurora Serverless v2

O Aurora Serverless v2 elimina a necessidade de escolher e gerenciar classes de instâncias. O banco escala automaticamente a capacidade de computação com base na demanda real.

Como funciona

A unidade de medida é o ACU (Aurora Capacity Unit). Cada ACU equivale a aproximadamente 2 GiB de RAM com CPU proporcional. O cluster escala continuamente entre os limites configurados:

  • Mínimo: 0.5 ACU
  • Máximo: 128 ACUs

A escala acontece de forma granular, em incrementos de 0.5 ACU, com ajustes em sub-segundos e sem interrupção de conexões ou queries em andamento.

Pricing

A cobrança é por ACU-hora consumida. Na região de São Paulo (sa-east-1), o custo fica em torno de $0.16 a $0.18 por ACU-hora.

Para referência:

CenárioACUs estimadosCusto mensal aproximado
Aplicação leve, horário comercial2-4 ACUs (8h/dia)~$80-150
API com picos noturnos4-16 ACUs (variável)~$300-700
Workload constante e pesado16-32 ACUs (24/7)~$1.900-4.200

O Serverless v2 é particularmente vantajoso para cargas imprevisíveis. Se o banco fica ocioso à noite, ele reduz para o mínimo configurado. Se um pico de tráfego chega às 3h da manhã, ele escala em segundos sem intervenção manual.

Serverless v2 vs instâncias provisionadas

Para workloads com carga constante e previsível, instâncias provisionadas ainda são mais econômicas. O Serverless v2 compensa quando a variabilidade da carga é alta o suficiente para justificar pagar um prêmio por ACU em troca de não manter capacidade ociosa.


Escalabilidade

Escalabilidade vertical

Como no RDS, você pode alterar a classe da instância (db.r6g.large, db.r6g.xlarge, etc.) para aumentar CPU e memória. Essa operação causa um breve downtime, geralmente de poucos minutos.

Escalabilidade horizontal

O Aurora suporta até 15 réplicas de leitura no mesmo cluster. Todas compartilham o mesmo volume de armazenamento, então adicionar uma réplica não duplica os dados.

O Aurora Auto Scaling ajusta automaticamente o número de réplicas de leitura com base em métricas como uso de CPU ou número de conexões. Você define a capacidade mínima e máxima, e o Aurora cria ou remove réplicas conforme a demanda.

aws application-autoscaling register-scalable-target \
  --service-namespace rds \
  --resource-id cluster:meu-cluster-aurora \
  --scalable-dimension rds:cluster:ReadReplicaCount \
  --min-capacity 1 \
  --max-capacity 8

Aurora Global Database

Para aplicações com usuários em múltiplas regiões, o Aurora Global Database replica os dados entre regiões AWS com latência inferior a 1 segundo. A região primária processa escritas, enquanto regiões secundárias servem leituras locais com baixa latência.

Em caso de desastre regional, a promoção de uma região secundária a primária leva menos de 1 minuto — sem necessidade de restaurar backups.


Quando Migrar para Aurora

Escolha Aurora quando

  • Alta disponibilidade é crítica: failover em ~30 segundos e replicação com lag mínimo são requisitos de negócio, não apenas desejados.
  • Leitura pesada: a aplicação tem muito mais leituras que escritas e precisa de mais de 5 réplicas de leitura.
  • Cargas variáveis: o tráfego oscila significativamente (Serverless v2) ou a base de dados cresce rapidamente (autoexpansão de armazenamento).
  • Multi-região: usuários em diferentes regiões precisam de leituras com baixa latência (Global Database).

RDS PostgreSQL é suficiente quando

  • Workload pequeno e previsível: uma aplicação com poucos usuários e carga constante não se beneficia da arquitetura distribuída do Aurora.
  • Orçamento restrito: o RDS é 10-20% mais barato para a mesma classe de instância. Se o custo mensal faz diferença, o RDS pode ser suficiente.
  • Failover não é crítico: se a aplicação tolera 1-2 minutos de indisponibilidade durante failover, o Multi-AZ do RDS atende.
  • Compatibilidade estrita: em casos raros, extensões ou versões específicas do PostgreSQL podem estar disponíveis no RDS antes do Aurora.

Caminho de migração

A AWS oferece migração nativa com downtime mínimo:

  1. Crie um snapshot do RDS PostgreSQL
  2. Restaure o snapshot como um cluster Aurora PostgreSQL
  3. Use o AWS DMS (Database Migration Service) para replicação contínua durante a transição
  4. Redirecione a aplicação para o endpoint do Aurora
  5. Valide e desative o RDS original

Para bancos menores, o processo inteiro pode levar menos de 1 hora. Para bancos de centenas de GiB, planeje uma janela de manutenção adequada.


Conclusão

O Aurora PostgreSQL não é um substituto automático para o RDS. É uma opção arquitetural que faz sentido quando os requisitos de disponibilidade, replicação e escalabilidade justificam o custo adicional. Para a maioria das aplicações em estágio inicial ou com carga moderada, o RDS PostgreSQL continua sendo a escolha mais pragmática e econômica.

A recomendação prática: comece com RDS PostgreSQL. Monitore as métricas de replicação, failover e throughput. Quando esses indicadores mostrarem que o RDS está atingindo seus limites — ou quando a criticidade do negócio exigir garantias mais fortes — migre para o Aurora com dados concretos justificando a decisão.


Referências