0Pricing
Cloud & IT Cert Prep · 강의

상태 저장 서비스를 위한 다중 AZ 패턴

RDS, ElastiCache, EFS 및 ELB에 다중 AZ를 적용해 리전 내부의 단일 장애 지점을 제거합니다.

상태 저장 서비스를 위한 다중 AZ 패턴은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

상태 저장 서비스에 Multi-AZ가 필요한 이유

상태 저장 서비스인 데이터베이스, 캐시, 파일 시스템은 장애가 발생해도 유지해야 하는 데이터를 보유하므로 고가용성을 구현하기 가장 어려운 구성 요소입니다. 단일 AZ 데이터베이스에 장애가 발생하면 전체 애플리케이션이 데이터 저장소를 잃게 됩니다. AWS의 해결책은 Multi-AZ 배포입니다. 이 배포에서는 서비스가 두 번째 Availability Zone에 동기식 또는 준동기식 복제본을 유지하며, 기본 인스턴스에 장애가 발생하면 복제본이 신속하게 인계할 수 있습니다.

RDS Multi-AZ: 동기식 대기 복제본

RDS Multi-AZ는 다른 AZ에 동기식 대기 복제본을 유지합니다. 기본 인스턴스에 대한 모든 쓰기 작업은 성공을 확인하기 전에 동기식으로 복제되므로 데이터 손실이 없습니다(RPO=0). 대신 쓰기 지연 시간이 약간 증가합니다. 기본 인스턴스에 장애가 발생하면 RDS가 60~120초 내에 DNS 엔드포인트를 자동으로 대기 복제본을 가리키도록 변경합니다. 애플리케이션은 동일한 엔드포인트에 다시 연결하기만 하면 되므로 코드를 변경할 필요가 없습니다.

# Enable Multi-AZ on existing RDS instance
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --multi-az \
  --apply-immediately

# RDS endpoint stays the same after failover
# Application reconnects to same DNS name

Aurora Multi-AZ 아키텍처

Amazon Aurora는 공유 분산 스토리지 계층을 사용하여 Multi-AZ를 한 단계 더 발전시킵니다. 이 계층은 세 개의 AZ에 데이터를 여섯 개의 복사본으로 자동 복제합니다. Aurora 인스턴스는 상태 비저장 방식으로 작동하며 이 공유 스토리지에서 데이터를 읽고 씁니다. PRIMARY Aurora Writer에 장애가 발생하면 다른 AZ의 Read Replica가 30초 이내에 Writer로 승격됩니다. 이는 RDS Multi-AZ 장애 조치보다 빠르며, 명시적인 Standby 복제 없이도 데이터가 AZ 전체에서 항상 일관된 상태로 유지됩니다.

# Aurora cluster endpoint automatically handles failover
# Writer endpoint: mydb.cluster-xxx.us-east-1.rds.amazonaws.com
# Reader endpoint: mydb.cluster-ro-xxx.us-east-1.rds.amazonaws.com

# Failover time: typically under 30 seconds

ElastiCache Multi-AZ 복제

ElastiCache for Redis는 복제 그룹을 통해 Multi-AZ를 지원합니다. Primary 노드는 쓰기를 수락하고 다른 AZ의 Read Replica에 비동기적으로 복제합니다. Primary에 장애가 발생하면 ElastiCache가 자동으로 Replica를 Primary로 승격합니다. Redis의 클러스터 모드가 활성화된 경우 데이터는 여러 노드 그룹에 분할되며, 각 노드 그룹은 AZ 전체에 자체 Primary와 Replica를 가집니다. 이를 통해 HA와 수평 확장을 모두 제공합니다.

# Create Redis replication group with Multi-AZ
aws elasticache create-replication-group \
  --replication-group-id my-redis \
  --replication-group-description 'Multi-AZ Redis' \
  --num-cache-clusters 3 \
  --cache-node-type cache.r6g.large \
  --multi-az-enabled \
  --automatic-failover-enabled

EFS: 본질적인 Multi-AZ

Amazon Elastic File System(EFS)는 본질적으로 Multi-AZ입니다. EFS는 리전 서비스로, 한 리전 내 여러 AZ에 데이터를 중복 저장합니다. 각 AZ의 서브넷에 Mount Target을 생성하면 어느 AZ의 EC2 인스턴스든 로컬 Mount Target을 통해 파일 시스템을 마운트할 수 있습니다. 수동으로 Multi-AZ를 구성할 필요가 없습니다. EFS는 여러 AZ의 인스턴스가 동시에 액세스할 수 있는 공유 POSIX 파일 스토리지를 제공합니다.

# Mount EFS from EC2 in any AZ
# Mount target is created per AZ automatically
sudo mount -t efs -o tls fs-12345678:/ /mnt/efs

# Or use EFS mount helper
sudo mount -t efs fs-12345678 /mnt/efs

Elastic Load Balancer의 Cross-Zone

Elastic Load Balancer 자체가 Multi-AZ로 구성됩니다. ALB와 NLB는 지정한 각 AZ에 로드 밸런서 노드를 배포합니다. Cross-Zone 로드 밸런싱이 활성화된 경우(ALB의 기본 설정), 각 로드 밸런서 노드는 자신의 AZ에만 한정하지 않고 모든 AZ의 등록된 대상 전체에 트래픽을 균등하게 분산합니다. 따라서 한 AZ의 모든 인스턴스에 장애가 발생하더라도 로드 밸런서는 나머지 AZ의 인스턴스를 통해 계속 트래픽을 처리할 수 있습니다.

# ALB automatically created in multiple AZs
aws elbv2 create-load-balancer \
  --name my-alb \
  --subnets subnet-AZ1 subnet-AZ2 subnet-AZ3 \
  --security-groups sg-12345

# Cross-zone load balancing is ON by default for ALB

NAT Gateway Multi-AZ 패턴

흔히 발생하는 실수는 한 AZ에만 NAT Gateway를 배포하고 다른 AZ의 프라이빗 서브넷이 이를 통해 라우팅되도록 구성하는 것입니다. 해당 AZ에 장애가 발생하면 모든 프라이빗 인스턴스가 인터넷 액세스를 잃습니다. 올바른 Multi-AZ 패턴은 AZ마다 NAT Gateway 하나씩 배포하고, 각 AZ의 프라이빗 라우팅 테이블에서 0.0.0.0/0을 해당 AZ의 NAT Gateway를 통해 라우팅하도록 구성하는 것입니다. 이렇게 하면 NAT Gateway가 AZ 간 SPOF가 되는 것을 방지하고 AZ 간 데이터 전송 비용도 줄일 수 있습니다.

# Create NAT Gateway in each AZ
aws ec2 create-nat-gateway \
  --subnet-id subnet-public-AZ1 \
  --allocation-id eipalloc-AZ1

aws ec2 create-nat-gateway \
  --subnet-id subnet-public-AZ2 \
  --allocation-id eipalloc-AZ2

# Each AZ's private route table points to its own NAT GW

기본적으로 제공되는 DynamoDB Multi-AZ

DynamoDB는 완전 관리형 서비스로, 한 리전 내 세 개의 AZ에 데이터를 자동으로 복제합니다. Multi-AZ를 수동으로 구성할 필요가 없습니다. 모든 쓰기 작업은 성공 응답이 반환되기 전에 세 AZ 전체에 내구성 있게 저장됩니다. DynamoDB는 기본적으로 AZ 수준의 장애를 효과적으로 견딜 수 있습니다. 따라서 운영 부담을 최소화하면서 고가용성을 요구하는 시험 문제에서 DynamoDB가 데이터베이스로 자주 권장됩니다.

더 빠른 연결 처리를 위한 RDS Proxy

RDS Multi-AZ 장애 조치 중에는 영구 데이터베이스 연결을 유지하는 애플리케이션에서 Endpoint가 변경되면서 오류가 발생할 수 있습니다. RDS Proxy는 애플리케이션과 RDS 사이에서 연결 풀을 유지합니다. 장애 조치 중에는 RDS Proxy가 자동으로 새 Primary로 다시 라우팅하므로, Proxy Endpoint를 사용하는 애플리케이션의 장애 조치 영향을 60~120초에서 30초 미만으로 줄일 수 있습니다. 또한 RDS Proxy는 수명이 짧은 연결을 많이 생성하는 Lambda 함수에도 도움이 됩니다.

# Application connects to RDS Proxy endpoint
# Proxy endpoint: myproxy.proxy-xxx.us-east-1.rds.amazonaws.com

# RDS Proxy handles:
# - Connection pooling
# - Failover routing
# - IAM authentication
# - Secrets Manager integration

데이터 복제 모드: 동기식과 비동기식

복제 모드를 이해하는 것은 Multi-AZ 패턴을 선택할 때 매우 중요합니다. 동기식 복제(RDS Multi-AZ, EFS)는 성공이 확인되기 전에 모든 쓰기 작업이 두 AZ 모두에 반영되므로 RPO=0을 보장합니다. 그 대신 쓰기 지연 시간이 약간 증가합니다. 비동기식 복제(ElastiCache Redis Replica, RDS Read Replica)는 더 낮은 쓰기 지연 시간을 제공하지만 약간의 복제 지연을 허용합니다. 즉, 복제가 완료되기 전에 Primary에 장애가 발생하면 일부 데이터가 손실될 수 있습니다.

# Synchronous replication: RPO = 0, higher write latency
# Used by: RDS Multi-AZ, Aurora storage layer

# Asynchronous replication: RPO > 0 (replication lag)
# Used by: RDS Read Replicas, ElastiCache Redis replicas
# Replication lag can be monitored:
# aws cloudwatch get-metric-statistics \
#   --namespace AWS/RDS --metric-name ReplicaLag

Multi-AZ 장애 조치 테스트

RTO 가정을 검증하려면 Multi-AZ 장애 조치를 정기적으로 테스트해야 합니다. RDS에서는 콘솔의 장애 조치로 재부팅 옵션이나 CLI를 사용하여 장애 조치를 트리거할 수 있습니다. CloudWatch에서 FailedSQLServerAgentJobsCount 지표를 모니터링하고 애플리케이션 로그를 확인하여 성공적으로 다시 연결되는지 검증하십시오. 실제 장애 조치 시간을 문서화하십시오. 인스턴스 클래스와 워크로드에 따라 AWS 문서에 명시된 시간과 다를 수 있습니다.

# Trigger RDS Multi-AZ failover test
aws rds reboot-db-instance \
  --db-instance-identifier mydb \
  --force-failover

# Monitor failover in CloudWatch
aws cloudwatch get-metric-statistics \
  --namespace AWS/RDS \
  --metric-name DatabaseConnections \
  --dimensions Name=DBInstanceIdentifier,Value=mydb

빠른 확인

이 레슨에서 배운 AWS Solutions Architect(SAA-C03) 개념을 이해했는지 확인해 보십시오.

레슨 요약

이 레슨에서는 다음을 배웠습니다. RDS Multi-AZ는 자동 DNS 장애 조치와 함께 동기식 복제를 사용합니다. Aurora는 세 AZ에 걸친 공유 스토리지 계층을 사용하여 더 빠르게 장애 조치합니다. 또한 EFS와 DynamoDB는 수동 구성 없이 본질적으로 Multi-AZ로 작동합니다. AZ 간 SPOF를 방지하려면 AZ마다 NAT Gateway를 하나씩 배포하십시오. 다음 레슨에서는 멀티 리전 active-active 및 active-passive 패턴을 살펴봅니다.

자주 묻는 질문

“상태 저장 서비스를 위한 다중 AZ 패턴” 강의는 무료인가요?

네 — “상태 저장 서비스를 위한 다중 AZ 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“상태 저장 서비스를 위한 다중 AZ 패턴”에서 뭘 배우나요?

RDS, ElastiCache, EFS 및 ELB에 다중 AZ를 적용해 리전 내부의 단일 장애 지점을 제거합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“상태 저장 서비스를 위한 다중 AZ 패턴” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. HA와 내결함성: 정의 및 절충점
  2. 상태 저장 서비스를 위한 다중 AZ 패턴
  3. 다중 리전 액티브-액티브 및 액티브-패시브
  4. 상태 확인, 회로 차단기 및 재시도 로직
← Cloud & IT Cert Prep(으)로 돌아가기