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/abcCená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 5Cená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 failsCená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-2Cená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 SumCená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-1Cená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
- Cenários de arquitetura segura
- Cenários de arquiteturas resilientes e altamente disponíveis
- Cenários de alto desempenho e otimização de custos
- Mini exame completo com domínios mistos