0Pricing
Cloud & IT Cert Prep · Aula

Ativo-ativo em vários locais com Global Tables e Route 53

Execute a capacidade total de produção simultaneamente em duas ou mais Regiões usando o DynamoDB Global Tables, o Aurora Global Database e o roteamento por latência do Route 53.

Ativo-ativo em vários locais com Global Tables e Route 53 é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

Definição de Multi-Site Active-Active

Multi-Site Active-Active é o nível mais alto de recuperação de desastres, no qual sua aplicação é executada em capacidade total de produção em duas ou mais regiões da AWS simultaneamente. Diferentemente do modo ativo-passivo, em que uma instância de espera aguarda para assumir o controle, no modo ativo-ativo as duas regiões atendem ao tráfego real dos usuários o tempo todo. Quando uma região falha, a outra absorve imediatamente 100% do tráfego, sem atraso de failover. Esse padrão também reduz a latência para usuários distribuídos globalmente, atendendo-os a partir da região mais próxima.

# Active-Active traffic split (normal operation):
# us-east-1: serving ~50% of users (North America)
# eu-west-1: serving ~50% of users (Europe)

# Active-Active traffic split (us-east-1 failure):
# us-east-1: 0% (health check failed)
# eu-west-1: 100% (ASG scales up automatically)

# RTO: near-zero (DNS TTL propagation only)
# RPO: near-zero (with DynamoDB Global Tables)

Arquitetura do DynamoDB Global Tables

DynamoDB Global Tables é a base de dados das arquiteturas ativas-ativas. O Global Tables permite a replicação multi-master e entre várias regiões — as aplicações em qualquer região podem ler e Write em uma tabela local do DynamoDB, e as alterações são replicadas para todas as outras regiões em aproximadamente 1 segundo. Você habilita o Global Tables especificando em quais regiões a tabela deve existir. A AWS gerencia automaticamente toda a replicação, a resolução de conflitos (a última gravação vence) e o failover.

# Create DynamoDB table and add global regions
aws dynamodb create-table \
  --table-name UserSessions \
  --attribute-definitions AttributeName=userId,AttributeType=S \
  --key-schema AttributeName=userId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST \
  --region us-east-1

# Add replica regions for Global Table
aws dynamodb update-table \
  --table-name UserSessions \
  --replica-updates '[{"Create":{"RegionName":"eu-west-1"}},{"Create":{"RegionName":"ap-southeast-1"}}]' \
  --region us-east-1

Aurora Global Database para leituras ativas e gravações passivas

Aurora Global Database oferece leituras ativas-ativas, mas gravações ativas-passivas. Todas as regiões secundárias atendem às leituras com atraso de replicação inferior a 1 segundo, enquanto apenas a região Primary aceita gravações. Essa solução é ideal para aplicações com muitas leituras que desejam leituras de baixa latência globalmente e uma região Primary definida para gravações. Durante uma falha regional da região Primary, você pode promover uma região secundária a Primary em menos de 1 minuto, obtendo um RTO baixo para a camada de gravação. Compare essa solução com o DynamoDB Global Tables, que oferece gravações ativas-ativas em todas as regiões.

# Aurora Global Database read configuration
# Primary region (us-east-1): reads + writes
# Secondary region (eu-west-1): reads only
#   ~100ms replication lag, serves EU users low-latency reads

# Application reads from local Aurora endpoint
# Application writes to primary region Aurora endpoint

# Java connection string with region routing:
# readEndpoint=eu-west-1.cluster-ro-xxx.aurora.amazonaws.com
# writeEndpoint=us-east-1.cluster-xxx.aurora.amazonaws.com

Roteamento do Route 53 para Active-Active

O Route 53 é o diretor de tráfego das arquiteturas Multi-Site Active-Active. Use o roteamento baseado em latência para enviar cada usuário à região com a menor latência de rede a partir de sua localização. Anexe verificações de integridade a cada registro regional — quando uma região falha na verificação de integridade, o Route 53 a remove automaticamente das respostas DNS, enviando todo o tráfego para as regiões saudáveis restantes. Defina o TTL do DNS como 60 segundos ou menos para minimizar o tempo necessário para que os usuários façam failover para a região saudável.

# Route 53 latency routing with health checks
aws route53 change-resource-record-sets \
  --hosted-zone-id ZXXX \
  --change-batch '{
    "Changes": [
      {
        "Action": "UPSERT",
        "ResourceRecordSet": {
          "Name": "api.example.com",
          "Type": "A",
          "Region": "us-east-1",
          "SetIdentifier": "us-east-1",
          "HealthCheckId": "hc-us-east-1",
          "AliasTarget": {"DNSName": "alb-us-east-1.amazonaws.com", "EvaluateTargetHealth": false}
        }
      }
    ]
  }'

Auto Scaling para absorção de tráfego

Quando uma região falha em uma configuração ativa-ativa, a região sobrevivente precisa lidar com o dobro (ou mais) do tráfego normal. Seu grupo de Auto Scaling deve ter capacidade máxima suficiente e políticas de expansão que reajam rapidamente. Configure a escalabilidade com rastreamento do destino com base na contagem de solicitações do ALB por destino, para que o ASG adicione instâncias automaticamente à medida que o tráfego dobra. Considere também o pré-aquecimento: durante os exercícios de failover, observe a rapidez com que seu ASG aumenta a capacidade e certifique-se de que ele consiga atingir a capacidade necessária dentro da meta de RTO.

# ASG target tracking for request count
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name app-asg-eu-west-1 \
  --policy-name scale-on-requests \
  --policy-type TargetTrackingScaling \
  --target-tracking-configuration '{
    "TargetValue": 1000,
    "PredefinedMetricSpecification": {
      "PredefinedMetricType": "ALBRequestCountPerTarget",
      "ResourceLabel": "app/my-alb/xxx/targetgroup/my-tg/yyy"
    },
    "ScaleInCooldown": 60,
    "ScaleOutCooldown": 30
  }'

Gerenciamento de sessões em Active-Active

Em uma arquitetura de região única, as sessões dos usuários podem ser armazenadas localmente nos servidores da aplicação. Em uma arquitetura ativa-ativa com várias regiões, os usuários podem alternar entre regiões em solicitações subsequentes, interrompendo as sessões mantidas no servidor. Soluções: 1) sessões sem estado — armazene os dados da sessão em um JWT assinado ou cookie que qualquer servidor, em qualquer região, possa validar. 2) DynamoDB Global Tables para sessões — armazene as sessões centralmente, com acesso em milissegundos a partir de qualquer região. 3) ElastiCache com Global Datastore — use a replicação do Redis entre regiões para armazenar as sessões.

# DynamoDB Global Table for session storage
# Session item structure:
{
  'sessionId': 'sess-abc123',
  'userId': 'usr-456',
  'data': {'cart': [...], 'preferences': {}},
  'expiresAt': 1750000000,
  'lastUpdatedRegion': 'us-east-1'
}

# Application reads from local region DynamoDB
# Writes replicate to all regions within ~1 second
# No sticky sessions needed on the ALB

Conflitos de gravação e resolução

O maior desafio das gravações multi-master em uma arquitetura ativa-ativa são os conflitos de gravação. Se dois usuários em regiões diferentes atualizarem o mesmo registro simultaneamente, qual atualização deverá prevalecer? O DynamoDB Global Tables usa a regra de que a última gravação vence, com base no carimbo de data e hora da gravação. Isso funciona bem na maioria dos casos de uso, mas pode causar perda de dados em atualizações concorrentes (por exemplo, quando dois usuários incrementam simultaneamente um contador). Projete seu modelo de dados para evitar gravações simultâneas no mesmo item por regiões diferentes, usando gravações condicionais ou particionando a propriedade dos dados por região.

# Avoid conflicts with conditional writes
aws dynamodb update-item \
  --table-name UserProfiles \
  --key '{"userId":{"S":"usr-123"}}' \
  --update-expression 'SET profileVersion = profileVersion + :inc, username = :name' \
  --condition-expression 'profileVersion = :expectedVersion' \
  --expression-attribute-values '{
    ":inc":{"N":"1"},
    ":name":{"S":"newname"},
    ":expectedVersion":{"N":"5"}
  }'
# If another region already updated version, this fails gracefully

Replicação do S3 em Active-Active

Para armazenamento de objetos em uma arquitetura ativa-ativa, use a replicação entre regiões do S3 com replicação bidirecional (disponível em buckets com versionamento habilitado). Diferentemente da CRR unidirecional, a replicação bidirecional mantém os buckets de ambas as regiões sincronizados — os objetos gravados em qualquer região são replicados automaticamente para a outra. Isso é essencial para aplicações que gravam arquivos enviados pelos usuários no bucket S3 da região local, mas precisam que esses arquivos sejam acessíveis globalmente. Habilite o Replication Time Control (RTC) do S3 para garantir que 99,99% dos objetos sejam replicados em até 15 minutos.

# Bidirectional S3 replication
# Bucket A (us-east-1) replicates to Bucket B (eu-west-1)
# Bucket B (eu-west-1) replicates to Bucket A (us-east-1)

# Enable S3 RTC for guaranteed replication time
aws s3api put-bucket-replication \
  --bucket us-east-1-uploads \
  --replication-configuration '{
    "Rules": [{
      "Status": "Enabled",
      "ReplicationTime": {"Status": "Enabled", "Time": {"Minutes": 15}},
      "Metrics": {"Status": "Enabled", "EventThreshold": {"Minutes": 15}},
      "Destination": {"Bucket": "arn:aws:s3:::eu-west-1-uploads"}
    }]
  }'

CloudFront com origens em várias regiões

Use o CloudFront com grupos de origem para criar uma CDN ativa-ativa com failover automático. Configure uma origem Primary (ALB em us-east-1) e uma origem Secondary (ALB em eu-west-1). O CloudFront fará failover automaticamente para a origem Secondary quando a origem Primary retornar erros 5xx. Para ativos estáticos fornecidos pelo S3, configure grupos de origem apontando para buckets do S3 em várias regiões, com replicação bidirecional. Isso adiciona uma camada de resiliência no nível da CDN sobre o roteamento ativo-ativo do Route 53.

# CloudFront origin group for multi-region failover
aws cloudfront create-distribution \
  --distribution-config '{
    "Origins": {
      "Quantity": 2,
      "Items": [
        {"Id": "us-east-1", "DomainName": "alb-us-east-1.amazonaws.com"},
        {"Id": "eu-west-1", "DomainName": "alb-eu-west-1.amazonaws.com"}
      ]
    },
    "OriginGroups": {
      "Items": [{
        "Id": "multi-region-group",
        "FailoverCriteria": {"StatusCodes": {"Items": [500,502,503,504]}},
        "Members": {"Items": [{"OriginId": "us-east-1"},{"OriginId": "eu-west-1"}]}
      }]
    }
  }'

Monitoramento da integridade do Active-Active

As arquiteturas ativas-ativas exigem um monitoramento robusto para garantir que ambas as regiões estejam saudáveis e que o tráfego esteja equilibrado conforme o esperado. Principais métricas: Route 53 HealthCheckPercentageHealthy por região, DynamoDB ReplicationLatency para o atraso do Global Tables, ALB RequestCount por região para verificar a distribuição do tráfego e painéis do CloudWatch entre contas e regiões para uma visão unificada. Configure alarmes quando o atraso de replicação exceder seu limite de RPO ou quando a distribuição do tráfego ficar muito desequilibrada.

# CloudWatch alarm for DynamoDB Global Table replication lag
aws cloudwatch put-metric-alarm \
  --alarm-name 'GlobalTable-ReplicationLag-eu-west-1' \
  --metric-name ReplicationLatency \
  --namespace AWS/DynamoDB \
  --dimensions Name=TableName,Value=UserSessions Name=ReceivingRegion,Value=eu-west-1 \
  --period 60 \
  --evaluation-periods 3 \
  --threshold 5000 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:123:ops-alerts

Quando Active-Active é a escolha certa

O modo ativo-ativo é apropriado quando: os usuários estão distribuídos globalmente e a latência até uma única região é inaceitável. O RTO precisa ser quase zero — a empresa não pode tolerar nem mesmo alguns minutos de indisponibilidade. Um alto volume de gravações exige a distribuição das gravações entre regiões. Requisitos regulatórios exigem o processamento de dados dentro do país. O custo é substancialmente maior que o de outros níveis de DR; portanto, escolha o modo ativo-ativo somente quando os requisitos comerciais e a economia justificarem claramente essa decisão. Para muitas cargas de trabalho, Warm Standby é suficiente e muito mais barato.

# Active-Active justification checklist:
# [ ] Users in 2+ continents with latency SLAs
# [ ] RTO requirement < 5 minutes
# [ ] Revenue impact of downtime justifies 2x+ cost
# [ ] Data must remain within specific regions (regulations)
# [ ] Write throughput exceeds single-region capacity

# If fewer than 2-3 boxes checked:
# Consider Warm Standby instead (lower cost, adequate RTO)

Verificação rápida

Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) abordados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: DynamoDB Global Tables permite gravações multi-master entre regiões para um verdadeiro modo ativo-ativo; o roteamento por latência do Route 53, combinado com verificações de integridade, direciona os usuários para a região saudável mais próxima; e o gerenciamento de sessões precisa ser sem estado ou usar armazenamento replicado globalmente em uma arquitetura ativa-ativa. O modo ativo-ativo oferece RTO e RPO quase nulos, mas com um custo significativamente maior. A seguir, exploraremos os pilares Operational Excellence e Security do Well-Architected Framework.

Perguntas Frequentes

A aula “Ativo-ativo em vários locais com Global Tables e Route 53” é grátis?

Sim — o texto completo de “Ativo-ativo em vários locais com Global Tables e Route 53” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que vou aprender em “Ativo-ativo em vários locais com Global Tables e Route 53”?

Execute a capacidade total de produção simultaneamente em duas ou mais Regiões usando o DynamoDB Global Tables, o Aurora Global Database e o roteamento por latência do Route 53. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Ativo-ativo em vários locais com Global Tables e Route 53”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. RTO, RPO e níveis de DR
  2. Backup e restauração
  3. Pilot Light e espera aquecida
  4. Ativo-ativo em vários locais com Global Tables e Route 53
← Voltar para Cloud & IT Cert Prep