시험 대비 · 도메인 2
복원력 있는 아키텍처 설계 (26%)
Design Resilient Architectures는 과제 진술이 둘뿐인데 가중치가 26%입니다. 진술 하나가 감당하는 문항 밀도가 네 도메인 중 가장 높다는 뜻이고, 같은 판단이 아주 촘촘하게 반복된다는 뜻입니다. Well-Architected의 안정성(Reliability, 신뢰성으로도 번역됨) 기둥에 대응합니다.
학습 목표
- 과제 진술 2.1과 2.2가 각각 무엇을 묻는지 구분하고 담당 챕터를 지목할 수 있습니다.
- 동기 호출을 큐나 이벤트 버스로 끊어야 하는 상황을 요구사항에서 식별할 수 있습니다.
- SQS 표준 큐와 FIFO 큐를 순서·중복·처리량 요구로 구분할 수 있습니다.
- Multi-AZ 배포와 읽기 전용 복제본을 가용성 요구와 읽기 확장 요구로 가를 수 있습니다.
- RTO와 RPO 요구가 주어졌을 때 DR 4전략 중 하나를 근거를 들어 고를 수 있습니다.
- 이 도메인의 판단 지점 18개를 점검표로 삼아 자기 취약 지점을 찾을 수 있습니다.
이 도메인의 성격
| 과제 진술 | 중심 질문 | 주 담당 챕터 |
|---|---|---|
| 2.1 확장 가능하고 느슨하게 결합된 아키텍처 설계 | 구성 요소가 서로를 기다리는가. 부하가 늘 때 무엇이 먼저 무너지는가 | 12장 서버리스와 통합 · 7장 ELB·ASG |
| 2.2 고가용성 및 내결함성 아키텍처 설계 | 무엇 하나가 죽어도 서비스가 유지되는가. 복구까지 얼마나 걸리고 얼마나 잃는가 | 10장 RDS · 18장 DR |
두 진술은 실패의 방향이 다릅니다. 2.1은 부하로 인한 실패를, 2.2는 구성 요소의 고장으로 인한 실패를 다룹니다. 문항을 읽을 때 "트래픽이 늘었다"인지 "무언가 죽었다"인지 먼저 확인하면 후보 서비스군이 절반으로 줄어듭니다.
과제 진술 2.1 · 확장 가능하고 느슨하게 결합된 아키텍처 설계
이 진술의 문항은 대체로 "트래픽이 급증하면 무엇이 먼저 무너지는가"와 "어떻게 끊어 놓을 것인가"를 묻습니다. "서버를 더 큰 것으로 바꾼다"는 선택지는 이 진술에서 거의 언제나 밀립니다.
동기 호출을 끊는다
구성 요소가 서로를 직접 호출하면 느린 쪽이 빠른 쪽을 멈춰 세웁니다. 처리 계층이 밀리면 웹 계층의 요청이 대기하다 타임아웃되고, 그 사이에 들어온 요청은 유실됩니다. 큐나 이벤트 버스를 사이에 두면 웹 계층은 접수만 하고 즉시 응답하며, 급증분은 큐에 쌓입니다.
| 도구 | 전달 모델 | 이것을 고르는 신호 |
|---|---|---|
| Amazon SQS | 한 메시지를 한 소비자가 가져가 처리 | "작업을 하나씩 처리한다", "급증분을 완충한다", "실패를 재시도한다" |
| Amazon SNS | 한 메시지를 모든 구독자에게 팬아웃 | "하나의 사건을 여러 시스템이 동시에 받아야 한다" |
| Amazon EventBridge | 이벤트 내용에 따라 규칙으로 라우팅 | "이벤트 종류에 따라 다른 대상으로 보낸다", "필터링과 스키마가 필요하다", "AWS 서비스의 이벤트에 반응한다" |
셋을 조합하는 형태도 자주 나옵니다. SNS 주제에 여러 SQS 큐를 구독시키면 팬아웃과 완충을 동시에 얻습니다. 이 조합이 정답인 문항이 반복해서 출제됩니다.
SQS 표준 큐와 FIFO 큐
| 항목 | 표준 큐 | FIFO 큐 |
|---|---|---|
| 순서 | 최선 노력 — 보장되지 않음 | 메시지 그룹 안에서 엄격한 순서 |
| 중복 | 같은 메시지가 두 번 전달될 수 있음 | 중복 제거 |
| 처리량 | 거의 무제한 | 배치 없이 초당 300개, 배치 사용 시 초당 3,000개. 고처리량 모드로 더 확장 |
| 필수 파라미터 | 없음 | MessageGroupId가 없으면 전송이 실패 |
| 고르는 신호 | 처리량이 우선, 순서가 상관없음 | "순서가 보장되어야 한다", "중복 처리를 막아야 한다" |
가시성 제한 시간과 배달 못 한 편지 큐
소비자가 메시지를 받으면 그 메시지는 일정 시간 동안 다른 소비자에게 보이지 않습니다. 이 시간이 가시성 제한 시간(visibility timeout)이며 기본값은 30초, 최대 12시간입니다. 처리 시간보다 짧게 잡으면 같은 메시지를 두 소비자가 처리하게 됩니다. "메시지가 중복 처리된다"는 시나리오의 첫 번째 확인 대상입니다.
반복해서 실패하는 메시지는 큐를 계속 점유합니다. 배달 못 한 편지 큐(DLQ)를 지정하고 최대 수신 횟수를 설정하면 그 횟수를 넘긴 메시지가 DLQ로 옮겨져 나머지 처리를 막지 않습니다.
| 속성 | 범위 | 기본값 |
|---|---|---|
| 가시성 제한 시간 | 0초 – 12시간 | 30초 |
| 메시지 보존 기간 | 60초 – 14일 | 4일 |
| 지연 시간(지연 큐) | 0초 – 900초 | 0초 |
| 최대 메시지 크기 | 1 KiB – 1 MiB | 1 MiB |
확장 설계 — 수평이 기본입니다
탄력성이 요구되면 답은 수평 확장입니다. 인스턴스 타입을 키우는 수직 확장은 상한이 있고, 바꾸는 동안 중단이 필요하며, 고장 났을 때 대체할 것이 없습니다. 수평 확장의 전제는 상태 비저장 설계입니다 — 세션이나 업로드 파일을 인스턴스 로컬 디스크에 두면 인스턴스를 늘리고 줄일 수 없습니다.
| 정책 | 동작 | 고르는 신호 |
|---|---|---|
| 대상 추적 | 지표를 목표값에 맞춰 자동으로 조절합니다 | "평균 CPU를 일정하게 유지" 같은 목표가 주어질 때. 가장 먼저 고려합니다 |
| 단계별 | 경보의 초과 폭에 따라 단계별로 다른 수를 조절합니다 | 급격한 변동에 강도를 다르게 대응해야 할 때 |
| 단순 | 경보 하나에 정해진 만큼 조절하고 대기합니다 | 단순한 규칙으로 충분할 때 |
| 예약 | 정해진 시각에 용량을 바꿉니다 | "매일 오전 9시에 트래픽이 몰린다"처럼 시점이 예측 가능할 때 |
스케일아웃이 트래픽 상승을 따라가지 못하는 시나리오에서는 예약 스케일링으로 미리 늘리거나 큐로 완충하는 것이 정답 방향입니다. "스케일링 정책을 더 공격적으로 바꾼다"만으로는 인스턴스가 준비되는 시간을 없앨 수 없습니다.
과제 진술 2.2 · 고가용성 및 내결함성 아키텍처 설계
이 진술의 출발점은 하나입니다. 가용성은 가용 영역의 개수에서 나옵니다. 같은 가용 영역에 인스턴스를 몇 대 두든 그 가용 영역이 무너지면 전부 사라집니다. 선택지를 볼 때 인스턴스 대수가 아니라 가용 영역이 몇 개인지부터 봅니다.
Multi-AZ와 읽기 전용 복제본 SAA 빈출
시험이 가장 집요하게 노리는 혼동입니다. Multi-AZ는 가용성, 읽기 전용 복제본은 읽기 확장입니다. 요구가 둘 다면 둘 다 구성하는 선택지가 정답입니다.
| 항목 | Multi-AZ 배포 | 읽기 전용 복제본 |
|---|---|---|
| 복제 방식 | 동기(synchronous) | 비동기(asynchronous) |
| 목적 | 고가용성과 재해 복구 | 읽기 성능 확장 |
| 엔드포인트 | 동일 엔드포인트 유지. 장애 조치 시 DNS가 대기 인스턴스를 가리킵니다 | 별도의 읽기 엔드포인트 |
| 읽기 처리 | 대기 인스턴스는 읽기 트래픽을 받지 않습니다 | 읽기 트래픽을 처리합니다 |
| 배치 범위 | 같은 리전의 다른 가용 영역 | 같은 리전 또는 다른 리전 |
| 애플리케이션 수정 | 필요 없음 | 읽기를 읽기 엔드포인트로 보내도록 수정 필요 |
Amazon Aurora는 구조가 다릅니다. 스토리지 계층이 여러 가용 영역에 걸쳐 있고, 복제본이 읽기 처리와 장애 조치 대상의 역할을 함께 합니다. 리전 단위 요구에는 Aurora 글로벌 데이터베이스가 후보에 들어옵니다. 자세한 구조는 10장 RDS와 관계형 데이터베이스에서 다룹니다.
단일 장애점을 지운다
| 단일 장애점 | 증상 | 제거 방법 |
|---|---|---|
| 단일 가용 영역의 인스턴스 묶음 | 가용 영역 장애 시 전면 중단 | 여러 가용 영역에 걸친 Auto Scaling 그룹과 로드 밸런서 |
| 단일 NAT 게이트웨이 | 해당 가용 영역이 죽으면 모든 프라이빗 서브넷의 아웃바운드가 끊깁니다 | 가용 영역마다 NAT 게이트웨이를 두고 라우팅 테이블을 분리 |
| 단일 데이터베이스 인스턴스 | 인스턴스 장애가 곧 서비스 중단 | Multi-AZ 배포로 자동 장애 조치 |
| 인스턴스 로컬에 저장된 상태 | 인스턴스를 교체하면 세션과 파일이 사라집니다 | 세션은 외부 저장소로, 공유 파일은 Amazon EFS나 Amazon S3로 |
| 단일 리전 | 리전 규모 사고에 대응 수단이 없습니다 | DR 전략 선택(아래) — 요구 RTO·RPO에 맞춰 결정 |
헬스체크와 장애 조치
Elastic Load Balancing은 대상의 헬스체크가 실패하면 그 대상으로 요청을 보내지 않습니다. Auto Scaling 그룹이 로드 밸런서의 헬스체크를 쓰도록 구성하면, 프로세스는 살아 있지만 응답하지 않는 인스턴스까지 교체 대상이 됩니다. EC2 상태 검사만 쓰면 이 경우를 놓칩니다.
리전 단위 장애 조치는 Amazon Route 53의 장애 조치 라우팅과 상태 확인으로 만듭니다. 기본 레코드의 상태 확인이 실패하면 보조 레코드로 응답이 바뀝니다. 로드 밸런서 종류 선택은 계층과 프로토콜이 기준입니다 — HTTP 라우팅은 Application Load Balancer, TCP·UDP와 고정 IP가 필요하면 Network Load Balancer, 서드파티 어플라이언스 삽입은 Gateway Load Balancer입니다.
DR 4전략과 RTO · RPO
RTO(복구 목표 시간)는 얼마나 빨리 복구해야 하는가, RPO(복구 목표 시점)는 얼마만큼의 데이터 손실을 허용하는가입니다. 네 전략은 이 두 값과 상시 가동 비용을 맞바꾼 결과입니다. 문제문이 준 RTO·RPO 요구를 만족하는 가장 단순한 전략이 정답입니다.
| 전략 | 평소에 무엇이 켜져 있는가 | RTO · RPO | 상시 비용 |
|---|---|---|---|
| 백업 및 복원 | 백업만 다른 리전에 보관합니다. 인프라는 없습니다 | 가장 깁니다 | 가장 낮음 |
| 파일럿 라이트 | 데이터 복제는 계속되고, 핵심 구성 요소만 최소 규모로 켜 둡니다 | 백업·복원보다 짧습니다 | 낮음 |
| 웜 스탠바이 | 전체 스택이 축소된 규모로 항상 떠 있습니다 | 파일럿 라이트보다 짧습니다 | 높음 |
| 다중 사이트 액티브-액티브 | 양쪽이 모두 운영 트래픽을 처리합니다 | 가장 짧습니다 | 가장 높음 |
표에 숫자를 넣지 않은 이유가 있습니다. 각 전략의 RTO·RPO는 구성과 데이터 크기에 따라 달라지므로 고정된 값이 없습니다. 시험도 "파일럿 라이트의 RTO는 몇 분인가"를 묻지 않고, 주어진 요구를 만족하는 전략이 무엇인가를 묻습니다.
데이터 복제 수단도 함께 나옵니다. 객체는 S3 교차 리전 복제(CRR)로, 규정 준수나 로그 집계처럼 같은 리전 안의 복제가 필요하면 동일 리전 복제(SRR)로, 여러 서비스의 백업을 한곳에서 정책으로 관리하려면 AWS Backup으로 처리합니다.
판단 지점 점검표 18개
각 행의 기준을 한 문장으로 말할 수 없다면 담당 챕터로 돌아갑니다. 서비스 이름을 아는 것과 판단하는 것은 다릅니다.
| 번호 | 판단 지점 | 기준 | 담당 챕터 |
|---|---|---|---|
| 1 | Multi-AZ와 읽기 전용 복제본 | 가용성 요구인가 읽기 확장 요구인가. 둘 다면 둘 다 구성합니다 | 10장 |
| 2 | Multi-AZ 배포의 동작 | 동기 복제, 자동 장애 조치, 대기 인스턴스로는 읽기 불가 | 10장 |
| 3 | Aurora의 복제 구조와 글로벌 데이터베이스 | 복제본이 읽기와 장애 조치를 겸하고, 리전 단위 요구에는 글로벌 데이터베이스 | 10장 |
| 4 | 느슨한 결합 — 동기 호출을 끊는 판단 | 느린 쪽이 빠른 쪽을 멈춰 세우는 구조인지 확인합니다 | 12장 |
| 5 | SQS 표준과 FIFO | 순서와 중복 제거 요구가 있으면 FIFO, 처리량이 우선이면 표준 | 12장 |
| 6 | 가시성 제한 시간과 DLQ | 중복 처리는 가시성 시간, 반복 실패는 DLQ로 격리 | 12장 |
| 7 | SNS 팬아웃과 EventBridge 라우팅 | 모두에게 같은 메시지면 SNS, 내용으로 대상을 고르면 EventBridge | 12장 |
| 8 | 트래픽 급증을 큐로 완충 | 스케일아웃이 준비되는 동안 요청을 잃지 않는 것이 목적입니다 | 12장 |
| 9 | ASG의 다중 가용 영역 배치와 상태 비저장 설계 | 가용 영역을 여러 개 지정하고, 상태를 인스턴스 밖으로 뺍니다 | 7장 |
| 10 | ASG 스케일링 정책 선택 | 목표값이 있으면 대상 추적, 시점을 알면 예약 | 7장 |
| 11 | ELB 헬스체크와 연결 드레이닝 | ASG가 ELB 헬스체크를 쓰게 해야 응답 불능 인스턴스가 교체됩니다 | 7장 |
| 12 | DR 4전략과 RTO · RPO | 요구를 만족하는 것 중 가장 단순하고 저렴한 전략 | 18장 |
| 13 | RTO · RPO가 주어졌을 때의 전략 선택 | 복구 시간과 상시 비용의 교환 관계로 판단합니다 | 18장 |
| 14 | S3 교차 리전 복제와 동일 리전 복제 | 리전 장애 대비는 CRR, 같은 리전 안의 규정·집계 요구는 SRR | 8장 · 18장 |
| 15 | 백업 중앙화 — AWS Backup | 여러 서비스의 백업을 정책 하나로 관리해야 할 때 | 18장 |
| 16 | 단일 장애점 제거 | NAT 게이트웨이와 인스턴스, 엔드포인트를 가용 영역마다 둡니다 | 3장 · 7장 |
| 17 | Route 53 장애 조치 라우팅과 상태 확인 | 리전 장애에 DNS 수준으로 대응합니다 | 14장 |
| 18 | Lambda 동시성 · 재시도 · DLQ | 예약된 동시성으로 몫을 확보하고 실패는 DLQ로 보냅니다 | 12장 |
이 도메인의 함정
도메인 미니 퀴즈
이 도메인의 판단 지점을 확인하는 10문항입니다. 키보드만으로 완주할 수 있습니다 — 숫자키 1~5로 선택지를 고르고 Enter로 제출합니다.
이어서 볼 곳
- 12장 · 서버리스와 애플리케이션 통합 과제 진술 2.1의 본체입니다. SQS와 SNS, EventBridge, Lambda의 동시성과 재시도를 다룹니다.
- 18장 · 비용 최적화·마이그레이션·재해 복구 DR 4전략과 RTO·RPO의 교환 관계를 구성 요소 단위로 뜯어봅니다.
- 한정어 키워드 사전 MOST highly available과 MOST resilient가 각각 무엇을 가리키는지, 연습 2에서 정답이 어떻게 이동하는지.
- 보안 아키텍처 설계 (30%) 가중치가 더 큰 도메인입니다. NAT 이중화처럼 두 도메인이 겹치는 판단도 있습니다.
- 케이스 5 · 단일 AZ 설계가 장애로 전면 중단됐다 이 도메인의 첫 번째 판단 지점을 실제 사고의 형태로 따라갑니다.
- 헷갈리는 쌍 비교 Multi-AZ와 읽기 전용 복제본, 표준 큐와 FIFO 큐 같은 쌍을 표 하나로 모았습니다.
공식 문서 출처
- SAA-C03 시험 가이드 — 도메인 2의 가중치 26%와 과제 진술 2.1 · 2.2
- SAA-C03 시험 가이드 (한국어) — 과제 진술의 한국어 표현
- Amazon RDS 사용 설명서 — Multi-AZ DB 인스턴스 배포 — 대기 복제본으로의 동기식 복제와 장애 조치 동작
- Amazon RDS 사용 설명서 — 읽기 전용 복제본 사용 — 비동기 복제, 별도 읽기 엔드포인트, 교차 리전 복제본
- Amazon SQS 개발자 안내서 — FIFO 큐의 고처리량 — FIFO 큐의 초당 처리 건수와 배치 사용 시의 차이
- AWS Lambda 개발자 안내서 — 할당량 — 함수 최대 실행 시간 900초
- Amazon VPC 사용 설명서 — 보안 — 서브넷과 가용 영역 경계에 대한 서술
- AWS Well-Architected Framework (한국어) — 안정성 기둥의 정의