0Pricing
Cloud & IT Cert Prep · Aula

Cenários de arquiteturas resilientes e altamente disponíveis

Resolva cenários de failover de bancos de dados Multi-AZ, escalonamento automático sob tráfego intenso e failover com verificações de integridade do Route 53 para consolidar os conceitos de confiabilidade.

Cenários de arquiteturas resilientes e altamente disponíveis é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 2 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.

Cenário 1: aplicação web Multi-AZ

Cenário: Uma empresa executa uma aplicação web de duas camadas (ALB → EC2 → RDS) e deseja eliminar qualquer ponto único de falha dentro da AWS Region. Solução: Implante instâncias EC2 em um grupo de Auto Scaling abrangendo pelo menos 2 Availability Zones atrás de um ALB (que é inerentemente Multi-AZ). Habilite o RDS Multi-AZ para replicação síncrona em espera. Configure verificações de integridade no ALB para direcionar automaticamente o tráfego para longe das instâncias não íntegras. Com essa arquitetura, a perda de qualquer AZ provoca failover automático em todas as camadas.

# Create RDS with Multi-AZ enabled
aws rds create-db-instance \
  --db-instance-identifier prod-mysql \
  --db-instance-class db.t3.large \
  --engine mysql \
  --multi-az \
  --master-username admin \
  --master-user-password Pass123! \
  --allocated-storage 100

# Create ASG across 3 AZs
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name web-asg \
  --min-size 2 --max-size 10 --desired-capacity 3 \
  --availability-zones us-east-1a us-east-1b us-east-1c \
  --target-group-arns arn:aws:elasticloadbalancing:us-east-1:123:targetgroup/web-tg/abc

Cenário 2: escalabilidade de leitura do RDS sob carga

Cenário: A instância RDS de uma aplicação de comércio eletrônico está atingindo os limites de CPU durante os horários de pico devido a consultas analíticas com uso intenso de leitura da equipe de inteligência de negócios. Solução: Crie RDS Read Replicas e direcione as consultas de BI para o endpoint da réplica. Read Replicas usam replicação assíncrona — um pequeno atraso é aceitável para análises. Isso descarrega o tráfego de leitura da instância RDS primária, que fica reservada para operações de gravação e leituras da aplicação. Para cargas de trabalho extremamente intensas em leitura, adicione uma camada de ElastiCache na frente do RDS para dados acessados com frequência.

# Create a Read Replica from the primary RDS instance
aws rds create-db-instance-read-replica \
  --db-instance-identifier prod-mysql-replica \
  --source-db-instance-identifier prod-mysql \
  --db-instance-class db.t3.large \
  --availability-zone us-east-1b

# Application code: use replica endpoint for reads
# Primary endpoint: prod-mysql.cluster.us-east-1.rds.amazonaws.com (writes)
# Replica endpoint: prod-mysql-replica.xyz.us-east-1.rds.amazonaws.com (reads)

Cenário 3: Auto Scaling durante um pico de CPU

Cenário: Uma API sem estado é executada no EC2 atrás de um ALB. O uso de CPU sobe para 90% durante o horário comercial e cai para quase zero à noite. A empresa deseja que a frota seja escalada automaticamente. Solução: Configure um grupo de Auto Scaling com uma política de escalabilidade Target Tracking direcionada a uma utilização média de CPU de 60%. O ASG adicionará instâncias automaticamente quando a CPU exceder 60% e removerá instâncias quando cair abaixo do objetivo. Adicione uma ação de escalabilidade agendada para pré-aquecer a capacidade mínima antes do início do horário comercial, evitando atrasos no pico de tráfego da manhã.

# Target tracking policy: scale to keep CPU at 60%
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name api-asg \
  --policy-name cpu-tracking \
  --policy-type TargetTrackingScaling \
  --target-tracking-configuration '{
    "PredefinedMetricSpecification": {"PredefinedMetricType": "ASGAverageCPUUtilization"},
    "TargetValue": 60.0,
    "DisableScaleIn": false
  }'

# Scheduled action: pre-warm to 5 instances at 8 AM weekdays
aws autoscaling put-scheduled-update-group-action \
  --auto-scaling-group-name api-asg \
  --scheduled-action-name morning-scale-out \
  --recurrence '0 8 * * MON-FRI' \
  --min-size 5

Cenário 4: failover do Route 53 para o site de DR

Cenário: Uma empresa executa uma aplicação web primária em us-east-1 e deseja fazer failover para uma página estática de manutenção hospedada no S3 em us-west-2 caso a primária fique não íntegra. Solução: Crie uma verificação de integridade do Route 53 monitorando o endpoint do ALB primário. Crie dois registros do Route 53 com uma política de roteamento de failover: o registro primário apontando para o ALB (associado à verificação de integridade) e o registro secundário apontando para o site estático no S3. Se a verificação de integridade falhar, o Route 53 fornecerá automaticamente a resposta DNS do registro secundário.

# Create Route 53 health check for primary ALB
aws route53 create-health-check \
  --caller-reference $(date +%s) \
  --health-check-config '{
    "Type": "HTTPS",
    "FullyQualifiedDomainName": "app.example.com",
    "Port": 443,
    "RequestInterval": 30,
    "FailureThreshold": 3
  }'

# Primary failover record (associated with health check)
# Secondary failover record -> S3 static website endpoint
# Route 53 automatically switches if health check fails

Cenário 5: desacoplamento com SQS para resiliência

Cenário: Um backend de processamento de pedidos grava dados em um banco de dados, mas o banco às vezes fica indisponível durante janelas de manutenção, fazendo com que pedidos sejam perdidos. Solução: Coloque uma fila SQS entre o frontend (que aceita os pedidos) e o backend (que os processa). Os pedidos são colocados imediatamente na fila, fornecendo uma confirmação instantânea ao cliente. Os processos em segundo plano retiram pedidos da fila e os processam quando o banco de dados está disponível. Durante a manutenção, os pedidos se acumulam na fila em vez de serem descartados — proporcionando resiliência por meio de desacoplamento assíncrono.

# SQS-based order decoupling pattern
# 1. Frontend: PUT order to SQS (returns 200 immediately to customer)
aws sqs send-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123/orders \
  --message-body '{"orderId": "ORD-123", "items": [...]}'

# 2. Backend worker: polls SQS when DB is available
aws sqs receive-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123/orders \
  --max-number-of-messages 10

# 3. On success: delete message from queue
# 4. On failure: visibility timeout expires -> message reappears for retry
# 5. After max retries: message goes to Dead Letter Queue (DLQ)

Cenário 6: Pilot Light para DR

Cenário: Uma empresa precisa de uma solução de recuperação de desastres com RPO de 1 hora e RTO de 4 horas, dentro de um orçamento moderado. Solução: Implemente uma estratégia de DR Pilot Light. Mantenha o banco de dados principal replicado na Region de DR usando uma RDS Cross-Region Read Replica. Os servidores da aplicação não são executados na Region de DR durante a operação normal — apenas o mínimo necessário, o “núcleo” (o banco de dados), é mantido ativo. Em caso de desastre, promova a Read Replica para uma instância independente e inicie os servidores da aplicação a partir de AMIs pré-criadas usando CloudFormation. O RTO é de horas, e não minutos, porque os servidores precisam ser iniciados.

# Pilot Light: replicate database to DR Region
aws rds create-db-instance-read-replica \
  --db-instance-identifier prod-mysql-dr \
  --source-db-instance-identifier prod-mysql \
  --db-instance-class db.t3.large \
  --source-region us-east-1 \
  --destination-region us-west-2

# During disaster: promote replica in us-west-2 to standalone
aws rds promote-read-replica \
  --db-instance-identifier prod-mysql-dr \
  --region us-west-2
# Then launch app servers from AMIs using CloudFormation in us-west-2

Cenário 7: fila de mensagens não entregues do SQS para mensagens com falha

Cenário: Mensagens em uma fila SQS falham repetidamente ao serem processadas devido a um erro na função Lambda consumidora. As mensagens continuam reaparecendo e bloqueando a fila. Solução: Configure uma Dead-Letter Queue (DLQ) na fila principal. Depois que uma mensagem falhar ao ser processada por um número configurável de vezes (maxReceiveCount), o SQS a moverá automaticamente para a DLQ em vez de redistribuí-la indefinidamente. Isso desbloqueia a fila principal para mensagens válidas. Configure um alarme do CloudWatch na métrica ApproximateNumberOfMessagesVisible da DLQ para alertar a equipe de engenharia quando houver acúmulo de mensagens na DLQ.

# Set redrive policy to move failed messages to DLQ after 3 attempts
aws sqs set-queue-attributes \
  --queue-url https://sqs.us-east-1.amazonaws.com/123/orders \
  --attributes '{
    "RedrivePolicy": "{\"deadLetterTargetArn\": \"arn:aws:sqs:us-east-1:123:orders-dlq\", \"maxReceiveCount\": \"3\"}"
  }'

# CloudWatch alarm on DLQ depth
aws cloudwatch put-metric-alarm \
  --alarm-name orders-dlq-depth \
  --metric-name ApproximateNumberOfMessagesVisible \
  --namespace AWS/SQS \
  --dimensions Name=QueueName,Value=orders-dlq \
  --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1 --period 60 --statistic Sum

Cenário 8: Aurora Global Database

Cenário: Uma empresa opera nos US e na Europa. Os usuários na Europa enfrentam alta latência de leitura do banco de dados porque o RDS está em us-east-1. Solução: Use o Amazon Aurora Global Database. O cluster primário fica em us-east-1; um cluster secundário somente para leitura é adicionado em eu-west-1. O Aurora replica os dados para a Region secundária com latência típica inferior a 1 segundo, usando replicação no nível do armazenamento. Os usuários europeus leem do cluster secundário em eu-west-1. Em caso de desastre regional, o secundário pode ser promovido a primário em menos de 1 minuto (o melhor RTO entre todas as opções de banco de dados multi-região da AWS).

# Add a secondary region to an Aurora Global Database
aws rds create-global-cluster \
  --global-cluster-identifier prod-global \
  --source-db-cluster-identifier arn:aws:rds:us-east-1:123:cluster:prod-aurora

# Add secondary Region cluster
aws rds create-db-cluster \
  --db-cluster-identifier prod-aurora-eu \
  --engine aurora-postgresql \
  --global-cluster-identifier prod-global \
  --region eu-west-1

Cenário 9: serviço ECS com ALB e Auto Scaling

Cenário: Um serviço de API conteinerizado executado no ECS Fargate precisa ser escalado com base na utilização de CPU e sobreviver a falhas de AZ. Solução: Registre o serviço ECS em um grupo de destino do Application Load Balancer para que o tráfego seja distribuído entre as tarefas em execução. Distribua as tarefas por várias AZs especificando várias sub-redes na configuração do serviço. Configure o ECS Service Auto Scaling com uma política de acompanhamento de objetivo baseada na utilização de CPU do serviço ECS, para aumentar e reduzir automaticamente a quantidade de tarefas. Se uma AZ falhar, o ECS reiniciará as tarefas com falha em AZs íntegras.

# Create ECS Fargate service with ALB and multi-AZ placement
aws ecs create-service \
  --cluster prod-cluster \
  --service-name api-service \
  --task-definition api-task:5 \
  --desired-count 3 \
  --launch-type FARGATE \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-1a", "subnet-1b", "subnet-1c"],
      "securityGroups": ["sg-app"],
      "assignPublicIp": "DISABLED"
    }
  }' \
  --load-balancers '[{
    "targetGroupArn": "arn:...:targetgroup/api-tg/abc",
    "containerName": "api",
    "containerPort": 8080
  }]'

Cenário 10: failover por verificação de integridade com Route 53

Cenário: Uma empresa executa duas instâncias EC2 em AZs diferentes, servindo o mesmo domínio. Ela deseja que o Route 53 pare automaticamente de enviar tráfego para uma instância não íntegra. Solução: Use o Route 53 Weighted Routing com pesos iguais (50/50) e associe uma verificação de integridade do endpoint a cada registro. Quando o Route 53 detectar um endpoint não íntegro, ele removerá esse registro das respostas DNS e enviará 100% do tráfego para o endpoint íntegro. Quando a instância se recuperar e as verificações de integridade voltarem a ser aprovadas, o Route 53 rebalanceará o tráfego automaticamente — sem necessidade de alterações manuais no DNS.

# Route 53 weighted record with health check association
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "app.example.com",
        "Type": "A",
        "SetIdentifier": "instance-1a",
        "Weight": 50,
        "HealthCheckId": "hc-abc123",
        "TTL": 30,
        "ResourceRecords": [{"Value": "10.0.1.10"}]
      }
    }]
  }'

Cenário 11: DynamoDB Global Tables para HA multi-região

Cenário: Uma aplicação de jogos para dispositivos móveis precisa que os dados dos jogadores possam ser lidos e gravados com baixa latência tanto em us-east-1 quanto em ap-southeast-1. Uma tabela do DynamoDB em uma única região causa alta latência para usuários asiáticos. Solução: Habilite as DynamoDB Global Tables. As Global Tables replicam automaticamente os dados entre as Regions especificadas usando replicação multi-master — qualquer Region pode aceitar gravações. Os usuários asiáticos gravam e leem na réplica em ap-southeast-1 com latência local (aproximadamente 5 ms). As Global Tables tratam a resolução de conflitos usando uma estratégia de “último gravador vence”, baseada em registros de data e hora. O RTO para uma falha regional completa é próximo de zero — o tráfego simplesmente é direcionado para a região sobrevivente.

# Convert a DynamoDB table to a Global Table
# (table must exist in all target Regions first)
aws dynamodb create-global-table \
  --global-table-name PlayerData \
  --replication-group '[{"RegionName": "us-east-1"}, {"RegionName": "ap-southeast-1"}]'

# Add another Region to an existing Global Table
aws dynamodb update-global-table \
  --global-table-name PlayerData \
  --replica-updates '[{"Create": {"RegionName": "eu-west-1"}}]'

Verificação rápida

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

Resumo da lição

Nesta lição, você trabalhou com cenários que abordaram: ASG e RDS Multi-AZ para HA dentro da Region, roteamento de failover do Route 53 para DR entre Regions, SQS DLQ para isolar mensagens com falha sem bloquear filas e Aurora Global Database para escalabilidade de leitura entre Regions e failover com RTO inferior a um minuto. A seguir, abordaremos cenários de arquiteturas de alto desempenho e custo otimizado.

Perguntas Frequentes

A aula “Cenários de arquiteturas resilientes e altamente disponíveis” é grátis?

Sim — o texto completo de “Cenários de arquiteturas resilientes e altamente disponíveis” é 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 “Cenários de arquiteturas resilientes e altamente disponíveis”?

Resolva cenários de failover de bancos de dados Multi-AZ, escalonamento automático sob tráfego intenso e failover com verificações de integridade do Route 53 para consolidar os conceitos de confiabil… 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 2 de 4.

Quanto tempo leva a aula “Cenários de arquiteturas resilientes e altamente disponíveis”?

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. Cenários de arquitetura segura
  2. Cenários de arquiteturas resilientes e altamente disponíveis
  3. Cenários de alto desempenho e otimização de custos
  4. Mini exame completo com domínios mistos
← Voltar para Cloud & IT Cert Prep