지리적으로 분리된 AWS의 물리적 위치
리전 간에는 다음과 같은 특징이 있다.
👉 나라/도시 단위의 개념
AZ는 리전 안에 존재하는 물리적으로 완전히 분리된 인프라 묶음이다.
Region (서울) ├─ AZ-a ├─ AZ-b └─ AZ-c
👉 AWS에서 장애 격리의 최소 단위
데이터 센터는 실제 서버와 네트워크 장비가 들어 있는 물리적 건물이다.
AWS의 공식 설명은 다음과 같다.
“Each Availability Zone consists of one or more discrete data centers.”
👉 사용자는 데이터 센터를 직접 다루지 않는다.
AWS Global └─ Region └─ Availability Zone (AZ) └─ Data Center (1개 이상)
VPC는 AWS 안에 만드는 나만의 가상 사설 네트워크다. (Region 단위로 생성됨)
AWS Cloud └─ VPC (10.0.0.0/16)
👉 현실의 사내 네트워크(LAN)와 동일한 개념
| 구성요소 | 핵심 개념 | 중요 포인트 |
|---|---|---|
| CIDR | IP 주소 범위 정의 | VPC 및 Subnet의 IP 공간을 결정 (IPv4 / IPv6) |
| VPC | 가상 사설 클라우드 | IPv4 & IPv6 CIDR 블록 정의, AWS 네트워크 격리 단위 |
| Subnet | VPC 내 AZ 단위 네트워크 | Public / Private Subnet 구분 |
| Route Table | 트래픽 흐름 제어 | IGW, NAT, Peering, Endpoint 등 경로 지정 |
| Internet Gateway (IGW) | VPC ↔ 인터넷 연결 | Public Subnet에서 사용, 양방향 통신 가능 |
| Egress-only IGW | IPv6 전용 아웃바운드 인터넷 | IPv6 환경에서 인터넷이 먼저 연결하지 못하도록 차단 |
| 구성요소 | 설명 | 비고 |
|---|---|---|
| Bastion Host | Public Subnet에서 Private EC2로 SSH 접속 | 보안 게이트 역할 |
| NAT Instance | Private Subnet 인터넷 접근 | 현재는 거의 사용하지 않음 |
| NAT Gateway | AWS 관리형 NAT | IPv4 전용, Private Subnet 아웃바운드 인터넷 |
| 구성요소 | 레벨 | 특징 |
|---|---|---|
| Security Group | 인스턴스 레벨 | Stateful (인바운드 허용 시 아웃바운드 자동 허용) |
| NACL | Subnet 레벨 | Stateless (인/아웃바운드 각각 명시 필요) |
| Reachability Analyzer | 네트워크 디버깅 | AWS 리소스 간 연결성 분석 |
| VPC Flow Logs | 네트워크 로그 | ACCEPT/REJECT 트래픽 메타데이터 기록 (VPC/서브넷/ENI 단위) |
| Traffic Mirroring | 패킷 복제 | ENI 트래픽을 IDS/보안 장비로 전달 |
| 구성요소 | 설명 |
|---|---|
| Private DNS + Route 53 | VPC 내부 DNS 해석 가능 (enable DNS resolution / hostname 필요) |
| 구성요소 | 특징 | 제한 |
|---|---|---|
| VPC Peering | 두 VPC 직접 연결 | Transitive 불가, CIDR 겹치면 불가 |
| Transit Gateway | 허브 앤 스포크 구조 | Transitive Routing 지원 |
| 구성요소 | 설명 |
|---|---|
| VPC Endpoint | 인터넷 없이 AWS 서비스 접근 |
| Gateway Endpoint | S3, DynamoDB 전용 |
| Interface Endpoint | 그 외 AWS 서비스 (ENI 기반) |
| AWS PrivateLink | 타 VPC 서비스에 사설 연결 제공 (NLB 기반) |
| VPC Endpoint Services | 자체 서비스를 다른 VPC에 비공개로 노출 |
| 구성요소 | 설명 | 특징 |
|---|---|---|
| Site-to-Site VPN | IPsec 기반 VPN | VGW + Customer Gateway 필요 |
| AWS VPN CloudHub | VGW 기반 허브앤스포크 VPN 연결 | 여러 VPN 연결 가능 |
| Direct Connect (DX) | 전용 물리 회선 연결 | 고성능, 구축 리드타임 길음 |
| Direct Connect Gateway | 여러 리전 VPC에 DX 확장 | DX 연결 허브 |
| Transit Gateway | VPN + DX + VPC 통합 허브 | 전이적 연결 가능 |
| 구성 | 처리량 |
|---|---|
| VPN → VGW | 1.25 Gbps (Active/Standby) |
| VPN → TGW (ECMP) | 2.5 Gbps 이상 확장 가능 |
ECMP (Equal-Cost Multi-Path) 사용 시 VPN 터널을 동시에 활용하여 대역폭 선형 확장 가능.
VPC ├─ Subnet (Public / Private) ├─ Route Table ├─ IGW / NAT / Egress-only IGW ├─ Security Group / NACL ├─ VPC Peering / TGW ├─ VPC Endpoint / PrivateLink ├─ Flow Logs / Traffic Mirroring └─ VPN / DX / DXGW
서브넷은 VPC를 더 작은 네트워크 단위로 나눈 것
VPC ├─ Subnet A (AZ-a) └─ Subnet B (AZ-b)
CIDR 10.0.0.0/24의 예약된 ip주소
Internet │ [IGW] │ [Public Subnet] ── ALB, Bastion [Private Subnet] ── EC2, RDS
👉 프라이빗 = “외부 차단” ❌ / “인터넷 차단” ⭕
VPC와 인터넷을 연결하는 관문
👉 e.g., 회사 정문
[Private EC2] (10.0.0.1)
↓
[NAT 변환]
↓
[Public IP] (52.10.1.1)
↓
인터넷
10.0.0.1 → 52.10.1.1
여러 개의 Private 서버가 하나의 Public IP를 공유해야 하기 때문
10.0.0.1:5000 → 52.10.1.1:30001 10.0.0.2:5000 → 52.10.1.1:30002
프라이빗 서브넷의 EC2가 인터넷으로 나갈 수 있게 해주는 서비스 (Inbound 차단)
[Private EC2]
↓
[NAT Gateway (Public Subnet)]
↓
[Internet Gateway]
↓
인터넷
10.10.2.121:40000 → 3.35.100.1:55001
3.35.100.1:55001 → 10.10.2.121
인터넷 → NAT Gateway → Private EC2 → 차단됨
| 구분 | NAT | NAT Gateway |
|---|---|---|
| 개념 | 기술 | AWS 서비스 |
| 역할 | IP 변환 | 인터넷 출구 |
| 방식 | NAT / PAT | PAT |
| Inbound | 가능 | 불가능 |
| 사용 위치 | 네트워크 전반 | AWS VPC |
라우팅 테이블은 트래픽의 길 안내서다.
0.0.0.0/0 → IGW 10.0.0.0/16 → local
Security Group은 인스턴스 단위 방화벽이다.
👉 서버 앞 개인 경호원
서브넷 단위 방화벽
Internet │ [NACL] │ [Security Group] │ [EC2]
| 구분 | Security Group | NACL |
|---|---|---|
| 상태 기억 | ⭕ Stateful | ❌ Stateless |
| 응답 트래픽 | 자동 허용 | 명시적 허용 필요 |
| 규칙 작성 | Allow 규칙만 존재 | Allow / Deny 규칙 모두 가능 |
| 규칙 순서 | 순서 개념 없음 | 번호 순서대로 평가 |
| 적용 단위 | 인스턴스 단위 | 서브넷 단위 |
고정 퍼블릭 IP
두 VPC를 직접 연결하는 방식
다양한 리전에서 VPC를 만들어 AWS 네트워크를 통해 연결하고 싶을 때 사용한다.
👉 VPC 서브넷 상의 라우터 테이블 또한 업데이트해서 인스턴스가 서로 통신할 수 있게 함.
VPC A ─── VPC B
| 구분 | VPC Peering | Site-to-Site VPN |
|---|---|---|
| 연결 대상 | AWS VPC ↔ AWS VPC | 온프레미스 ↔ AWS VPC |
| 네트워크 경로 | AWS 백본망 | 인터넷 |
| 암호화 | 기본 ❌ | IPsec ⭕ |
| 지연/성능 | 낮음 (고성능) | 인터넷 품질 의존 |
| 하이브리드 지원 | ❌ | ⭕ |
| 주요 사용 사례 | AWS 내부 VPC 연결 | 하이브리드 클라우드 구성 |
<Site-to-Site VPN은 인터넷 위에 IPsec 기반 암호화 터널을 생성하여 온프레미스 네트워크와 AWS VPC를 연결하는 방식이다.
On-Prem Router (Customer Gateway Device)
│
(IPsec Tunnel 1)
(IPsec Tunnel 2)
│
Virtual Private Gateway (VGW)
│
VPC
특히 여러 지점을 연결하는 VPN CloudHub 구조에서는 반드시 BGP가 필요하다.
VPN 터널만 생성하면 끝이 아니다.
Destination: 192.168.10.0/24 Target: VGW
Route Propagation을 활성화하지 않으면 통신 불가.
하나의 VGW에 여러 VPN 연결을 붙여 Hub-and-Spoke 구조 구성 가능
Site A ─┐ Site B ─┼── VGW ── VPC Site C ─┘
VGW와 CGW는 “VPN을 수행하기 위한 양 끝단(종단점)”이다.
둘 다 VPN 연결을 구성하는 구성요소이며, 각각 AWS 쪽과 온프레미스 쪽 게이트웨이다.
온프레미스 측 VPN 장비를 AWS에 논리적으로 등록한 객체
VPC에 Attach되는 AWS 측 VPN 종착점
On-Prem Network
│
[Customer Gateway]
│
(IPsec VPN Tunnel)
│
[Virtual Private Gateway]
│
VPC
| 구분 | VPN | CGW | VGW |
|---|---|---|---|
| 개념 | 암호화 터널 | 온프레미스 VPN 장비 | AWS 측 종착지 |
| 위치 | 인터넷 상 | On-Prem | AWS VPC |
| Public IP 필요 | - | ⭕ (필수) | ❌ |
| VPC Attach | ❌ | ❌ | ⭕ |
| 암호화 수행 | IPsec | IPsec | 종단점 |
| Route Propagation | ❌ | ❌ | ⭕ |
DX를 사용하려면 AWS Direct Connect Location에서 물리 회선을 개설해야 하며, VPC와 연결하려면 Virtual Private Gateway(VGW) 또는 Transit Gateway(TGW)가 필요하다.
On-Prem │ Direct Connect (물리 전용 회선) │ DX Location │ VGW or TGW │ VPC
DX 연결 후 실제 트래픽을 전달하기 위해 VIF(가상 인터페이스)를 생성한다.
VIF를 통해 콘솔과 동일한 방식으로 S3, EC2 등의 리소스에 접근 가능하다. 모든 연결은 전용 회선을 통해 비공개로 전달된다.
퍼블릭 인터넷을 통하지 않기 때문에 장기적으로는 데이터 전송 비용 절감 효과가 있다.
Dedicated Connection
Hosted Connection
❗️리드타임이 길 수 있음 (설치까지 한 달 이상 소요 가능)
→ 일주일 내 빠른 연결이 필요한 경우 적합하지 않음
On-Prem │ IPsec VPN │ Direct Connect │ AWS
보안 수준은 높아지지만 구성 복잡도가 증가한다.
하나의 DX 연결로 여러 리전의 VPC를 연결하려면 Direct Connect Gateway가 필요하다.
On-Prem │ Direct Connect │ DX Gateway │ VPC (Region A) │ VPC (Region B)
DXGW는 여러 리전의 VPC와 연결을 확장해주는 허브 역할을 수행한다.
High Resiliency
Maximum Resiliency
VPN 백업 구성
VPN과 DX로 여러 VPC를 연결하다 보면 구조가 급격히 복잡해진다.
Transit Gateway는 이러한 문제를 해결하기 위한 중앙 허브이다.
Transit Gateway
/ | \
VPC1 VPC2 VPC3
\
DX / VPN
TGW에 DX Gateway를 연결하면 하나의 DX로 여러 VPC와 연결 가능하다.
TGW는 자체 라우팅 테이블을 가진다. 어떤 VPC가 누구와 통신할지 중앙에서 제어할 수 있다.
ECMP (Equal-Cost Multi-Path)는 동일 비용 경로를 동시에 사용하는 라우팅 방식이다.
VGW 연결 시
TGW 연결 시
❗️ ECMP는 Transit Gateway에서만 지원함
Transit Gateway에 DX Gateway를 연결하면 다중 계정 환경에서도 동일 구조 유지 가능하다.
On-Prem │ Direct Connect │ DX Gateway │ Transit Gateway │ Multi-Account VPCs
대규모 엔터프라이즈 환경에서는 DX + DXGW + TGW 조합이 가장 일반적인 하이브리드 아키텍처 패턴이다.
글로벌 CDN 서비스
CDN(Content Delivery Network)은
사용자와 원본 서버(Origin) 사이에 전 세계적으로 분산된 캐시 서버를 두는 구조다.
👉 “사용자와 가장 가까운 서버”
실제 원본 데이터가 있는 서버
User (한국) │ [Edge Server - 서울] │ [Origin Server]
CloudFront는 일반적인 DNS 요청과 유사한 흐름으로 동작한다.
👉 최초 요청만 Origin까지 가고, 이후는 Edge에서 처리된다.
CloudFront는 S3와 AWS 내부 사설망을 통해 통신한다.
HTTP 기반이라면 대부분 원본으로 설정 가능하다.
👉 CloudFront는 단순 캐시가 아니라 보안 레이어 역할도 한다.
사용자 국가 기반으로 접근을 제어할 수 있다.
저작권, 지역 라이선스 제한 시 활용된다.
모든 엣지를 사용하면 비용이 증가한다.
👉 성능과 비용의 트레이드오프 선택
Origin이 업데이트되어도 캐시는 TTL 동안 유지된다.
👉 “즉시 최신 콘텐츠 반영”이 필요할 때 사용
👉 CloudFront는 캐시, CRR은 데이터 복제
👉 CloudFront는 콘텐츠 최적화,
👉 Global Accelerator는 네트워크 경로 최적화
Route 53은 DNS 서비스다.
Amazon Route 53 은 고가용성과 확장성을 갖춘 완전 관리형 DNS 서비스다.
“권한 있는(Authoritative) DNS 서비스”라는 말은
👉 해당 도메인에 대한 DNS 응답을 최종적으로 결정한다는 의미다.
또한 Route 53은 다음 기능을 함께 제공한다.
숫자 53은 DNS에서 사용하는 전통적인 포트 번호(UDP/TCP 53)에서 유래했다.
특정 도메인으로 들어온 요청을 어디로 보낼지 정의하는 규칙
"이 도메인은 어디로 가야 하는가?”를 저장하는 데이터베이스 (i.e., DNS)에 저장된 한 줄의 규칙 "도메인에 대한 매핑 정보"
www.example.com → 192.168.0.10
각 레코드는 다음 요소들로 구성된다.
| 타입 | 설명 |
|---|---|
| A | 호스트 이름 → IPv4 주소 매핑 |
| AAAA | 호스트 이름 → IPv6 주소 매핑 |
| CNAME | 호스트 이름 → 다른 호스트 이름 매핑 |
| NS | 호스팅 존의 네임서버 지정 |
(고급 타입) CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV
CNAME은 호스트 이름을 다른 호스트 이름으로 매핑한다.
즉,
👉 루트 도메인에는 CNAME을 쓸 수 없다!
Alias Record는 단순히 “편의 기능”이 아니라, AWS 리소스 특성과 DNS 한계를 동시에 해결하기 위해 등장한 Route 53 고유 기능이다.
기본적인 DNS 규칙에서는 루트 도메인(apex domain)에 CNAME 레코드를 사용할 수 없다.
예를 들어 example.com 자체를 다른 도메인으로 연결하는 것은 표준 DNS에서는 금지되어 있다.
하지만 실제 서비스 환경에서는 다음과 같은 요구가 매우 흔하다.
example.com → ALB로 연결example.com → CloudFront로 연결example.com → API Gateway 엔드포인트로 연결이 문제를 해결하기 위해 Route 53은 Alias Record를 제공한다. Alias는 내부적으로는 A/AAAA 레코드처럼 동작하지만, 실제로는 AWS 리소스를 가리키는 논리적 포인터 역할을 한다.
Alias Record는 DNS 응답 시 다음 과정을 거친다.
즉, 클라이언트 입장에서는 CNAME을 받은 것이 아니라
일반 A 레코드를 받은 것처럼 보이기 때문에
루트 도메인에서도 문제없이 동작한다.
| 구분 | Alias Record | CNAME Record |
|---|---|---|
| 루트 도메인 사용 | ⭕ 가능 | ❌ 불가능 |
| AWS 리소스 연결 | ⭕ 최적화됨 | ⚠ 가능하지만 비권장 |
| 요금 | ⭕ 무료 | ❌ 일반 DNS 쿼리 비용 |
| IP 변경 대응 | ⭕ 자동 | ❌ 수동 관리 필요 |
| TTL 설정 | ❌ Route 53이 관리 | ⭕ 사용자가 설정 |
EC2 인스턴스의 퍼블릭 DNS 이름은 다음과 같은 특징을 가진다.
Alias Record는 IP 변경 가능성을 AWS가 직접 관리할 수 있는 리소스만 대상으로 허용한다.
따라서 EC2를 직접 Alias로 연결하는 대신,
이런 구조를 통해 Alias → 안정적인 AWS 엔드포인트라는 원칙을 지켜야 한다.
DNS 레코드들의 컨테이너
즉, 특정 도메인 및 서브도메인으로 들어오는 트래픽을 어떻게 라우팅할지 정의하는 공간이다.
👉 일반적인 웹 서비스용
예:
👉 회사 네트워크 내부 전용 DNS
💰 호스팅 존은 종류와 관계없이 월 $0.50 비용이 발생함
TTL은
DNS 응답을 클라이언트 또는 리졸버가 캐싱하는 시간이다.
TTL 동안에는 Route 53에 다시 묻지 않고 캐시된 IP로 직접 서버에 접근한다.
TTL은 Alias 레코드를 제외한 모든 레코드에서 필수다.
Route 53의 Routing Policy는 흔히 말하는 네트워크 라우팅과는 완전히 다른 개념이다.
Route 53은 트래픽을 “전송”하지 않는다.
Route 53은 오직 DNS 쿼리에 대해 “어떤 IP(엔드포인트)를 응답할지”만 결정한다.
즉, 실제 HTTP/HTTPS 트래픽의 흐름은 로드 밸런서, 네트워크, 애플리케이션 계층에서 처리되며, Route 53은 그 이전 단계에서 이름 → 엔드포인트 변환 규칙만 정의한다.
각 정책은 “언제, 어떤 상황에서 어떤 엔드포인트를 응답할 것인가”에 대한 전략 차이다.
가장 기본적인 DNS 동작 방식
Alias 레코드를 사용하는 경우에는 반드시 하나의 AWS 리소스만 지정할 수 있다.
Simple Routing은 구조가 단순한 만큼, 장애 제어·트래픽 제어에는 적합하지 않다.
DNS 단계에서 트래픽 비율을 조절할 수 있는 정책
가중치가 0이면 해당 리소스로는 DNS 응답이 가지 않는다.
대표적인 사용 사례:
⚠️ 주의할 점: 모든 레코드의 가중치가 0이면, Route 53은 이를 동일 가중치로 간주한다.
사용자와 가장 빠르게 연결 가능한 AWS 리전으로 응답을 돌려준다.
여기서 말하는 “가까움”은 지리적 거리가 아니라, AWS가 측정한 실제 네트워크 지연 시간이다.
따라서 물리적으로 가까워 보여도, 네트워크 경로상 지연이 크다면 다른 리전으로 연결될 수 있다.
글로벌 서비스를 운영할 때 사용자 체감 속도 최적화에 매우 적합하다.
사용자의 실제 위치(국가/대륙/미국 주)를 기준으로 다른 엔드포인트를 응답하는 정책이다.
예:
한국 → ap-northeast-2 ALB 미국 → us-east-1 ALB 유럽 → eu-west-1 ALB
특정 위치에 매칭되지 않는 경우를 대비해 기본(Default) 레코드를 반드시 설정해야 한다.
👉 “지역별 권한이 다를 때” 사용한다.
리소스의 지리적 위치를 기준으로 트래픽을 분배하는 정책이다.
Geolocation과 달리, 사용자 위치가 아니라 리소스 근접도 기준이다.
예: 서울 리전에 +20 Bias → 더 넓은 영역의 트래픽을 서울로 유도
👉 특정 리전으로 의도적으로 트래픽을 끌어오고 싶을 때 사용한다.
Primary / Secondary 구조로 장애 발생 시 자동 전환하는 정책이다.
재해 복구(DR) 시나리오에 사용된다.
Primary (us-east-1)
│
▼ 장애 발생
Secondary (us-west-2)
여러 정상 엔드포인트를 동시에 반환하며, 비정상 리소스는 자동 제외한다.
Simple Routing과 달리 비정상 엔드포인트는 응답에서 제거된다.
| 정책 | 기준 | 대표 사용 사례 |
|---|---|---|
| Simple | 단일 응답 | 기본 DNS |
| Weighted | 비율 | Canary 배포 |
| Latency | 지연 시간 | 속도 최적화 |
| Geolocation | 사용자 위치 | 라이선스 제한 |
| Geoproximity | 리소스 근접도 | 트래픽 편향 |
| Failover | 장애 여부 | DR 구성 |
| Multi-Value | 정상 리소스 다중 응답 | 간단 분산 |
Route 53은 트래픽을 보내는 것이 아니라 어디로 보낼지 결정하는 DNS 전략 엔진이다.
Route 53이 레코드를 응답할지 말지 결정하는 기준
고가용성과 자동 장애 조치를 위해 사용되며, 다음 세 가지 방식이 있다.
상태 확인이 가능하려면 Health Checker가 해당 엔드포인트에 접근 가능해야 하며, 보안 그룹 또는 방화벽 설정이 필수다.
여러 Health Check를 하나의 논리적 결과로 결합한다.
VPC 내부 리소스는 직접 접근이 불가능하므로, CloudWatch Alarm을 상태 신호로 사용한다.
메트릭이 임계값을 초과하면 Alarm → Health Check 실패로 간주된다.
주 리소스에 장애가 발생했을 때, 자동으로 보조 리소스로 DNS 응답을 전환한다.
Active-Active 구조가 아닌, 재해 복구(Disaster Recovery) 목적에 적합
사용자의 실제 국가 / 지역 위치를 기준으로 응답을 분기한다.
Latency 기반과 달리, 네트워크 성능이 아니라 지리적 위치 자체가 기준이다.
일치하는 위치가 없는 경우를 대비해 Default 레코드 필수
사용자 위치와 리소스 위치 간의 “거리”를 기준으로 라우팅한다.
Bias 값을 통해 특정 리소스로 트래픽을 인위적으로 더 끌어올리거나 줄일 수 있다.
온프레미스 리소스의 경우 위도/경도를 직접 지정해야 한다.
⚠️ Route 53 Traffic Flow(고급 기능)가 필요함
여러 정상 엔드포인트를 동시에 응답한다.
ELB처럼 보일 수 있지만, 로드 밸런서를 대체할 수는 없다.
Simple Routing과 달리, 비정상 리소스를 자동으로 제외할 수 있다는 점이 핵심 차이
도메인 Registrar와 DNS 서비스는 역할이 다르다.
GoDaddy에서 도메인을 구매했더라도, DNS 관리는 Route 53으로 이전할 수 있다.
이 경우 필요한 작업: Registrar에서 Nameserver(NS)를 Route 53이 제공한 NS로 변경
이 순간부터 DNS 쿼리는 Route 53이 전담하게 된다.
사설 네트워크 리소스가 외부와 통신할 수 있도록 주소를 변환해주는 기술
AWS에서는 주로 프라이빗 서브넷 → 인터넷 단방향 통신을 위해 사용된다.
[Private Subnet]
│
▼
[NAT]
│
▼
Internet
👉 “나가기는 되는데, 들어오지는 못하게”
| 구분 | NAT Gateway | NAT Instance |
|---|---|---|
| 관리 주체 | AWS | 사용자 |
| 확장성 | 자동 | 수동 |
| 실무 사용 | 권장 | 거의 사용 ❌ |
👉 실무에서는 NAT Gateway가 표준
Amazon EBS는
EC2에 붙여서 사용하는 영구 블록 스토리지다.
[EC2] ────(Network)──── [EBS]
👉 “클라우드판 외장 하드” (AZ 단위 리소스)
👉 EBS 성능 = 네트워크 성능
EBS 볼륨의 특정 시점을 저장하는 백업 이미지
[EBS Volume] │ Snapshot (Point-in-time) │ [New EBS Volume]
👉 장애 복구, 볼륨 복제, AMI 생성의 기반
중요 포인트
👉 비용·시간 효율적
✅ 포인트
EBS 볼륨은 AZ 종속 리소스이며,
EBS 스냅샷은 리전 단위 리소스다.
👉 따라서, 스냅샷을 이용하면 한 AZ에서 생성된 EBS 볼륨을 다른 AZ에서 새로 만들어 사용할 수 있기 때문에,
AZ 간의 데이터 이전이 유연하게 가능하다.
EBS는 성능과 비용에 따라 여러 볼륨 타입을 제공한다.
IOPS 특징
IOPS 특징
👉 성능 안정성이 최우선일 때
👉 IOPS보다 처리량 또는 비용이 중요할 때
하나의 EBS 볼륨을 여러 EC2에 동시에 연결하는 기능
👉 고가용성 클러스터 구성용
주의
EBS는 기본적으로 암호화 가능하다.
암호화 대상:
👉 성능 저하 거의 없음
[Unencrypted EBS] │ Snapshot ▼ [Encrypted Snapshot] │ [Encrypted EBS]
👉 암호화 전환은 스냅샷 기반
인스턴스 스토어는 EC2 호스트에 물리적으로 붙어 있는 임시 디스크다.
[EC2 Host] └─ Instance Store (Local)
👉 “빠르지만 날아가도 되는 데이터 전용”
Amazon EFS는
여러 EC2 인스턴스가 동시에 접근할 수 있는 완전 관리형 파일 스토리지다.
[EC2 A] ─┐
├─── [EFS]
[EC2 B] ─┘
EBS와 가장 큰 차이점
EBS = 하나의 EC2에 붙는 디스크👉 고가용성 기본 제공
EFS 성능은 용량이 아니라 사용량 기반으로 결정됨
👉 일반 웹 서비스, 공유 디렉토리
👉 대규모 배치 작업, 분석 워크로드
👉 웹 서버, CMS, 애플리케이션 공유 파일
👉 수천 개 인스턴스가 동시에 접근하는 환경
Lifecycle 정책을 사용하면
자동으로 Standard → IA 이동 가능
예시:
| 구분 | EBS | Instance Store | EFS |
|---|---|---|---|
| 스토리지 타입 | 블록 | 블록 | 파일 |
| 연결 방식 | 네트워크 | 로컬 | 네트워크 |
| 지속성 | 영구 | 임시 | 영구 |
| 동시 접근 | ❌ (1 인스턴스) | ❌ | ⭕ (다수) |
| 성능 특성 | IOPS/처리량 설정 | 초고속 I/O | 자동 확장 처리량 |
| 대표 용도 | OS, DB | 캐시, 임시 데이터 | 공유 파일 시스템 |
Elastic Load Balancing은
들어오는 트래픽을 여러 서버로 분산하는 서비스다.
User │ [Load Balancer] ├─ EC2 ├─ EC2 └─ EC2
👉 단일 서버 한계를 넘기 위한 핵심 구조
| 종류 | 특징 | 계층 |
|---|---|---|
| ALB | HTTP/HTTPS, 경로·호스트 기반 라우팅 | L7 |
| NLB | 초고성능 TCP/UDP, 고정 IP 지원 | L4 |
| GWLB | 네트워크 트래픽을 보안 장비로 전달 (방화벽, IDS/IPS) | L3 / L4 |
| CLB | 구형 로드 밸런서 (비권장) | L4 / L7 |
👉 웹 서비스 = ALB
👉 초고성능 네트워크 트래픽 = NLB
👉 보안 장비 트래픽 처리(L3 스위치 역할) = GWLB
Gateway Load Balancer(GWLB)는 일반적인 웹 트래픽 분산용이 아닌,
네트워크 레벨(L3/L4)에서 트래픽을 가로채서 보안 장비로 전달하는 용도다.
Client │ [VPC Route] │ [GWLB] │ [Firewall / IDS / IPS] │ Destination
👉 그래서 개념적으로 “L3 스위치 + 로드 밸런서”에 가깝다.
Sticky Session은
같은 사용자의 요청을 항상 같은 백엔드 서버로 보내는 기능이다.
User A ──┐
├─ [ALB] ──→ EC2-1
User B ──┘
👉 ElastiCache Session Store가 권장 대안
ELB의 Sticky Session은 쿠키 기반으로 동작한다.
| 쿠키 | 설명 |
|---|---|
| AWSALB | AWS가 자동 생성하는 쿠키 |
| Application Cookie | 애플리케이션이 직접 정의 |
👉 “쿠키 = 서버로 가는 길 안내 표지판”
Cross-Zone Load Balancing은
모든 AZ의 인스턴스에 트래픽을 균등 분산하는 기능이다.
AZ-A (EC2 2대) ← 트래픽 50% AZ-B (EC2 1대) ← 트래픽 50%
모든 EC2에 균등 분산
👉 “AZ가 아니라 인스턴스 기준 분산”이다.
ELB는 SSL/TLS 암호화 종료 지점이 될 수 있다.
User (HTTPS) │ [ALB] ← TLS 종료 │ EC2 (HTTP)
👉 “암호화는 LB에서, 서버는 가볍게 유지”
example.com ─┐
├─ [ALB] ── 인증서 A
api.example.com ┘ 인증서 B
👉 “한 IP / 한 LB / 여러 HTTPS 사이트”
Connection Draining은
인스턴스를 제거할 때 기존 연결을 정상 종료하도록 기다리는 기능이다.
인스턴스가 Draining 상태가 되면, ELB는 등록 취소 중인 인스턴스로 새로운 요청을 보내지 않고 현재 연결되어 있는 작업을 완료하면 종료된다.
[ALB] │ EC2 (제외 예정) │ 기존 요청 처리 완료 후 제거
👉 “지금 처리 중인 요청은 끝내고 가라”
ELB는 백엔드 인스턴스의 상태를 지속적으로 검사한다.
👉 “살아 있는 서버만 트래픽 받는다”
Auto Scaling은 트래픽에 따라 서버, 컨테이너, DB 용량 등 리소스의 양을 자동으로 조절하는 기능을 의미한다
User │ [ALB] │ [Auto Scaling Group] ├─ EC2 ├─ EC2 └─ EC2
오토 스케일링을 실제로 수행하는 관리 단위(그룹)
[ASG] ├─ Desired Capacity ├─ Min Size └─ Max Size
Auto Scaling은 다음과 같은 흐름으로 동작한다.
1. 트래픽 증가 2. CloudWatch 지표 상승 3. Scaling Policy 트리거 4. ASG가 EC2 생성 5. ELB(Target Group)에 자동 등록
반대로 트래픽이 줄어들면:
1. 지표 감소 2. Scale In 조건 충족 3. ASG가 EC2 제거 4. Connection Draining 대기 5. 인스턴스 종료
👉 “지표 기반 자동 증감”
CloudWatch는
Auto Scaling의 판단 근거를 제공하는 모니터링 서비스다.
CloudWatch는 지표(Metric)를 수집하고, 이를 기준으로 Alarm을 발생시킨다.
CloudWatch Metric │ CloudWatch Alarm │ Scaling Policy │ ASG 동작
👉 “CloudWatch = 눈, ASG = 손”
Scaling Policy는
언제, 얼마나 EC2를 늘리거나 줄일지 정의한다.
특정 지표를 목표값(Target)으로 유지하도록 자동 조절한다.
CPU 평균 50% 유지
지표 구간에 따라 단계적으로 인스턴스를 증감한다.
CPU ≥ 60% → +1 CPU ≥ 80% → +3
👉 “부하 패턴이 명확할 때 사용”
정해진 시간에 인스턴스 수를 조절한다.
매일 09:00 → 10대 매일 22:00 → 3대
👉 “트래픽 패턴이 시간 기반일 때”
과거 데이터를 분석해 미래 트래픽을 예측하고 미리 Scale Out을 수행한다.
👉 대규모 서비스용
ASG와 ELB는 다음과 같이 역할이 분리된다.
ELB가 비정상 인스턴스를 감지하면:
ELB (Unhealthy) ↓ ASG ↓ EC2 교체
👉 “ELB는 판단, ASG는 실행”
EIP는 고정 퍼블릭 IP다.
👉 “바뀌지 않는 인터넷 주소”
Bastion Host는 프라이빗 서브넷에 접근하기 위한 중간 서버다.
Internet │ [Bastion (Public)] │ [Private EC2]
👉 “출입 통제용 정문”
IAM은 AWS 리소스에 대해
누가(Who), 무엇을(What), 어떻게(How) 접근할 수 있는지를 정의하는 서비스다.
👉 AWS 보안의 출발점
네트워크가 “어디까지 들어올 수 있느냐”를 다룬다면,
IAM은 “들어온 뒤 무엇을 할 수 있느냐”를 다룬다.
IAM은 여러 개념이 결합된 권한 설계 시스템이다.
AWS에 로그인할 수 있는 실제 주체다.
👉 “사람 계정”
여러 IAM User를 논리적으로 묶는 단위
👉 “부서”
무엇을 허용하거나 거부할지 정의한 규칙 문서
IAM 정책은 크게 Version과 Statement로 구성된다.
2012-10-17)Principal은
“이 리소스를 사용할 수 있는 대상”을 명시적으로 지정할 때 사용한다.
즉,
가 이 리소스에 접근 가능한지를 지정한다.
이 경우 Principal을 쓰지 않는다.
👉 Principal을 안 쓰면
“이 정책을 가진 사람만” 권한을 가진다.
이 경우 Principal이 필수
👉 Principal을 쓰면
“이 리소스를 사용할 수 있는 대상”을 명시한다.
Role은 누군가가 잠시 맡아서 사용하는 권한 묶음이다.
👉 “빌려 쓰는 권한”
EC2, Lambda 같은 AWS 서비스는
User가 아니라 Role을 통해 권한을 가진다.
👉 장기 키 노출을 막기 위한 설계
EC2는 AWS에서 제공하는 가상 서버다.
[User] │ [EC2 Instance]
👉 “클라우드에서 빌려 쓰는 컴퓨터”
EC2 인스턴스는 단순히 “켜고 끄는 서버”가 아니라
상태(State)를 가진 리소스다.
Hibernate는 EC2 인스턴스를 종료하지 않고
메모리(RAM) 상태까지 디스크에 저장한 뒤 중지하는 기능이다.
Running ↓ Hibernate ↓ Stopped (RAM 상태 보존) ↓ Resume → 이전 상태 그대로 복원
👉 “OS 부팅 없이 그대로 이어서 쓰고 싶을 때”
| 구분 | Stop | Hibernate | Terminate |
|---|---|---|---|
| RAM 보존 | ❌ | ⭕ | ❌ |
| 재시작 속도 | 느림 | 빠름 | 불가 |
| 데이터 유지 | EBS만 | EBS + RAM | ❌ |
EC2는 워크로드에 따라 인스턴스 패밀리로 구분된다.
| 타입 | 용도 |
|---|---|
| T 계열 | 버스트형, 저비용 (웹 서버) |
| C 계열 | CPU 집약 (연산) |
| M 계열 | 범용 |
| R 계열 | 메모리 집약 (DB, 캐시) |
[EC2] ├─ Root EBS (OS) └─ Data EBS / Instance Store
👉 중요한 데이터 = EBS
👉 날아가도 되는 데이터 = Instance Store
VPC
└─ Subnet
└─ EC2
└─ ENI
├─ Private IP
└─ Security Group
👉 퍼블릭 서브넷 ≠ 퍼블릭 IP 필수
👉 프라이빗 서브넷 ≠ 인터넷 접근 불가 (NAT로 가능)
👉 EC2는 User가 아니라 Role을 사용
EC2는 단독으로 쓰기보다
Auto Scaling Group(ASG)과 함께 사용된다.
User │ [ALB] │ [ASG] ├─ EC2 ├─ EC2 └─ EC2
👉 EC2 = 컴퓨터
👉 ASG = 수 자동 관리
AMI는 EC2를 생성할 때 사용하는 서버 템플릿이다.
=> EBS 스냅샷을 가리키는 메타데이터 + 참조 정보
AMI는 EBS 스냅샷을 기반으로 만들어지며,
EBS 스냅샷이 리전 단위 리소스이기 때문에 AMI 또한 리전 종속적이다. (리전 단위로 존재하는 리소스)
따라서, 다른 리전에서 사용하려면 복사해서 새로운 AMI를 만들어야 한다.
👉 “서버 설계도”
인스턴스 타입은 EC2의 성능 스펙을 의미한다.
예)
👉 “컴퓨터 사양 선택”
Key Pair는 EC2에 접속하기 위한 SSH 인증 수단이다.
👉 비밀번호 로그인 ❌
👉 키 기반 로그인 ⭕
ENI는 EC2에 붙는 가상 네트워크 카드다. (특정 AZ에 종속 됨)
[EC2] └─ ENI ── Network
👉 EC2의 네트워크 정체성
컨테이너는 애플리케이션과 실행 환경을 하나로 묶은 실행 단위다.
EC2가 “가상 컴퓨터”라면,
컨테이너는 그 위에서 돌아가는 가벼운 실행 프로세스다.
[EC2] └─ Container 1 └─ Container 2
👉 서버를 더 잘 쪼개 쓰는 방법
Docker는 컨테이너를 만들고 실행하기 위한 도구다.
컨테이너는 보통 이렇게 만들어진다.
Source Code → Docker Image → Container
👉 “내 PC에서 되던 게 서버에서도 그대로 된다”
Amazon ECS는 AWS가 제공하는 AWS 네이티브 컨테이너 오케스트레이션 서비스다.
Docker 컨테이너를 대규모로 배포하고, 확장하고, 관리하기 위한 플랫폼이다.
User │ ▼ [ECS Service] │ ▼ [EC2 or Fargate] │ ▼ [Docker Containers]
👉 ECS는 “컨테이너를 실행하고 유지하는 관리자” 역할을 한다.
컨테이너 실행 설계도다.
👉 컨테이너 청사진
컨테이너가 실행될 인프라 집합이다.
👉 컨테이너가 올라갈 공간
Task를 원하는 개수만큼 항상 유지한다.
👉 무중단 운영의 핵심
EC2 인스턴스를 직접 프로비저닝해야 하며, EC2 위에서 컨테이너가 실행됨.
ECS Cluster ├─ EC2 Instance │ ├─ ECS Agent │ └─ Containers
ECS Agent는 EC2 안에서 실행되며 ECS와 통신하는 중개자다.
EC2를 만들지 않고 AWS가 서버를 대신 관리함. 완전 서버리스!
User │ ▼ [ECS Service] │ ▼ [Fargate] │ ▼ [Containers]
📌 핵심 차이
EC2 = 서버 관리 + 컨테이너 실행
Fargate = 컨테이너만 신경 쓰면 됨
컨테이너 이미지를 저장하는 AWS 전용 레지스트리
Dockerfile │ ▼ docker build │ ▼ docker push → [ECR] │ ▼ ECS pulls image → 실행
👉 컨테이너 이미지 저장소
ECS에는 권한이 두 계층으로 나뉜다.
👉 인프라 권한
👉 애플리케이션 권한
EC2 Role → 인프라 권한 Task Role → 앱 권한
⚠️ 최소 권한 원칙 적용해야 함
Users │ ▼ Application Load Balancer │ ▼ ECS Service │ ▼ Tasks
👉 대부분의 웹 서비스 기본 구조
컨테이너는 기본적으로 Stateless다.
영구 저장이 필요하면 EFS를 사용한다.
ECS Tasks │ mount ▼ Amazon EFS
👉 서버리스 + 공유 파일 시스템 가능
CloudWatch Metric
│
▼
Application Auto Scaling
│
▼
Task Count 증가/감소
Task 증가 │ ▼ EC2 부족 │ ▼ Auto Scaling Group 확장
Capacity Provider 사용 권장
S3 업로드 │ ▼ EventBridge │ ▼ ECS Task 실행 │ ▼ DynamoDB 저장
매 1시간 │ ▼ EventBridge Rule │ ▼ ECS Task 실행
👉 서버리스 배치 처리 패턴
Docker → ECR
│
▼
ECS
(EC2 or Fargate)
│
▼
ALB
│
▼
EFS (선택)
│
▼
Auto Scaling
│
▼
EventBridge 트리거
| 개념 | 설명 |
|---|---|
| ECS | 컨테이너 오케스트레이션 |
| Fargate | 서버리스 컨테이너 실행 |
| ECR | 컨테이너 이미지 저장소 |
| Task Role | 애플리케이션 권한 |
| Instance Role | 인프라 권한 |
| ALB | 트래픽 분산 |
| EFS | 공유 스토리지 |
| EventBridge | 이벤트 기반 실행 |
ECS는 로드밸런싱, 스케일링, 이벤트 트리거, 영구 저장소까지 연결되는 완전한 애플리케이션 실행 플랫폼이다.
Fargate는 서버를 관리하지 않고 컨테이너를 실행할 수 있는 AWS의 서버리스 컴퓨팅 엔진이다.
ECS, EKS에서 사용 가능
컨테이너 관리자 = ECS
실행 엔진 = EC2 or Fargate
ECS │ [Fargate] │ [Container]
👉 “서버 신경 쓰기 싫을 때”
AWS Lambda는 서버를 전혀 관리하지 않고 코드를 실행하는 서버리스 컴퓨팅 서비스다.
Fargate가 “컨테이너 실행만 신경 쓰는 방식”이라면,
Lambda는 컨테이너조차 신경 쓰지 않는 방식이다.
Event │ [Lambda] │ Code 실행
👉 “코드만 올리면 나머지는 AWS가 전부 처리”
Lambda는 함수 단위로 실행된다.
👉 “요청이 들어올 때만 잠깐 실행”
Lambda는 항상 켜져 있지 않다.
👉 유휴 비용 없음
Lambda는 이벤트 기반으로 동작한다.
[S3 Upload] │ [Lambda] │ [처리 로직]
👉 “무언가 발생하면 실행”
Lambda는 내부적으로 컨테이너 환경에서 실행된다.
하지만 사용자는:
을 전혀 신경 쓰지 않는다.
👉 완전한 추상화
| 구분 | Lambda | Fargate |
|---|---|---|
| 실행 단위 | 함수 | 컨테이너 |
| 서버 관리 | ❌ | ❌ |
| 컨테이너 관리 | ❌ | ⭕ |
| 실행 시간 | 짧음 (이벤트 기반) | 상대적으로 김 |
👉 단순 이벤트 처리 = Lambda
👉 지속 실행 서비스 = Fargate
Kubernetes는
컨테이너를 자동으로 배치·확장·복구·관리하는 오케스트레이션 시스템이다.
컨테이너가 “실행 단위”라면,
쿠버네티스는 컨테이너를 운영하는 운영체제에 가깝다.
👉 “컨테이너가 많아졌을 때 생기는 모든 문제를 해결하기 위해 등장”
컨테이너만으로는 이런 문제가 생긴다.
이걸 사람이 직접 하면 불가능하다.
그래서 쿠버네티스가 자동으로 결정한다.
👉 “사람 대신 판단하는 컨테이너 관리자”
[Kubernetes Cluster] ├─ Control Plane (두뇌) └─ Worker Node (일꾼)
클러스터는 크게 두 영역으로 나뉜다.
클러스터 전체를 제어하는 영역이다.
👉 “관리자”
실제로 컨테이너가 실행되는 서버다.
👉 “실행 공간”
Pod는 쿠버네티스에서
배포와 실행의 최소 단위다.
[Pod] ├─ Container A └─ Container B
👉 쿠버네티스는 컨테이너가 아니라 Pod를 관리한다.
Deployment는
Pod를 어떻게, 몇 개, 어떤 상태로 유지할지 정의한다.
👉 “서비스 운영 설명서”
Pod는 IP가 자주 바뀐다.
그래서 직접 접근하면 안 된다.
Service는
Pod들을 하나의 논리적 서비스로 묶는 네트워크 객체다.
Client │ [Service] │ [Pod A] [Pod B] [Pod C]
👉 로드 밸런싱 + 고정 접근 지점
쿠버네티스의 기본 가정은 이렇다.
AWS에서는 이걸
ENI + VPC CNI로 구현한다.
👉 Pod도 결국 VPC 네트워크 위에 올라간다.
| 구분 | Kubernetes | ECS |
|---|---|---|
| 표준 | 오픈소스 | AWS 전용 |
| 자유도 | 높음 | 낮음 |
| 운영 난이도 | 높음 | 낮음 |
👉 복잡하지만 강력 = Kubernetes
👉 단순하고 빠름 = ECS
EKS는 AWS에서 제공하는 관리형 Kubernetes 서비스다.
쿠버네티스 컨트롤 플레인을 AWS가 대신 운영해준다.
User │ ▼ [EKS Control Plane] │ ▼ [Worker Nodes] │ ▼ [Pods]
👉 “쿠버네티스를 그대로 쓰고 싶을 때” 사용하는 서비스
AWS가 Multi-AZ로 자동 구성하며 고가용성을 보장한다.
실제 Pod가 실행되는 서버다.
쿠버네티스의 최소 배포 단위 (컨테이너를 포함하는 실행 단위)
EKS에서 Kubernetes Secret은 etcd에 저장된다. 기본적으로 EBS 디스크 암호화는 적용되지만, Secret 데이터 자체는 기본적으로 평문 상태로 저장된다.
이를 해결하기 위해 EKS는 AWS KMS 기반 Envelope Encryption을 지원한다.
Kubernetes Secret
│
▼
EKS API Server
│
▼
AWS KMS (Data Key 생성)
│
▼
Encrypted Secret → etcd 저장
📌 클러스터 생성 시 --encryption-config 옵션으로 KMS 키를 지정한다.
📌 별도의 Lambda나 사용자 암호화 로직 구현이 필요 없다.
📌 최소 운영 오버헤드로 Secret 보안을 강화할 수 있다.
👉 일반적으로 가장 많이 사용
👉 세밀한 제어가 필요할 때
👉 완전 서버리스 Kubernetes
Internet │ ▼ ALB / NLB │ ▼ EKS Service │ ▼ Pods
Kubernetes Service → AWS Load Balancer로 연결된다.
Pod는 기본적으로 Stateless다.
👉 데이터가 필요하면 Volume을 사용
Pod │ ▼ Persistent Volume │ ▼ EBS / EFS
📌 EBS는 단일 AZ
📌 EFS는 Multi-AZ 공유 가능
Pod 증가 │ ▼ Node 부족 │ ▼ Auto Scaling Group 확장
👉 Kubernetes 생태계를 그대로 활용하고 싶을 때
컨테이너 기반 웹 애플리케이션을 가장 단순하게 배포하는 서비스
Container Image / Source Code
│
▼
Configure (vCPU / RAM / Auto Scaling)
│
▼
Deploy
│
▼
Public URL 제공
👉 “가장 간단한 컨테이너 배포”
| 구분 | ECS | EKS |
|---|---|---|
| 표준 | AWS 전용 | Kubernetes 표준 |
| 난이도 | 낮음 | 높음 |
| 이식성 | 낮음 | 높음 |
| 운영 복잡도 | 간단 | 복잡 |
| 생태계 | AWS 중심 | Helm / CNCF 전체 |
빠른 시작 → ECS
표준·멀티클라우드 → EKS
| 서비스 | 용도 |
|---|---|
| ECS | AWS 최적화 컨테이너 |
| EKS | Kubernetes 표준 |
| Fargate | 서버리스 컨테이너 |
| ECR | 이미지 저장소 |
| App Runner | 초간단 배포 |
Amazon RDS는 AWS에서 제공하는 관리형 관계형 데이터베이스 서비스다.
Application │ [RDS Endpoint] │ [RDS DB Instance]
| 엔진 | 설명 |
|---|---|
| MySQL | 가장 범용적인 오픈소스 RDB |
| PostgreSQL | 고급 SQL, 확장성 강점 |
| MariaDB | MySQL 호환 오픈소스 |
| Oracle | 엔터프라이즈 DB |
| SQL Server | Microsoft RDB |
Multi-AZ는 RDS의 고가용성(HA) 기능
AZ-A (Primary) │ (Sync Replication) AZ-B (Standby)
👉 SQL 연결 문자열 변경 ❌
👉 고가용성 ⭕
| 구분 | Multi-AZ | Read Replica |
|---|---|---|
| 목적 | 가용성 | 읽기 성능 확장 |
| 복제 방식 | 동기 | 비동기 |
| Endpoint | 하나 | 별도 Endpoint |
| 자동 Failover | ⭕ | ❌ |
Read Replica는 읽기 트래픽을 분산하기 위한 기능이다.
Writer DB │ (Async) Read Replica
👉 성능 확장 ⭕
👉 고가용성 ❌
RDS는 두 가지 백업 메커니즘을 제공한다.
PITR = 자동 백업
AWS가 직접 설계한 고성능 클라우드 네이티브 RDB
👉 “RDS의 상위 호환, 완전 다른 구조”
Writer
│
┌───────┴────────┐
Reader Reader
│
Shared Storage
(6 copies, 3 AZ)
Global Aurora는 전 세계 리전에 걸친 읽기 확장을 제공한다.
👉 글로벌 서비스 + DR(재해복구)
스토리지를 복사하지 않고 DB를 즉시 복제하는 기능
👉 백업 ❌
👉 실험 / 테스트 ⭕
RDS Proxy는 DB 앞단에서 연결을 관리하는 프록시
Lambda / EC2
│
[RDS Proxy]
│
[RDS / Aurora]
Amazon ElastiCache는
자주 조회되는 데이터를 메모리에 저장하여 응답 지연을 최소화하는
완전 관리형 인메모리 데이터 저장소다.
Application │ (Read / Write) [ElastiCache] ← In-Memory │ [RDS / Aurora] ← Persistent Storage
👉 “DB 앞단에 두는 초고속 메모리 계층”
RDS가 “관리형 관계형 DB”라면,
ElastiCache는 관리형 Redis / Memcached다.
👉 “실서비스 표준, 기능 중심”
👉 “단순 캐시 + 최고 성능”
| 구분 | Redis | Memcached |
|---|---|---|
| 데이터 구조 | 풍부 (List, Set, ZSet 등) | 단순 Key-Value |
| 영속성 | ⭕ (선택) | ❌ |
| 고가용성 | ⭕ (Multi-AZ + Failover) | ❌ |
| 백업/복구 | ⭕ | ❌ |
| 사용 목적 | 세션, 리더보드, 실시간 데이터 | 단순 조회 캐시 |
애플리케이션이 직접 캐시를 관리하는 가장 일반적인 패턴
1. Cache 조회 2. Cache Hit → 바로 반환 3. Cache Miss → DB 조회 4. DB 결과를 Cache에 저장
👉 “없으면 DB 가서 채운다”
DB에 쓰기 전에 항상 Cache에도 동시에 기록
👉 “Cache = DB 미러”
먼저 Cache에 쓰고, 비동기로 DB에 반영
👉 “속도 최우선, 리스크 감수”
사용자 로그인 정보, 세션 상태를 애플리케이션 서버가 아닌 ElastiCache에 저장
User │ [ALB] │ [App Server A] ─┐ [App Server B] ─┼─→ [ElastiCache (Session)] [App Server C] ─┘
👉 “어디로 가도 로그인 유지”
👉 “IAM은 관리용, 데이터 접근은 Redis 인증”
👉 Sorted Set 하나로 실시간 랭킹 구현
👉 “캐시는 DB를 대체하지 않는다”
Amazon S3는 AWS의 핵심 구성 요소 중 하나로, 사실상 무한히 확장 가능한 객체 스토리지 서비스다.
S3는 단순한 파일 저장소를 넘어, 웹 서비스, 데이터 분석, 백업, 재해 복구 등 수많은 AWS 서비스와 애플리케이션의 기반 인프라로 사용된다.
중요한 점은 S3가 단순한 “디스크”가 아니라 고가용성 · 고내구성 · 글로벌 접근이 가능한 객체 스토리지라는 점이다.
S3는 데이터를 Bucket(버킷)이라는 단위에 저장한다. 버킷은 S3의 최상위 컨테이너 역할을 한다.
S3는 전역 서비스처럼 보이지만, 버킷은 리전 단위로 물리적으로 존재한다.
S3에서 실제로 저장되는 파일을 객체(Object)라고 한다.
객체는 Key로 식별된다. 이 Key는 “파일 경로”처럼 보이지만, 실제로는 하나의 문자열이다.
s3://my-bucket/my_file.txt s3://my-bucket/my_folder1/another_folder/my_file.txt
S3에는 실제 디렉토리 개념이 없다. 슬래시(/)는 단지 키의 일부일 뿐이다.
S3 접근 제어는 크게 두 가지 방식으로 이루어진다.
IAM 정책을 통해 “이 사용자가 어떤 S3 API를 호출할 수 있는지”를 제어한다.
실무에서는 Bucket Policy 하나로 대부분 해결함
S3는 객체를 암호화된 상태로 저장할 수 있다.
기업 데이터 유출을 방지하기 위해 AWS가 제공하는 추가 보안 계층
👉 “절대 공개되면 안 되는 버킷”에는 항상 활성화한다.
S3 사전 서명 URL은
IAM 자격 증명이 없는 사용자에게도 제한된 시간 동안 특정 S3 객체에 접근할 수 있도록 허용하는 임시 URL이다.
쉽게 말하면
“권한이 없는 사용자에게 잠깐만 접근권을 빌려주는 링크”다.
📌 왜 필요한가?
S3 버킷을 퍼블릭으로 열면 보안 위험이 크다.
하지만 특정 파일을 외부 사용자에게 잠깐 제공해야 하는 경우가 있다.
예:
이때 사용하는 것이 Pre-Signed URL이다.
S3는 정적 웹사이트를 직접 호스팅할 수 있다.
버킷 단위로 객체의 버전 관리를 활성화할 수 있다.
⚠️ 버전 관리를 중단해도 기존 버전은 삭제되지 않는다.
가장 기본적인 스토리지 클래스. 높은 내구성(99.999999999%)과 높은 가용성을 제공하며, 자주 액세스되는 데이터를 위한 기본 선택지다.
선택 상황
자주 사용되지는 않지만 필요 시 즉시 접근해야 하는 데이터에 적합하다. 스토리지 비용은 Standard보다 저렴하지만 데이터 접근 시 비용이 발생함.
선택 상황
Standard-IA와 유사하지만 단일 AZ(가용 영역)에만 저장된다. 비용은 더 저렴하지만 AZ 장애 발생 시 데이터 손실 위험이 존재한다.
선택 상황
아카이브 목적이지만 즉시 조회가 필요한 데이터에 적합하다. Standard-IA보다 저렴하면서 밀리초 단위 접근이 가능하다.
선택 상황
몇 분에서 몇 시간 내 복원이 가능하다. 스토리지 비용이 매우 저렴하며 장기 보관 목적에 적합하다.
선택 상황
가장 저렴한 스토리지 옵션이다. 복원에 12시간 이상이 소요될 수 있다.
선택 상황
접근 패턴을 예측하기 어려운 데이터를 위한 자동 최적화 스토리지다. 액세스 패턴에 따라 자동으로 비용이 가장 낮은 티어로 이동한다. 운영 관리 부담을 줄이면서 비용을 최적화할 수 있다.
선택 상황
| 사용 패턴 | 추천 스토리지 |
|---|---|
| 자주 접근 | S3 Standard |
| 가끔 접근, 즉시 필요 | Standard-IA |
| 비용 우선, 단일 AZ 가능 | One Zone-IA |
| 아카이브 + 즉시 접근 | Glacier Instant Retrieval |
| 아카이브 + 몇 분~시간 허용 | Glacier Flexible Retrieval |
| 거의 접근 없음 | Glacier Deep Archive |
| 패턴 예측 불가 | Intelligent-Tiering |
AWS 스토리지 서비스는 단순히 “저장소 종류가 많은 것”이 아니라, 워크로드 특성 · 접근 방식 · 온프레미스 연계 여부에 따라 선택하는 구조적 설계 문제다.
따라서 시험이나 실무에서 가장 중요한 것은 “이 상황에서는 어떤 스토리지를 선택해야 하는가?”를 판단하는 능력이다.
“네트워크가 병목이 될 때 사용하는 오프라인 데이터 전송 전략”
Snow는 직접 Glacier로 업로드하지 않고
→ S3 → Lifecycle 정책 → Glacier 구조를 사용한다.
“특정 파일 시스템을 AWS가 대신 운영해주는 서비스”
RDS가 데이터베이스 엔진을 관리해주는 것과 동일한 개념이다.
| 서비스 | 주 사용 환경 | 프로토콜 | 핵심 특징 |
|---|---|---|---|
| FSx for Windows | Windows 환경 | SMB | AD 통합, NTFS, ACL |
| FSx for Lustre | HPC, ML | POSIX | 초고성능, 병렬 처리 |
| FSx for NetApp ONTAP | 하이브리드 환경 | NFS/SMB/iSCSI | 스냅샷, 중복 제거, 복제 |
| FSx for OpenZFS | ZFS 워크로드 | NFS | ZFS 기능 완전 지원 |
즉,
ML 학습처럼 “다시 계산 가능”한 데이터는 Scratch
재생산이 어려운 데이터는 Persistent.
기업은 모든 데이터를 한 번에 AWS로 옮기지 않는다. 따라서 브릿지 역할이 필요하다.
Storage Gateway는 온프레미스에 설치된다. AWS 내부 서비스가 아님
| Gateway 종류 | 프로토콜 | 백엔드 | 용도 |
|---|---|---|---|
| S3 File Gateway | NFS/SMB | S3 | 파일 공유 |
| FSx File Gateway | SMB | FSx Windows | Windows 네이티브 파일 공유 |
| Volume Gateway | iSCSI | S3 + Snapshot | 블록 스토리지 백업 |
| Tape Gateway | iSCSI VTL | S3 + Glacier | 테이프 대체 |
재해 복구 중심이면 Cached, 온프레미스 주 저장이면 Stored.
많은 기업은 여전히 FTP 기반 시스템을 사용한다.
이 서비스는 S3나 EFS를 FTP 인터페이스로 제공한다.
중요한 점: 파일 전송 인터페이스를 제공하는 것이지 저장소가 아니다.
파일 권한과 메타데이터까지 보존하는 엔터프라이즈 동기화 서비스
지속적 실시간 복제가 아닌,
“스케줄 기반 동기화”
| 서비스 | 스토리지 유형 | 접근 방식 / 프로토콜 | 주요 사용 상황 | 핵심 특징 |
|---|---|---|---|---|
| Amazon S3 | 객체(Object) | HTTP / REST API | 백업, 데이터 레이크, 정적 웹 호스팅 | 무한 확장, 11 9's 내구성, 대부분 AWS 서비스와 연동 |
| S3 Glacier | 객체 아카이브 | REST API | 장기 보관, 규제 준수 데이터 | 저비용, 복구 지연 존재 |
| Amazon EBS | 블록(Block) | EC2 직접 연결 | DB, 트랜잭션 시스템 | 단일 AZ, 고성능 IOPS, io1/io2 다중 연결 지원 |
| Instance Store | 물리적 블록 | EC2 로컬 디스크 | 임시 캐시, 고성능 처리 | 초고속 IOPS, 인스턴스 종료 시 데이터 삭제 |
| Amazon EFS | 파일(File) | NFS (POSIX) | Linux 다중 인스턴스 공유 | Multi-AZ, 자동 확장, 서버리스 |
| FSx for Windows | 파일(File) | SMB | Windows 파일 서버, AD 환경 | NTFS, ACL, AD 통합 |
| FSx for Lustre | 파일(File) | POSIX | HPC, ML, 대규모 병렬 연산 | 초고속 처리, S3와 통합 가능 |
| FSx for NetApp ONTAP | 파일 + 블록 | NFS / SMB / iSCSI | 하이브리드 NAS 마이그레이션 | 스냅샷, 복제, 중복 제거, 압축 지원 |
| FSx for OpenZFS | 파일(File) | NFS | ZFS 기반 워크로드 | ZFS 기능 완전 지원, 고성능 |
| S3 File Gateway | 하이브리드 파일 | NFS / SMB | 온프레미스 파일 → S3 연결 | 로컬 캐시, IAM 연동 |
| FSx File Gateway | 하이브리드 파일 | SMB | 온프레미스 ↔ FSx Windows | 로컬 캐시, AD 통합 |
| Volume Gateway | 하이브리드 블록 | iSCSI | 온프레미스 볼륨 백업 | S3에 스냅샷 저장, Cached/Stored 모드 |
| Tape Gateway | 하이브리드 아카이브 | iSCSI VTL | 테이프 백업 대체 | S3 + Glacier 기반 가상 테이프 |
| AWS Transfer Family | 전송 인터페이스 | FTP / FTPS / SFTP | 레거시 파일 전송 유지 | S3/EFS를 FTP처럼 사용 |
| AWS DataSync | 동기화 서비스 | NFS / SMB / API | 대용량 정기 동기화 | 10Gbps 전송, 메타데이터 유지 |
| Snow Family | 오프라인 전송 | 물리 장치 | 초대용량 초기 마이그레이션 | 네트워크 병목 제거 |
| Gateway 유형 | 연결 대상 (AWS) | 프로토콜 | 온프레미스 저장 방식 | 주요 목적 | 대표 사용 상황 |
|---|---|---|---|---|---|
| S3 File Gateway | Amazon S3 | NFS / SMB | 자주 쓰는 데이터 로컬 캐시 | 파일 기반 → 객체 스토리지 연결 | 온프레미스 파일 서버를 S3에 연결 |
| FSx File Gateway | FSx for Windows | SMB | 로컬 캐시 | Windows 파일 서버 하이브리드 구성 | AD 환경, Windows 공유 드라이브 확장 |
| Volume Gateway (Cached) | Amazon S3 (EBS 스냅샷 형태) | iSCSI | 핫 데이터만 캐시 | 저지연 블록 스토리지 | 온프레미스 앱 + 클라우드 백업 |
| Volume Gateway (Stored) | Amazon S3 (백업용) | iSCSI | 전체 데이터 온프레미스 유지 | 정기 백업 | 온프레미스 볼륨 전체 백업 |
| Tape Gateway | S3 + Glacier | iSCSI (VTL) | 테이프 캐시 | 물리 테이프 대체 | 기존 백업 시스템 유지 + 클라우드 아카이브 |
| 구분 | File Gateway | Volume Gateway | Tape Gateway |
|---|---|---|---|
| 스토리지 유형 | 파일 | 블록 | 가상 테이프 |
| 주 사용 목적 | 파일 공유 확장 | 백업 / DR | 레거시 테이프 대체 |
| 백엔드 저장소 | S3 | S3 (EBS Snapshot) | S3 → Glacier |
| 레거시 시스템 유지 | 가능 | 가능 | 가장 적합 |
• 파일 공유를 그대로 S3에 연결 → S3 File Gateway
• 블록 스토리지 백업 필요 → Volume Gateway
• 테이프 백업 시스템 유지하면서 클라우드 전환 → Tape Gateway
• Windows 파일 서버 하이브리드 → FSx File Gateway
Amazon S3 Storage Lens는
S3 스토리지 사용 현황과 활동 패턴을 조직 단위까지 분석·가시화해주는 분석 서비스다.
“S3를 얼마나 쓰고 있는지, 어디에서 비용이 발생하는지, 비효율은 없는지”를 보여주는 관리형 분석 도구다.
🎯 왜 필요한가?
대규모 S3 환경에서는:
이런 상황에서
비용 최적화 / 보안 위험 탐지 / 비활성 객체 파악이 어렵다.
Storage Lens는 이를 중앙에서 분석해준다.
Amazon SQS는 완전 관리형 메시지 큐 서비스다.
목적: 애플리케이션 간 결합도(Decoupling)를 낮추는 것
Producer와 Consumer 사이에 큐를 두어 서로 직접 통신하지 않도록 만듦
Producer → SQS Queue → Consumer
트래픽 완충 장치(Buffer) 역할을 한다.
중복 가능성이 있으므로 idempotent 설계가 필요하다.
순서가 중요한 금융 트랜잭션, 주문 처리 등에 사용된다.
Consumer는 큐에 메시지가 있는지 직접 요청한다. 이를 Polling이라 한다.
Long Polling은 API 호출 수 감소 + 비용 절감 목적
Consumer가 메시지를 가져가면 일정 시간 동안 다른 소비자에게 보이지 않는다.
너무 짧으면 중복 처리, 너무 길면 장애 복구 지연.
CloudWatch Metric: ApproximateNumberOfMessages
대규모 이벤트, 주문 폭증 상황에서 매우 자주 사용됨
Decouple -> SQS
Pub/Sub 기반 메시징 서비스
하나의 메시지를 여러 구독자에게 동시에 전달한다.
Producer → SNS Topic → 여러 Subscriber
SQS와 가장 큰 차이: SNS는 Push 방식.
메시지는 저장되지 않기 때문에 지속성이 필요하면 SQS와 결합한다.
SNS Topic → 여러 SQS Queue 구독
실무에서 매우 자주 등장하는 패턴.
정렬 + Fan-out이 동시에 필요할 때 사용
구독자는 JSON 필터 정책을 사용해 특정 메시지만 받을 수 있다.
하나의 Topic으로 여러 비즈니스 로직 분기 가능.
Broadcast / Fan-out 키워드 -> SNS다.
Amazon Kinesis는 대규모 실시간 데이터 스트리밍 플랫폼이다.
로그, IoT 데이터, 클릭 스트림, 금융 트랜잭션처럼 초당 수천~수백만 건의 데이터를 지속적으로 처리해야 할 때 사용된다.
SQS가 “작업 큐”라면, Kinesis는 “데이터 스트림 파이프라인”이다.
실시간 데이터 스트림을 수집하고, 여러 Consumer가 반복적으로 읽을 수 있게 한다.
Producer → Kinesis Stream → Consumer
샤드 수 = 처리량
확장이 필요하면 샤드를 늘린다.
이 점이 SQS와 가장 큰 차이다.
Kinesis는 데이터를 재생(replay)할 수 있다.
완전 서버리스 데이터 전송 서비스
Streams와 달리:
Firehose는 “실시간에 가까운 배치 전송 서비스”
| 항목 | Kinesis | SQS FIFO |
|---|---|---|
| 정렬 기준 | Partition Key | Message Group ID |
| 병렬성 | 샤드 수 | Group 수 |
| 재처리 | 가능 | 불가 |
대규모 스트리밍 분석 → Kinesis 작업 순서 보장 → SQS FIFO
“실시간 분석” -> Kinesis
Amazon MQ는 관리형 메시지 브로커 서비스다.
SQS/SNS와 달리, 브로커 서버 기반 구조다.
MQTT, AMQP, STOMP, OpenWire 등 개방형 프로토콜을 지원한다.
신규 설계에서는 잘 사용하지 않는다. 레거시 호환 목적이 핵심이다.
Producer → MQ Broker → Consumer
하지만:
| 항목 | SQS | Amazon MQ |
|---|---|---|
| 아키텍처 | 서버리스 | 브로커 서버 |
| 확장성 | 무제한 | 제한적 |
| 프로토콜 | AWS API | JMS, AMQP 등 |
| 주 용도 | 신규 클라우드 설계 | 레거시 이전 |
JMS / AMQP / MQTT 키워드 -> MQ
Serverless는 “서버가 없다”는 뜻이 아니다.
서버를 직접 관리할 필요가 없다는 의미다.
초기에는 FaaS(Function as a Service)를 의미했지만,
현재는 완전 관리형 서비스 전반을 포함하는 개념이다.
AWS에서는 인프라를 직접 프로비저닝하지 않는 서비스들을 서버리스로 분류한다.
Users
│
├── Static Content → S3
│
├── Log-in → Cognito
│
└── REST API → API Gateway
│
▼
Lambda
│
▼
DynamoDB
완전 관리형 서비스들만으로 웹 애플리케이션 구성이 가능하다.
| 항목 | EC2 | Lambda |
|---|---|---|
| 운영 방식 | 가상 서버 | 가상 함수 |
| 실행 방식 | 항상 실행 | 요청 시 실행 |
| 확장 | 서버 추가 필요 | 자동 |
| 과금 | 시간 단위 | 실행 시간 단위 |
S3 (이미지 업로드)
│
▼
Lambda
│
├── 썸네일 저장 → S3
└── 메타데이터 → DynamoDB
EventBridge (매 1시간)
│
▼
Lambda
Public Lambda ──► DynamoDB (가능) Public Lambda ──X► Private RDS (불가능)
기본 Lambda는 AWS 내부 네트워크에서 실행된다.
Private Subnet의 RDS 접근 불가하다.
Lambda Function
│
▼
ENI (Elastic Network Interface)
│
▼
Private Subnet
│
▼
RDS
Lambda는 ENI를 생성해 VPC 내부 리소스에 접근한다.
Lambda는 스케일링 시 DB 연결이 폭증한다.
RDS Proxy 사용
Lambda x 1000
│
▼
RDS Proxy (Connection Pool)
│
▼
RDS DB
CloudFront는 4단계에서 요청 수정 가능하다.
Client │ Viewer Request │ CloudFront │ Origin Request │ Origin │ Origin Response │ Viewer Response
| 항목 | CloudFront Functions | Lambda@Edge |
|---|---|---|
| 런타임 | JavaScript | Node.js / Python |
| 실행 시간 | < 1ms | 최대 5~10초 |
| 트리거 | Viewer 단계 | Viewer + Origin |
| 네트워크 접근 | 불가 | 가능 |
Client │ CloudFront │ API Gateway │ Lambda │ DynamoDB
서버 없이도 글로벌 확장 가능한 아키텍처 구현 가능하다.
핵심은 “서버를 관리하지 않는다”는 점
DynamoDB는 완전 관리형(NoSQL) 분산 데이터베이스다.
관계형이 아니지만 트랜잭션을 지원함.
DynamoDB는 데이터베이스를 생성하지 않고,
테이블 단위로 동작한다.
Table ├── Item (Row) │ ├── PK │ ├── SK (optional) │ └── Attributes
빠른 스키마 전개가 필요한 경우 적합
| 항목 | Provisioned | On-Demand |
|---|---|---|
| 용량 설정 | 사전 지정 | 자동 |
| 비용 | 저렴 | 상대적으로 높음 |
| 적합한 환경 | 예측 가능 | 급격한 트래픽 |
| 항목 | DAX | ElastiCache |
|---|---|---|
| 용도 | DynamoDB 캐시 | 범용 캐시 |
| 쿼리 캐시 | 가능 | 직접 구현 |
| 집계 결과 | 비추천 | 적합 |
테이블 변경사항(생성/수정/삭제)을 스트림으로 생성한다.
DynamoDB │ ▼ Streams │ ▼ Lambda
여러 리전에 자동 복제되는 다중 활성 테이블이다.
Region A ↔ Region B ↔ Region C
Lambda와 통합하면 완전 서버리스 REST API 구현 가능하다.
서버리스 워크플로 오케스트레이션 서비스
Lambda A │ ▼ Choice ├── Lambda B └── Lambda C
주문 처리, 데이터 파이프라인, 복잡한 비즈니스 로직에 적합하다.
👉 반복 개수가 적고 단순 병렬 처리가 필요할 때 사용한다.
👉 수천 개 이상의 대규모 병렬 처리가 필요할 때 사용한다.
📌 소규모 반복 → Inline
📌 대규모 데이터 처리 → Distributed
Amazon Cognito는 완전 관리형 사용자 인증 및 권한 부여 서비스다.
웹 및 모바일 애플리케이션에서 서버리스 인증 시스템을 구축할 때 사용된다.
사용자 디렉터리 역할을 하며 인증(Authentication)을 담당한다.
로그인 성공 시 3가지 토큰을 발급한다.
인가(Authorization)를 담당하며 AWS 리소스 접근 권한을 부여한다.
User Pool = 인증
Identity Pool = AWS 리소스 접근 권한
Client ↓ Cognito 로그인 ↓ JWT 발급 ↓ API Gateway (Cognito Authorizer) ↓ Lambda 실행
API Gateway에서 JWT를 검증하여 완전 서버리스 인증 구조를 구성한다.
SAML(Security Assertion Markup Language)은 기업 환경에서 사용하는 표준 인증 프로토콜이다.
Cognito는 외부 SAML Identity Provider(IdP)와 연동하여 기업 계정 기반 SSO를 지원한다.
User ↓ Cognito (Service Provider 역할) ↓ SAML Identity Provider (Okta / Azure AD 등) ↓ SAML Assertion 반환 ↓ Cognito JWT 발급
👉 기업 환경에서 “사내 계정으로 AWS 서비스 로그인” 요구 시 SAML을 사용한다.
Amazon Cognito는 서버를 직접 구축하지 않고도 안전한 사용자 인증과 AWS 리소스 접근 제어를 구현할 수 있는 완전 관리형 서비스다.
Amazon DocumentDB는 MongoDB와 호환되는 완전 관리형 NoSQL 문서 데이터베이스
📌 JSON 형태의 문서 데이터를 저장한다.
{
"user_id": 101,
"name": "Kim",
"orders": [
{"item": "Laptop", "price": 1200},
{"item": "Mouse", "price": 30}
]
}
관계형 JOIN 대신 문서 안에 중첩 데이터로 저장
| 항목 | DynamoDB | DocumentDB |
|---|---|---|
| API | AWS 전용 | MongoDB 호환 |
| 구조 | Key-Value | Document |
| 쿼리 유연성 | 제한적 | 강력 |
| 사용 사례 | 초고속 트랜잭션 | 복잡한 JSON 데이터 |
완전 관리형 그래프 데이터베이스
User A → 친구 → User B User B → 팔로우 → User C User A → 좋아요 → 게시글 123
관계가 중심이 되는 데이터
데이터보다 “관계”가 더 중요한 경우.
완전 관리형 Apache Cassandra 호환 NoSQL DB
| 항목 | DynamoDB | Keyspaces |
|---|---|---|
| API | AWS 전용 | Cassandra CQL |
| 마이그레이션 | 불가 | Cassandra 이전 가능 |
| 서버리스 | 완전 서버리스 | 관리형 Cassandra |
변하지 않는 원장 데이터베이스
*Ledger: 금융 트랜잭션을 기록하는 장부
Transaction ↓ Journal ↓ Hash Chain
데이터 변경이 위변조되지 않았음을 증명 가능하다.
완전 관리형 서버리스 시계열 데이터베이스
Timestamp Temperature 2024-01-01 10:00 22.1 2024-01-01 10:01 22.3
| DB | 유형 | 주요 특징 | 대표 사용처 |
|---|---|---|---|
| RDS | 관계형 | 관리형 SQL DB | 전통적 웹앱 |
| Aurora | 관계형 | 고성능 클라우드 최적화 | 대규모 트래픽 서비스 |
| DynamoDB | NoSQL | 초고속 Key-Value | 모바일, 게임 |
| DocumentDB | 문서형 | MongoDB 호환 | JSON 중심 앱 |
| Neptune | 그래프 | 관계 중심 데이터 | 추천, 소셜 네트워크 |
| Keyspaces | NoSQL (Cassandra) | 분산 대규모 처리 | IoT, 로그 |
| QLDB | 원장 DB | 불변 이력 저장 | 금융, 감사 |
| Timestream | 시계열 | 시간 기반 데이터 분석 | IoT, 모니터링 |
S3에 저장된 데이터를 직접 SQL로 분석할 수 있는 서버리스 쿼리 서비스
SELECT * FROM cloudtrail_logs WHERE eventName = 'CreateUser';
Lambda 기반 커넥터를 사용해 S3 외의 데이터(RDS, DynamoDB 등)도 쿼리 가능하다.
PostgreSQL 기반의 완전 관리형 데이터 웨어하우스
| OLTP | OLAP |
|---|---|
| 트랜잭션 처리 | 대규모 분석 |
| RDS/Aurora | Redshift |
S3 데이터를 Redshift로 로드하지 않고 직접 분석.
대규모 로그, 텍스트 데이터를 빠르게 검색하고 분석하기 위한 관리형 검색 엔진 서비스
Hadoop/Spark 기반 빅데이터 처리 플랫폼
서버리스 BI 서비스.
데이터를 시각화하고 대시보드를 만들 수 있다.
완전 관리형 ETL 서비스.
(추출과 변환, 로드 서비스를 관리하는 서버리스 서비스)
| ETL | ELT |
|---|---|
| 변환 후 적재 | 적재 후 변환 |
| Glue | Redshift |
이전 처리 데이터를 재처리하지 않도록 방지.
데이터 레이크 구축을 자동화하는 서비스.
모든 원천 데이터를 S3에 "중앙 저장"하는 구조.
스트리밍 데이터를 "실시간으로 분석"하는 완전 관리형 서비스
서버를 직접 관리하지 않아도 되며 자동 확장된다.
| 유형 | 설명 |
|---|---|
| SQL 애플리케이션용 | SQL 기반 실시간 분석 |
| Apache Flink용 | 코드 기반 고급 스트리밍 처리 |
고급 스트리밍 처리용 엔진이다.
⚠ Firehose는 직접 읽지 못한다.
완전 관리형 Kafka 클러스터 서비스.
Kafka는 Kinesis의 대안 개념이다.
Producer ↓ Topic ├── Partition 0 ├── Partition 1 └── Partition 2 ↓ Consumer Group
| 항목 | Kinesis | MSK |
|---|---|---|
| 메시지 크기 | 1MB 고정 | 기본 1MB (확장 가능) |
| 구조 | Shard | Partition |
| 확장 | Split / Merge 가능 | 추가만 가능 |
| 보관 기간 | 기본 7일 | 1년 이상 가능 |
| 생태계 | AWS 중심 | Kafka 오픈소스 |
IoT Devices ↓ IoT Core ↓ Kinesis Data Streams ↓ Kinesis Firehose ↓ S3 (Ingestion Bucket) ↓ SQS (optional) ↓ Lambda ↓ Athena ↓ S3 (Reporting Bucket) ↓ QuickSight / Redshift
| 계층 | 서비스 |
|---|---|
| 수집 | IoT Core / Kinesis / MSK |
| 스트리밍 처리 | Kinesis Analytics / Flink |
| 저장 | S3 (Data Lake) |
| SQL 분석 | Athena |
| 웨어하우스 | Redshift |
| BI | QuickSight |
| 분야 | 서비스 |
|---|---|
| Computer Vision | Rekognition / Textract |
| Speech | Transcribe / Polly |
| Language (NLP) | Comprehend / Comprehend Medical / Translate |
| Conversational AI | Lex / Connect |
| Search | Kendra |
| Prediction | Forecast |
| Recommendation | Personalize |
| Custom ML | SageMaker |
AWS ML 서비스는 “완전 관리형 AI API”와 “직접 모델 구축 플랫폼(SageMaker)”로 구분된다.
Rekognition은 “이미지 이해”, Textract는 “문서 이해”에 특화됨.
“텍스트의 의미 이해”가 핵심.
Lex + Connect = 스마트 AI 콜센터 구축 가능
나머지 AI 서비스는 “미리 학습된 모델 제공”,
SageMaker는 “직접 모델을 만드는 플랫폼”.
| 서비스 | 핵심 기능 |
|---|---|
| Rekognition | 이미지/비디오 분석 |
| Textract | 문서 OCR |
| Transcribe | 음성 → 텍스트 |
| Polly | 텍스트 → 음성 |
| Translate | 번역 |
| Lex | 챗봇 |
| Connect | 클라우드 콜센터 |
| Comprehend | 텍스트 의미 분석 |
| Forecast | 시계열 예측 |
| Kendra | 문서 검색 |
| Personalize | 추천 시스템 |
| SageMaker | 직접 ML 구축 |
AWS AI 서비스는 대부분 서버리스 완전 관리형이며, 복잡한 ML 구현 없이 API 호출만으로 사용 가능하다.
Log Group → 애플리케이션 단위 Log Stream → 인스턴스/파일 단위
| 항목 | Logs Agent | Unified Agent |
|---|---|---|
| 로그 수집 | O | O |
| 메트릭 수집 | X | O |
| 상태 | 구형 | 최신 |
Event → Event Bus → Rule → Target
Config → 위반 감지 → EventBridge → SNS / Lambda
| 서비스 | 역할 |
|---|---|
| CloudWatch | 성능 모니터링 |
| CloudTrail | API 로그 |
| Config | 구성 및 규정 |
[CloudWatch] → 성능 [CloudTrail] → 감사 [Config] → 규정 [EventBridge] → 자동화
Management Account (관리 계정)
├── OU (Dev)
│ ├── Account A
│ └── Account B
└── OU (Prod)
├── Account C
└── Account D
Explicit Deny > Allow
| 방식 | 설명 |
|---|---|
| Blocklist | 전체 허용 후 일부 Deny |
| Allowlist | 일부만 허용 (나머지 전부 차단) |
"MFA 없으면 EC2 종료 금지"
| 구분 | Action | ARN |
|---|---|---|
| 버킷 | s3:ListBucket | arn:aws:s3:::bucket |
| 객체 | Get/Put/Delete | arn:aws:s3:::bucket/* |
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-xxxx"
}
}
👉 조직 외 접근 완전 차단
| 구분 | 특징 |
|---|---|
| IAM Role | 권한을 “바꿔서 사용” |
| Resource Policy | 권한을 “추가 허용” |
Role → 기존 권한 포기 Resource Policy → 기존 권한 유지
Effective Permission = IAM Policy ∩ Permission Boundary ∩ SCP
1. Explicit Deny → 무조건 거부 2. Allow → 허용 3. 둘 다 없으면 → 거부
로그인 → 토큰 → 임시 AWS 자격증명
속성 기반 접근 제어 (Tag 기반)
| 종류 | 기술 |
|---|---|
| Preventive | SCP |
| Detective | AWS Config |
Config → 위반 감지 → SNS 알림 → Lambda 자동 수정
[ 사용자 ] ↓ AD / Cognito ↓ IAM Identity Center (SSO) ↓ AWS Organizations ↓ IAM + SCP + Boundary ↓ Control Tower + Guardrails
포인트: Edge-Optimized API Gateway → ACM 인증서는 반드시 us-east-1에서 생성
종류
보안 원칙
📌 적용 위치
WAF는 다음 리소스 앞단에 연결된다:
| 구분 | 목적 | 대표 서비스 | 핵심 포인트 |
|---|---|---|---|
| 전송 중 암호화 | 네트워크 도청 방지 | HTTPS (TLS), ACM | MITM 방지 / Edge는 us-east-1 인증서 |
| 저장 시 암호화 | 디스크 데이터 보호 | S3, EBS, RDS + KMS | Data Key + Envelope Encryption |
| 클라이언트 암호화 | AWS도 복호화 불가 | KMS SDK | 고객 책임 / 최고 보안 수준 |
| 구분 | 특징 | 사용 예 |
|---|---|---|
| Symmetric (AES-256) | 단일 키 / AWS 기본 | S3, EBS, RDS |
| Asymmetric (RSA/ECC) | Public/Private 구조 | 외부 시스템 암호화 |
| Multi-Region | Primary + Replica | Global DB |
| 항목 | SSM Parameter Store | Secrets Manager | ACM |
|---|---|---|---|
| 용도 | 구성값 + 암호 | 비밀 전용 | TLS 인증서 |
| 자동 Rotation | ❌ | ✅ (Lambda) | ✅ (자동 갱신) |
| 비용 | 저렴 | 비쌈 | 무료(공개 인증서) |
| Multi-Region | ❌ | ✅ | CloudFront 글로벌 |
| 서비스 | 보호 계층 | 역할 |
|---|---|---|
| AWS WAF | Layer 7 | SQLi, XSS 방어 |
| AWS Shield | Layer 3/4 | DDoS 보호 |
| Firewall Manager | 관리 계층 | Org 전체 정책 중앙 관리 |
| 서비스 | 무엇을 분석? | 목적 |
|---|---|---|
| GuardDuty | CloudTrail, VPC Flow, DNS | 위협 탐지 |
| Inspector | EC2, ECR, Lambda | 취약점 분석 |
| Macie | S3 데이터 | PII 탐지 |
VPC 전체를 보호하는 관리형 Layer 3 ~ Layer 7 방화벽 서비스
기존 Security Group이나 NACL이 개별 인스턴스 또는 서브넷 수준의 제어를 담당했다면, Network Firewall은 VPC 경계에서 모든 트래픽을 중앙 집중적으로 검사한다.
VPC가 커지고, Transit Gateway, Direct Connect, Site-to-Site VPN, VPC Peering 등으로 네트워크가 확장되면 트래픽 흐름이 복잡해진다.
이 모든 경로를 하나의 중앙 방화벽 정책으로 통제하기 위해 AWS Network Firewall을 사용한다.
즉, VPC 내부뿐 아니라 하이브리드 연결까지 모두 검사 가능하다.
AWS Network Firewall은 내부적으로 Gateway Load Balancer(GWLB) 기반으로 동작한다.
Internet │ Internet Gateway │ Network Firewall (GWLB 기반 검사) │ Private Subnet / Application
트래픽은 GWLB를 통해 방화벽 엔진으로 전달되고, 검사 후 원래 경로로 반환된다. 완전 관리형이므로 사용자가 인프라를 직접 운영할 필요가 없다.
Layer 3 (IP 기반 필터링)
Layer 4 (포트 / 프로토콜)
Layer 7 (애플리케이션 계층)
규칙에 따라 트래픽을 다음과 같이 처리한다:
단순 차단뿐 아니라 모니터링 전용 모드 운영도 가능하다.
Active flow inspection을 통해 네트워크 위협을 탐지하고 차단한다.
온프레미스 IDS/IPS 장비와 동일한 수준의 보호 기능을 제공한다.
규칙 매칭 로그는 다음으로 전송 가능하다:
SIEM 시스템과 연동하여 중앙 보안 관제 체계 구성 가능.
AWS Firewall Manager와 통합하면 다중 계정 / 다중 VPC 환경에서 조직 전체에 동일 정책을 적용할 수 있다.
| 구분 | Security Group | NACL | Network Firewall |
|---|---|---|---|
| 레벨 | 인스턴스 | 서브넷 | VPC 경계 |
| Stateful | Yes | No | Yes |
| L7 검사 | No | No | Yes |
| 중앙 정책 관리 | 제한적 | 제한적 | 가능 |
AWS Network Firewall은 VPC 경계에서 L3~L7 트래픽을 검사하고, 중앙 정책 관리와 침입 방지 기능을 제공하는 관리형 네트워크 방화벽이다.
Security Group과 NACL은 내부 보안 계층, Network Firewall은 VPC 전체를 보호하는 상위 계층 방어선이다.
Disaster Recovery는 재해가 발생했을 때 서비스를 복구하고 비즈니스를 지속할 수 있도록 준비하는 전략이다.
정상 운영 │ ├─ 장애 예방 ├─ 데이터 보호 ├─ 장애 감지 └─ 복구 및 전환
👉 핵심은 “장애를 막는 것”만이 아니라 장애가 나도 서비스가 다시 살아나게 만드는 것
| 개념 | 설명 | 핵심 포인트 |
|---|---|---|
| 재해(Disaster) | 사업 지속성이나 재정에 큰 악영향을 주는 장애 이벤트 | 리전 장애, 데이터 손상, 네트워크 분리, 랜섬웨어 등 포함 |
| 재해 복구(DR) | 장애 발생 시 서비스를 복원하는 절차와 전략 | 백업, 복제, 페일오버, 자동화가 모두 포함됨 |
| 온프레미스 → 온프레미스 | 전통적인 DR 방식 | 비용이 크고 관리 복잡도도 높음 |
| 온프레미스 → 클라우드 | 하이브리드 DR | 기존 환경을 유지하면서 AWS를 DR 사이트로 활용 |
| 클라우드 리전 A → 리전 B | 멀티 리전 DR | 클라우드 네이티브 DR의 대표 패턴 |
| 기준 | 의미 | 영향 |
|---|---|---|
| RPO | 얼마나 최신 데이터까지 복구해야 하는가 | 백업 주기, 복제 방식 결정 |
| RTO | 얼마나 빨리 서비스를 복구해야 하는가 | 예비 인프라 규모와 자동화 수준 결정 |
| 비용 | 평상시 유지 비용 허용 범위 | Backup / Pilot Light / Warm Standby / Hot Site 선택 |
| 복잡도 | 운영팀이 감당할 수 있는 설계 수준 | 멀티 리전, Active-Active 설계 여부에 영향 |
RPO와 RTO는 재해 복구 전략을 설계할 때 가장 먼저 결정해야 하는 기준이다.
데이터 손실 관점 -> RPO 서비스 중단 관점 -> RTO
👉 DR 설계는 결국 “얼마나 잃어도 되는가”와 “얼마나 빨리 살아나야 하는가”를 정하는 일
RPO는 재해 발생 시점 기준으로 얼마 전 시점까지의 데이터는 반드시 복구되어야 하는지를 의미한다.
RTO는 재해 발생 후 얼마 안에 서비스를 다시 정상화해야 하는지를 의미한다.
| 항목 | RPO | RTO |
|---|---|---|
| 관점 | 데이터 손실 | 서비스 다운타임 |
| 질문 | 얼마나 최근 데이터까지 복구해야 하는가? | 얼마나 빨리 서비스가 살아나야 하는가? |
| 줄이는 방법 | 복제 주기 단축, 지속 복제 | 자동화, 예비 인프라 상시 운영 |
재해 복구 전략은 보통 비용과 복구 속도의 트레이드오프로 나뉜다.
저비용 / 느린 복구
Backup and Restore
↓
Pilot Light
↓
Warm Standby
↓
Multi Site / Hot Site
고비용 / 빠른 복구
👉 DR 전략은 기술 선택이 아니라 비즈니스 요구사항에 맞춘 비용-복구 속도 균형
| 전략 | 평상시 비용 | RPO/RTO | 핵심 특징 |
|---|---|---|---|
| Backup and Restore | 낮음 | 높음 / 높음 | 백업만 보관, 장애 시 재구성 |
| Pilot Light | 중간 이하 | 중간 / 중간 | 핵심 시스템만 상시 운영 |
| Warm Standby | 중간 이상 | 낮음 / 낮음 | 전체 시스템 축소판 운영 |
| Multi Site / Hot Site | 높음 | 매우 낮음 / 매우 낮음 | 거의 즉시 전환 가능한 운영 환경 유지 |
| 구조 | 설명 | 예시 |
|---|---|---|
| Active-Passive | 평소에는 한쪽만 서비스하고 장애 시 다른 쪽으로 전환 | Pilot Light, Warm Standby |
| Active-Active | 여러 사이트가 동시에 트래픽을 처리 | Multi Site / Hot Site |
Backup and Restore는 백업만 보관해 두고 재해가 발생하면 그때 인프라와 데이터를 다시 복구하는 전략이다.
정기 백업 │ 재해 발생 │ 새 인프라 생성 │ 백업 복원
👉 “평소엔 거의 안 들고, 장애 시 다시 만든다”
| 장점 | 단점 |
|---|---|
| 평상시 비용이 매우 낮음 | 복구 시간이 길다 |
| 구조가 단순함 | 자동화가 부족하면 운영 실수가 생길 수 있음 |
| 비핵심 시스템에 적합 | 최신 데이터 보장이 약함 |
Pilot Light는 핵심 데이터와 최소한의 코어 시스템만 클라우드에서 계속 유지하다가, 장애 시 전체 시스템으로 빠르게 확장하는 전략이다.
평상시 ├─ 핵심 DB / 복제 └─ 최소 코어 서비스 재해 발생 └─ 애플리케이션 계층 확장
👉 “불씨만 살려 두었다가, 필요할 때 크게 키우는 전략”
Warm Standby는 전체 시스템을 축소판 형태로 계속 실행해 두었다가 재해가 발생하면 프로덕션 규모로 빠르게 확장하는 전략이다.
평상시 ├─ 작은 규모의 전체 시스템 운영 └─ 데이터 복제 지속 재해 발생 └─ Auto Scaling으로 생산 규모까지 확대
👉 “작게 계속 돌리다가, 장애 시 크게 늘리는 전략”
| 구성요소 | 설명 | 포인트 |
|---|---|---|
| 애플리케이션 서버 | 축소된 규모로 상시 실행 | 완전 정지는 아님 |
| 데이터 계층 | 지속 복제 또는 스탠바이 유지 | 낮은 RPO 확보에 중요 |
| ELB / Route 53 | 전환용 엔드포인트 준비 | 페일오버 속도에 직접 영향 |
| Auto Scaling | 장애 시 생산 규모로 빠르게 확장 | RTO 감소 핵심 |
| 장점 | 단점 |
|---|---|
| RTO가 비교적 짧다 | 평상시 비용이 지속 발생 |
| 실제 복구 절차가 단순해진다 | 운영/동기화 관리가 필요함 |
| 대부분의 구성요소가 이미 살아 있음 | 멀티 리전 설계가 복잡해질 수 있음 |
Multi Site / Hot Site는 여러 사이트가 거의 생산 환경 수준으로 동시에 준비되어 있어, 장애 시 즉시 또는 매우 빠르게 전환할 수 있는 전략이다.
Site A (Active) │ 동시 운영 / 복제 │ Site B (Active 또는 즉시 승격 가능)
👉 “비싸지만 가장 빨리 살아나는 전략”
All AWS Multi Region은 온프레미스 대신 AWS 여러 리전을 활용해 재해 복구와 고가용성을 설계하는 방식이다.
AWS Region A │ 복제 AWS Region B
👉 “클라우드 안에서 클라우드로 복구하는 구조”
| 서비스 | 역할 |
|---|---|
| Route 53 | DNS 기반 트래픽 전환 |
| Aurora Global Database | 리전 간 DB 복제 |
| S3 CRR | 리전 간 객체 복제 |
| CloudFormation | 재생성 자동화 |
| AWS Backup | 리전 간 백업 복사 |
재해 복구는 백업 서비스 하나만 있다고 완성되지 않는다. 백업, 고가용성, 복제, 자동화, 테스트가 함께 가야 한다.
백업 + 복제 + 전환 + 자동화 + 테스트
= 실제 DR
👉 DR은 “기능”이 아니라 운영 체계 전체
DMS는 데이터베이스를 AWS로 또는 AWS 간에 마이그레이션하고, 변경 데이터를 지속 복제할 수 있게 해주는 서비스다.
Source DB │ Full Load + CDC ▼ DMS Replication Instance ▼ Target DB
👉 “서비스 중단을 최소화하면서 DB를 옮기고 싶을 때 가장 먼저 떠올리는 서비스”
| 기능 | 설명 | 포인트 |
|---|---|---|
| Full Load | 기존 데이터를 한 번에 적재 | 초기 이전 단계 |
| CDC | 변경 데이터 지속 복제 | 다운타임 최소화 핵심 |
| 동종 마이그레이션 | 예: Oracle -> Oracle | 비교적 단순 |
| 이기종 마이그레이션 | 예: SQL Server -> Aurora | 보통 SCT 필요 |
DMS는 다양한 소스와 타깃을 지원하며, 데이터베이스뿐 아니라 분석/스트리밍 계층으로도 연결할 수 있다.
즉, DMS는 단순히 “DB -> DB” 도구가 아니라 DB -> 분석/스트리밍/스토리지 계층으로 이어지는 데이터 이동 도구로도 볼 수 있다.
SCT는 소스 DB와 타깃 DB의 엔진이 다를 때 스키마를 변환해 주는 도구다.
SCT -> 스키마 변환 DMS -> 데이터 이동 및 지속 복제
👉 “구조는 SCT, 데이터는 DMS”
| 상황 | SCT 필요 여부 |
|---|---|
| PostgreSQL -> PostgreSQL | 보통 불필요 |
| MySQL -> Aurora MySQL | 대체로 불필요 또는 최소 |
| SQL Server -> Aurora PostgreSQL | 필요 가능성 높음 |
| Oracle -> PostgreSQL | 매우 중요 |
지속 복제는 초기 이전 후에도 소스 데이터의 변경 사항을 계속 타깃으로 반영하는 방식이다.
SCT -> 스키마 준비 │ Full Load │ CDC │ Cutover
👉 “한 번 옮기고 끝”이 아니라 실시간에 가깝게 따라오게 만드는 과정
Aurora MySQL로 이전할 때는 다운타임 허용 범위와 데이터 규모에 따라 방법을 선택해야 한다.
| 방법 | 설명 | 특징 |
|---|---|---|
| Snapshot Restore | RDS 스냅샷을 이용해 Aurora 생성 | 단순하지만 다운타임 발생 가능 |
| Aurora Replica | Aurora Read Replica 생성 후 승격 | 지연이 0에 가까워지면 컷오버 가능 |
| DMS | 지속 복제 후 컷오버 | 운영 지속성이 좋음 |
AWS는 단순히 “클라우드로 새로 만드는 곳”이 아니라, 온프레미스 환경을 점진적으로 이전하고 확장하는 전략적 플랫폼으로 활용할 수 있다.
온프레미스
├─ 서버
├─ VM
├─ DB
└─ 파일 데이터
│
▼
AWS
👉 핵심은 “한 번에 완전 전환”보다 단계적 이전과 하이브리드 운영
| 서비스 | 역할 | 사용 예시 |
|---|---|---|
| VM Import/Export | VM 이미지 이동 | 레거시 VM 이전 |
| DMS | DB 마이그레이션 | 온프레미스 DB -> RDS |
| Application Discovery Service | 사전 조사 | 종속성 파악 |
| MGN | 서버 리호스팅 | Lift-and-shift |
| Storage Gateway / DataSync | 데이터 이동 | 파일/볼륨 이전 |
AWS Backup은 여러 AWS 서비스의 백업을 중앙에서 일관되게 관리하는 완전 관리형 백업 서비스다.
AWS Backup ├─ Backup Plan ├─ Backup Vault ├─ Schedule ├─ Retention └─ Cross-Region / Cross-Account Copy
👉 “백업 기능을 리소스별로 흩어 놓지 않고 중앙에서 묶어 관리하는 서비스”
| 서비스 | 지원 여부 |
|---|---|
| EC2 / EBS | 지원 |
| S3 | 지원 |
| RDS / Aurora / DynamoDB | 지원 |
| DocumentDB / Neptune | 지원 |
| EFS / FSx | 지원 |
| Storage Gateway | 지원 |
Backup Vault Lock은 백업 데이터를 WORM(Write Once Read Many) 방식으로 보호해 삭제나 변경을 매우 어렵게 만드는 기능이다.
Backup Vault
└─ Vault Lock
└─ 삭제 / 보존기간 변경 제한
👉 “백업이 있어도 지워지면 소용없기 때문에, 백업 자체를 잠그는 것”
AWS Application Discovery Service는 온프레미스 서버의 사용량, 구성, 종속성, 네트워크 연결을 조사해 마이그레이션 계획을 세우도록 돕는 서비스다.
온프레미스 서버 스캔 │ 구성 / 성능 / 종속성 수집 │ Migration Hub에서 분석
👉 “옮기기 전에 먼저 구조를 이해하게 해주는 서비스”
MGN은 온프레미스나 다른 클라우드의 서버를 AWS로 리호스팅(Lift-and-Shift)하는 데 특화된 서비스다.
Source Server │ 복제 에이전트 │ 스테이징 영역 │ Cutover │ AWS Production
👉 “서버 자체를 AWS로 옮기고 싶을 때 가장 직접적인 도구”
| 서비스 | 대상 | 주 용도 |
|---|---|---|
| DMS | 데이터베이스 | DB 데이터 복제/마이그레이션 |
| MGN | 서버 전체 | 서버 리호스팅 |
대규모 데이터 이전은 단순 속도 비교가 아니라 데이터 양, 전송 기간, 지속성, 비용, 일회성 여부를 함께 보고 결정해야 한다.
작은 데이터 -> 인터넷 / VPN 지속 연결 -> VPN / DX / DataSync / DMS 대용량 일회성 -> Snowball
👉 “데이터셋과 시간 제약에 따라 답이 달라진다”
| 방식 | 장점 | 주의사항 |
|---|---|---|
| 공용 인터넷 / VPN | 빠르게 시작 가능 | 대용량 전송엔 느릴 수 있음 |
| Direct Connect | 예측 가능한 전용 회선 | 구축 리드타임 존재 |
| Snowball | 대용량 일회성 이전에 강함 | 지속 복제용은 아님 |
| DataSync | 대량 데이터 동기화 자동화 | 네트워크 연결 필요 |
| DMS | DB 지속 복제 | 범용 파일 전송용은 아님 |
VMware Cloud on AWS는 온프레미스 VMware 환경을 AWS 위로 확장해, 익숙한 VMware 운영 모델을 유지하면서 클라우드 이점을 얻는 서비스다.
온프레미스 VMware
│
├─ 확장
▼
VMware Cloud on AWS
│
└─ AWS 서비스 연동
👉 “운영 방식은 VMware, 인프라 확장은 AWS”
| 사용 사례 | 설명 |
|---|---|
| 데이터센터 확장 | 추가 서버 자원을 AWS에서 확보 |
| 워크로드 마이그레이션 | VMware 기반 애플리케이션을 자연스럽게 이전 |
| 재해 복구 | 클라우드에 빠른 복구 사이트 확보 |
| 하이브리드 운영 | 온프레미스와 클라우드를 함께 사용 |
Disaster Recovery / Migration ├─ RPO / RTO ├─ Backup and Restore ├─ Pilot Light ├─ Warm Standby ├─ Multi Site / Hot Site ├─ Multi Region ├─ DMS / SCT / CDC ├─ Aurora Migration ├─ AWS Backup / Vault Lock ├─ Application Discovery / MGN ├─ Large Data Transfer └─ VMware Cloud on AWS
AWS 이벤트 처리는 어떤 사건이 발생했을 때 해당 사건을 감지하고, 다른 서비스가 자동으로 반응하도록 연결하는 방식이다.
이벤트 발생 │ ├─ 큐(SQS) ├─ 토픽(SNS) ├─ 이벤트 버스(EventBridge) └─ 함수 실행(Lambda)
👉 핵심은 “요청이 오면 즉시 처리”가 아니라 이벤트를 안전하게 전달하고, 필요할 때 확장 가능하게 처리하는 것
| 구성요소 | 역할 | 핵심 포인트 |
|---|---|---|
| Lambda | 이벤트 발생 시 코드 실행 | 짧고 빠른 처리에 적합 |
| SQS | 메시지를 보관하고 소비자가 나중에 처리 | 버퍼링, 재시도, 백프레셔 흡수 |
| SNS | 이벤트를 여러 구독자에게 동시에 전달 | Fan-out 구조의 핵심 |
| EventBridge | AWS/SaaS/사용자 정의 이벤트 라우팅 | 정교한 필터링과 다중 타깃 연결 |
| S3 Event | S3 객체 이벤트 발생 | 업로드, 삭제, 복원 등에 반응 |
Lambda는 SQS나 SNS와 결합할 때 가장 자주 쓰이는 이벤트 소비자다. 하지만 SQS와 연결할 때와 SNS와 연결할 때의 처리 방식은 다르다.
SQS -> Lambda (polling) SNS -> Lambda (push)
👉 둘 다 “이벤트 -> 함수 실행”처럼 보이지만 전달 방식과 실패 처리 전략이 다르다
SQS는 큐에 메시지를 저장하고, Lambda 서비스가 큐를 폴링해서 메시지를 읽어 처리한다.
| 항목 | 설명 |
|---|---|
| 전달 방식 | Lambda 서비스가 SQS를 폴링 |
| 장점 | 메시지 보관, 재시도, 트래픽 버퍼링 가능 |
| 실패 처리 | 다시 큐에 남아 재시도되거나 DLQ로 이동 |
| 적합한 경우 | 비동기 처리, 작업 지연 허용, 백프레셔 흡수 필요 시 |
FIFO 큐는 메시지 순서를 보장해야 할 때 사용한다.
따라서 FIFO는 “무조건 더 좋은 큐”가 아니라 순서가 정말 중요한 경우에만 선택해야 하는 큐다.
SNS는 메시지를 비동기적으로 Lambda에 직접 전달한다.
| 항목 | Lambda + SQS | Lambda + SNS |
|---|---|---|
| 전달 방식 | 큐 폴링 | 비동기 푸시 |
| 메시지 저장 | 큐에 보관 | SNS 자체는 큐처럼 장기 보관 개념이 아님 |
| 적합한 경우 | 안정적 비동기 처리 | 빠른 알림성 이벤트 전달 |
Fan-out Pattern은 하나의 이벤트를 여러 소비자에게 동시에 전달하는 구조다.
Producer │ SNS Topic ├─ SQS A ├─ SQS B └─ Lambda C
직접 SDK로 여러 큐에 각각 전송하면, 중간 실패 시 일부 큐만 메시지를 받는 문제가 생길 수 있다. 따라서 SNS를 중앙 분배 계층으로 두고 SQS를 구독자로 붙이는 구조가 더 안정적이다.
S3 Event Notification은 객체 생성, 삭제, 복원 같은 이벤트가 발생했을 때 다른 서비스에 알림을 보내는 기능이다. 여기에 EventBridge를 결합하면 훨씬 더 정교한 이벤트 처리 구조를 만들 수 있다.
S3 Event ├─ Lambda / SNS / SQS └─ EventBridge -> 다양한 서비스
👉 “S3가 직접 알려줄 수도 있고, EventBridge를 통해 더 넓게 퍼뜨릴 수도 있다”
| 항목 | 설명 | 포인트 |
|---|---|---|
| 지원 이벤트 | 객체 생성, 삭제, 복원, 복제본 생성 등 | 버킷 이벤트에 반응 가능 |
| 필터 | 이름 기반 필터(prefix/suffix) | 특정 파일 패턴만 처리 가능 |
| 대표 대상 | Lambda, SNS, SQS | 썸네일 생성 같은 자동화에 적합 |
| 특징 | 간단하고 직관적 | 전달까지 수초~수분 걸릴 수 있음 |
S3 이벤트를 EventBridge로 보내면 더 정교한 규칙과 더 많은 타깃을 활용할 수 있다.
| 방식 | 장점 | 적합한 경우 |
|---|---|---|
| S3 Event Notification | 구성이 단순하고 빠름 | 기본 자동화, 단일 후처리 |
| S3 + EventBridge | 필터링/확장성/타깃 다양성 우수 | 복잡한 이벤트 라우팅, 다중 대상 처리 |
EventBridge는 애플리케이션 이벤트뿐 아니라 AWS API 호출 이벤트에도 반응할 수 있다. 이때 중요한 연결 고리가 CloudTrail이다.
API Call │ CloudTrail │ EventBridge Rule │ Lambda / SNS / SSM / 기타 서비스
👉 “누가 무엇을 했는지 기록하고, 그 기록에 자동으로 반응하는 구조”
API Gateway와 Kinesis Data Streams를 연결하면 HTTP 요청을 받아 실시간 스트리밍 파이프라인으로 넣는 구조를 만들 수 있다.
Client Request │ API Gateway │ Kinesis Data Streams │ Consumer / Analytics / Storage
👉 “API로 받은 이벤트를 바로 스트림으로 흘려보내는 구조”
캐싱 전략은 같은 데이터를 더 빠르고 더 저렴하게 반복 제공하기 위해 어느 계층에 캐시를 둘 것인지 설계하는 것이다.
사용자 가까운 쪽
CloudFront
↓
API Gateway Cache
↓
Redis / DAX
↓
DB / 원본 저장소
👉 “캐시는 어디에 둘지에 따라 속도, 비용, 운영 복잡도가 달라진다”
| 계층 | 설명 | 특징 |
|---|---|---|
| CloudFront | 전 세계 엣지 캐시 | 정적/일부 동적 콘텐츠 가속 |
| API Gateway Cache | API 응답 캐시 | 리전 서비스, API 응답 최적화 |
| ElastiCache Redis/Memcached | 애플리케이션 인메모리 캐시 | 유연성 높음, 앱 로직과 함께 설계 필요 |
| DAX | DynamoDB 전용 캐시 | DynamoDB 읽기 성능 최적화 |
| 애플리케이션 내부 캐시 | EC2/Lambda 내부 캐싱 | 구현 자유도 높음 |
AWS에서 IP 차단은 한 곳에서만 처리하는 것이 아니라 어느 계층에서 막을 것인지를 먼저 결정해야 한다.
네트워크 계층 -> NACL 인스턴스 허용 -> Security Group 애플리케이션 계층 -> WAF 국가 단위 차단 -> Geo Restriction
👉 “IP 차단은 어디서 보느냐에 따라 답이 달라진다”
| 구성요소 | 가능한 일 | 제한 |
|---|---|---|
| NACL | IP 차단 규칙 생성 가능 | 서브넷 레벨, Stateless |
| ALB Security Group | 허용 규칙 기반 접근 제어 | 차단 규칙은 직접 없음 |
| NLB | 구성에 따라 SG 사용 제약 고려 | L4 중심 설계 |
| EC2 Security Group | 허용 규칙만 설정 가능 | 명시적 차단 불가 |
| OS 방화벽 | 인스턴스 내부 차단 가능 | 운영 부담, CPU 비용 |
| WAF | IP, 패턴, 요청 수 기반 차단 가능 | 추가 비용 발생 |
| CloudFront Geo Restriction | 국가 단위 차단 | 세부 애플리케이션 패턴 제어는 제한 |
HPC(High Performance Computing)는 대규모 연산을 매우 빠르게 처리하기 위해 고성능 컴퓨팅, 네트워킹, 스토리지를 조합하는 방식이다.
Compute + Network + Storage + Orchestration
= HPC
👉 “HPC는 서비스 하나를 고르는 문제가 아니라 성능 중심 아키텍처를 조합하는 문제”
HPC는 계산만 빠르면 되는 것이 아니라, 대용량 데이터를 얼마나 빨리 옮기고 읽고 쓰느냐도 매우 중요하다.
| 서비스 | 설명 | 적합한 경우 |
|---|---|---|
| Direct Connect | 전용 물리 회선으로 대용량 데이터 전송 | 지속적이고 안정적인 대량 전송 |
| Snowball / Snowmobile | 물리 장비 기반 대용량 전송 | 일회성 대규모 데이터 이동 |
| DataSync | 온프레미스와 AWS 간 고속 동기화 | NFS, SMB, S3, EFS, FSx 연계 |
| 분류 | 서비스 | 특징 |
|---|---|---|
| Instance-attached | EBS | 영구 블록 스토리지 |
| Instance-attached | Instance Store | 매우 높은 IOPS, 데이터 영속성 약함 |
| Network Storage | S3 | 대규모 객체 저장 |
| Network Storage | EFS | 공유 파일 시스템 |
| HPC 전용 | FSx for Lustre | 고성능 병렬 파일 시스템, S3와 연계 가능 |
HPC에서는 어떤 인스턴스를 쓰느냐뿐 아니라, 인스턴스 간 통신 속도와 지연 시간이 매우 중요하다.
EC2 Instance ├─ CPU / GPU / Memory 최적화 ├─ Placement Group ├─ ENA └─ EFA
👉 “HPC에서는 서버 성능만큼 서버 사이 통신 성능이 중요하다”
| 구성요소 | 설명 | 포인트 |
|---|---|---|
| EC2 | CPU/GPU/메모리 최적화 인스턴스 선택 | 워크로드 성격에 맞는 타입 중요 |
| Spot Instance | 저비용 대규모 연산 자원 | 중단 허용 가능한 작업에 적합 |
| Cluster Placement Group | 최고 수준 네트워크 근접성 확보 | 노드 간 통신 집중 작업에 유리 |
| 항목 | 의미 | 핵심 포인트 |
|---|---|---|
| ENI | Elastic Network Interface | 기본 네트워크 인터페이스 개념 |
| ENA | Elastic Network Adapter | 높은 대역폭과 높은 PPS 제공 |
| EFA | Elastic Fabric Adapter | HPC용 초고성능 네트워크 인터페이스 |
대규모 연산은 자원만 많다고 끝나지 않는다. 작업을 어떻게 예약하고, 클러스터를 어떻게 자동 구성하느냐가 생산성을 결정한다.
AWS Batch는 대규모 배치 작업을 큐에 넣으면, 필요한 EC2/Spot 자원을 자동으로 준비해 실행해 주는 서비스다.
AWS ParallelCluster는 오픈소스 기반 HPC 클러스터 배포 도구다.
EC2 인스턴스는 기본적으로 하나의 AZ에서 실행되기 때문에, 별도 구성을 하지 않으면 고가용성이 자동으로 보장되지 않는다.
EC2 한 대 └─ 장애 시 중단 EC2 여러 대 + ELB + ASG └─ 장애 시 자동 우회 / 교체
👉 “EC2는 기본적으로 고가용하지 않다. 사용자가 고가용 구조를 만들어야 한다.”
| 구성요소 | 역할 | 포인트 |
|---|---|---|
| 다중 AZ 배치 | 장애 도메인 분산 | 한 AZ 장애가 전체 장애로 이어지지 않게 함 |
| ELB | 정상 인스턴스로 트래픽 분산 | 헬스 체크 기반 우회 |
| ASG | 비정상 인스턴스 자동 교체 | 자동 복구의 핵심 |
| CloudWatch Events / Alarm | 이상 징후 감지 | 자동 복구나 알림 트리거 |
| Elastic IP | 고정 퍼블릭 IP 유지 | 특정 구조에서는 Role과 자동 전환 설계 필요 |
AWS Event / Caching / HPC / HA ├─ Lambda + SQS / FIFO / SNS ├─ Fan-out Pattern ├─ S3 Event Notification ├─ EventBridge + CloudTrail ├─ API Gateway -> Kinesis ├─ CloudFront / API Gateway / Redis / DAX 캐시 ├─ NACL / SG / WAF / Geo Restriction ├─ HPC Data Transfer / Storage ├─ ENA / EFA / Placement Group ├─ AWS Batch / ParallelCluster └─ EC2 HA with ELB / ASG / CloudWatch
CloudFormation은 AWS 인프라를 선언적으로 정의하고, 그 정의대로 리소스를 자동 생성·수정·삭제하는 Infrastructure as Code 서비스다.
Template │ CloudFormation Stack │ AWS Resources ├─ Security Group ├─ EC2 Instance ├─ S3 Bucket └─ Load Balancer
👉 핵심은 “수동으로 하나씩 만드는 것”이 아니라 원하는 인프라 상태를 코드로 선언하고 재현하는 것
| 항목 | 설명 | 핵심 포인트 |
|---|---|---|
| 선언적 방식 | 원하는 최종 상태를 적는다 | 순서를 일일이 코딩하지 않아도 됨 |
| 재현성 | 같은 템플릿으로 같은 인프라 반복 생성 | 환경 간 차이 감소 |
| 버전 관리 | 코드 저장소에서 변경 이력 추적 | 코드 리뷰와 감사에 유리 |
| 자동화 | 배포와 변경을 자동화 가능 | 대규모 운영에 필수 |
| 관점 | 장점 | 설명 |
|---|---|---|
| Cost | 비용 구조 파악이 쉬움 | 스택 단위로 리소스를 묶어 관리하고 태그 전략과 함께 쓰기 좋다 |
| Productivity | 빠른 생성/파괴/재배포 가능 | 실험 환경을 쉽게 만들고 지울 수 있다 |
| Consistency | 같은 설계를 여러 환경에 반복 적용 | 리전, 계정, 환경이 달라도 템플릿 기준으로 일관성 유지 |
| Extensibility | 커스텀 리소스 확장 가능 | 기본 지원이 없는 기능도 확장 가능 |
CloudFormation에서 Template는 설계도이고, Stack은 그 설계도로 실제 만들어진 AWS 리소스 묶음이다.
CloudFormation은 스택 내부 리소스 간 관계를 시각적으로 파악하는 데도 유용하다.
아래처럼 템플릿의 Resources 섹션에 EC2 인스턴스를 선언하면, 그 정의를 바탕으로 실제 리소스를 생성할 수 있다.
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: us-east-1a
ImageId: ami-a4c7edb2
InstanceType: t2.micro
SES와 Pinpoint는 모두 메시지 전달과 커뮤니케이션에 관련된 서비스지만, 역할과 추상화 수준이 다르다.
SES -> 이메일 전송/수신 Pinpoint -> 다채널 커뮤니케이션 / 세분화 / 캠페인
👉 SES는 “보내는 기술”, Pinpoint는 누구에게 어떤 메시지를 어떤 채널로 보낼지까지 포함한 운영 도구
SES는 전 세계로 이메일을 안전하고 대규모로 송수신할 수 있는 완전 관리형 이메일 서비스다.
| 기능 | 설명 |
|---|---|
| 발송 방식 | SES API, SMTP |
| 지원 범위 | 아웃바운드 / 인바운드 이메일 |
| 보안 | DKIM, SPF 등 이메일 신뢰성 관련 기능 제공 |
| 통계 | 열람, 반송, 피드백 추적 가능 |
Pinpoint는 고객에게 이메일, SMS, 푸시 알림, 음성, 인앱 메시지를 전달할 수 있는 확장형 양방향 커뮤니케이션 서비스다.
| 서비스 | 핵심 역할 | 적합한 경우 |
|---|---|---|
| SES | 이메일 발송/수신 | 트랜잭션 메일, 시스템 알림 메일 |
| SNS | Pub/Sub 기반 메시지 전달 | 서비스 간 알림, 이벤트 팬아웃 |
| Pinpoint | 다채널 마케팅/고객 커뮤니케이션 | 캠페인, 개인화, 세그먼트 메시징 |
AWS Systems Manager(SSM)는 EC2와 온프레미스 서버를 중앙에서 운영, 패치, 접속, 자동화할 수 있게 해주는 운영 관리 서비스 모음이다.
Systems Manager ├─ Session Manager ├─ Run Command ├─ Patch Manager ├─ Maintenance Windows └─ Automation
👉 SSM은 단일 기능이 아니라 “서버 운영을 중앙에서 관리하는 제어판”에 가깝다
Session Manager는 SSH 키나 Bastion Host 없이 EC2 및 온프레미스 서버에 보안 셸 세션을 여는 기능이다.
| 항목 | Session Manager | 전통적 SSH/Bastion |
|---|---|---|
| 접속 방식 | 에이전트 기반 세션 | 네트워크 포트와 키 기반 |
| 포트 22 | 불필요 | 보통 필요 |
| 로그 기록 | 중앙 저장 가능 | 별도 구성 필요 |
Run Command는 여러 인스턴스에 스크립트나 명령을 원격으로 실행하는 기능이다.
Patch Manager는 운영체제와 애플리케이션 패치를 자동화하는 기능이다.
Maintenance Windows는 패치, 재부팅, 드라이버 업데이트, 소프트웨어 설치 같은 작업이 수행될 시간 창을 정의하는 기능이다.
즉, 운영 작업을 “아무 때나”가 아니라 정해진 유지보수 창 안에서 통제된 방식으로 실행하게 만들어 준다.
Automation은 운영 Runbook을 코드처럼 실행해 반복 작업을 자동화하는 기능이다.
이 기능은 EventBridge, AWS Config, 콘솔, SDK, CLI 등과 연계해 트리거할 수 있다.
Cost Explorer는 AWS 비용과 사용량을 시간, 서비스, 태그, 리소스 기준으로 시각화하고 분석할 수 있는 비용 관리 도구다.
Usage Data │ Cost Explorer ├─ 시각화 ├─ 분석 ├─ 예측 └─ 절감 전략
👉 “얼마를 썼는가”를 넘어서 왜 썼고 앞으로 얼마나 쓸 것인가까지 보는 도구
| 기능 | 설명 |
|---|---|
| 비용 시각화 | 시간 흐름에 따른 비용/사용량 확인 |
| 사용자 정의 보고서 | 태그, 서비스, 계정 기준 분석 |
| 예측 | 과거 데이터를 바탕으로 미래 비용 추정 |
| 절감형 플랜 분석 | Savings Plans/RI 최적화에 도움 |
Elastic Transcoder는 S3에 저장된 미디어 파일을 다양한 디바이스가 재생 가능한 형식으로 자동 변환하는 관리형 서비스다.
Input Bucket │ Transcoding Pipeline │ Output Bucket │ PC / Mobile / Tablet / 기타 디바이스
👉 “원본 미디어를 다양한 소비 환경에 맞게 자동 변환하는 서비스”
AWS Batch는 대규모 배치 작업을 큐에 넣으면, 필요한 컴퓨팅 자원을 자동으로 준비하고 작업을 실행·종료해 주는 관리형 배치 처리 서비스다.
Job Queue │ AWS Batch │ EC2 / Spot / Container Runtime │ Batch Job 실행 후 종료
👉 “배치 작업에만 집중하면 나머지 자원 준비와 확장은 AWS가 맡는 구조”
| 항목 | AWS Batch | Lambda |
|---|---|---|
| 실행 시간 | 장시간 작업 가능 | 최대 15분 제한 |
| 런타임 자유도 | 컨테이너 기반으로 매우 유연 | 지원 런타임 및 함수 모델 중심 |
| 스토리지 | EC2/EBS 등 활용 가능 | 디스크 공간 제한적 |
| 적합한 작업 | 대규모 배치, 장시간 처리 | 짧은 이벤트 처리 |
Amazon AppFlow는 SaaS 애플리케이션과 AWS 서비스 간 데이터를 연결하고 이동시키는 완전 관리형 통합 서비스다.
SaaS Source │ AppFlow │ S3 / Redshift / 기타 대상
👉 “애플리케이션 간 데이터 이동을 직접 코드로 짜지 않게 해주는 서비스”
| 구분 | 예시 |
|---|---|
| Source | Salesforce, SAP, Zendesk, Slack, ServiceNow |
| Destination | S3, Redshift, Snowflake, Salesforce 등 |
CloudFormation / Ops / Integration ├─ CloudFormation │ ├─ Template │ ├─ Stack │ └─ IaC ├─ SES / Pinpoint │ ├─ Email │ └─ Multi-channel Communication ├─ Systems Manager │ ├─ Session Manager │ ├─ Run Command │ ├─ Patch Manager │ ├─ Maintenance Windows │ └─ Automation ├─ Cost Explorer ├─ Elastic Transcoder ├─ AWS Batch └─ AppFlow
AWS Well-Architected는 좋은 클라우드 아키텍처를 설계하고 운영하기 위한 원칙과 점검 기준을 제공하는 프레임워크다.
아키텍처 설계 │ Well-Architected 기준 적용 │ 문제 발견 / 개선 │ 더 안정적이고 효율적인 시스템
👉 핵심은 “AWS 서비스를 많이 아는 것”이 아니라 그 서비스를 어떤 원칙으로 조합할지 아는 것
| 원칙 | 설명 | 핵심 포인트 |
|---|---|---|
| 용량을 추측하지 말 것 | 필요 용량을 미리 크게 잡기보다 Auto Scaling 활용 | 과소/과대 프로비저닝 위험 감소 |
| 프로덕션 규모 테스트 | 작은 실험만으로는 실제 병목을 알기 어려움 | 실제 운영 조건에서 검증 필요 |
| 자동화 | 반복 작업과 운영 절차를 코드/도구로 자동화 | 운영 실수 감소, 실험 속도 증가 |
| 진화하는 아키텍처 | 요구 사항 변화에 맞춰 구조도 계속 바뀌어야 함 | 한 번 만든 설계가 영원한 정답은 아님 |
| 데이터 기반 운영 | 감이 아니라 메트릭, 로그, 실제 사용 패턴으로 판단 | CloudWatch, 분석 지표와 연결됨 |
| GameDay | 장애 상황을 시뮬레이션하며 실제 대응력 점검 | 복구 전략은 문서보다 실전 연습이 중요 |
Well-Architected는 자동화를 매우 중요하게 본다. 그래서 CloudFormation 같은 IaC가 있으면 여러 환경에서 실험, 재배포, 복구 연습을 훨씬 쉽게 수행할 수 있다.
Well-Architected Framework의 핵심은 6개의 Pillar(축)로 아키텍처를 점검하는 것이다.
Well-Architected ├─ Operational Excellence ├─ Security ├─ Reliability ├─ Performance Efficiency ├─ Cost Optimization └─ Sustainability
👉 좋은 아키텍처는 한 축만 잘한다고 완성되지 않고 여섯 축의 균형으로 완성된다
| Pillar | 의미 | 대표 질문 |
|---|---|---|
| 운영 우수성 | 운영을 얼마나 안정적이고 반복 가능하게 수행하는가 | 관측성, 자동화, 운영 절차가 준비됐는가? |
| 보안 | 권한, 데이터, 네트워크, 감사가 적절히 설계됐는가 | 최소 권한, 암호화, 탐지가 적용됐는가? |
| 안정성 | 장애가 나도 얼마나 잘 버티고 복구하는가 | Multi-AZ, 자동 복구, 백업이 준비됐는가? |
| 성능 효율성 | 적절한 기술과 리소스를 효율적으로 선택했는가 | 워크로드에 맞는 인스턴스/서비스를 썼는가? |
| 비용 최적화 | 필요한 성능을 유지하면서 불필요한 비용을 줄였는가 | 미사용 자원, 과대 프로비저닝이 없는가? |
| 지속 가능성 | 에너지와 자원 사용을 효율적으로 했는가 | 불필요한 리소스를 줄이고 효율적 구조를 썼는가? |
Well-Architected Tool은 실제 워크로드를 선택하고, 질문에 답하면서 6가지 Pillar 기준으로 점검하고 개선 조언을 받는 도구다.
Workload 선택 │ 질문 응답 │ 6 Pillars 기준 점검 │ 개선 권고 도출
👉 프레임워크가 “이론”이라면 Tool은 그 이론을 실제 리뷰 절차로 바꾸는 실행 장치
Trusted Advisor는 AWS 계정 전체를 분석해 비용, 성능, 보안, 내결함성, 서비스 할당량 관점의 권장사항을 제공하는 계정 수준 점검 서비스다.
AWS Account │ Trusted Advisor 분석 ├─ 비용 ├─ 성능 ├─ 보안 ├─ 내결함성 └─ 서비스 할당량
👉 Trusted Advisor는 “아키텍처 철학”보다 현재 계정 상태를 실용적으로 진단하는 도구에 가깝다
| 범주 | 무엇을 보는가 | 대표 예시 |
|---|---|---|
| 비용 최적화 | 낭비되고 있는 리소스 비용 | 활용도 낮은 EC2, 미사용 EBS, 비효율 리소스 |
| 성능 | 리소스 성능 병목 가능성 | 활용률 높은 EC2, CloudFront 활동량, EBS 성능 최적화 |
| 보안 | 보안 모범 사례 누락 여부 | 루트 MFA, 액세스 키 노출, S3 퍼블릭 권한, 과도한 SSH 오픈 |
| 내결함성 | 장애 복구/고가용성 준비 수준 | ASG / RDS / ELB Multi-AZ 여부, 스냅샷 상태 |
| 서비스 할당량 | 리소스 한도 도달 가능성 | 서비스 제한 근접 여부 |
| 범주 | 예시 |
|---|---|
| 비용 최적화 | 활용도 낮은 EC2, 사용되지 않는 로드 밸런서, 낮은 활용도의 EBS, Savings Plans/RI 추천 |
| 성능 | 활용률이 매우 높은 EC2, CloudFront 활동량, EBS 성능 관련 권장사항, DNS Alias 권장 |
| 보안 | 루트 MFA 확인, IAM 키 교체, 노출된 액세스 키, S3 퍼블릭 액세스, SSH 오픈 포트 |
| 내결함성 | EBS 스냅샷 상태, AZ 균형, ASG/RDS/ELB Multi-AZ 여부 |
| 서비스 할당량 | 한도 도달 전 리소스 제한 증가 필요 여부 |
| 도구 | 중심 | 성격 |
|---|---|---|
| Well-Architected Framework / Tool | 워크로드 아키텍처 | 설계 원칙과 구조적 리뷰 |
| Trusted Advisor | AWS 계정과 리소스 상태 | 실용적 점검과 권장사항 |
AWS Well-Architected
├─ Framework
│ ├─ 모범 사례
│ ├─ 아키텍처 진화
│ ├─ 자동화
│ └─ GameDay / 데이터 기반 운영
├─ 6 Pillars
│ ├─ 운영 우수성
│ ├─ 보안
│ ├─ 안정성
│ ├─ 성능 효율성
│ ├─ 비용 최적화
│ └─ 지속 가능성
├─ Well-Architected Tool
│ └─ 워크로드 질문 기반 점검
└─ Trusted Advisor
├─ 비용
├─ 성능
├─ 보안
├─ 내결함성
└─ 서비스 할당량
| 서비스 | 유형 | 대표 사용처 |
|---|---|---|
| RDS | 관계형 | ERP, 금융 |
| Aurora | 고성능 관계형 | SaaS |
| DynamoDB | Key-Value | 모바일, IoT |
| DocumentDB | 문서형 | 콘텐츠 |
| ElastiCache | 캐시 | 세션, 랭킹 |
| Redshift | 분석 | BI |
| Neptune | 그래프 | 추천 |
| Timestream | 시계열 | IoT |
| QLDB | 원장 | 감사 로그 |
👉 트랜잭션이면 관계형
👉 확장성과 속도면 DynamoDB
👉 분석이면 Redshift
👉 실시간 캐시면 Redis