1. DNS 기본 개념
DNS란?
- Domain Name System - 사람이 읽기 쉬운 호스트명을 IP 주소로 변환
- 예:
www.google.com→172.217.18.36 - 인터넷의 핵심 기반 기술
- 계층적 이름 구조 사용
DNS 용어 정리
| 용어 | 설명 | 예시 |
|---|---|---|
| Domain Registrar | 도메인 등록 기관 | Route 53, GoDaddy |
| DNS Records | DNS 레코드 | A, AAAA, CNAME, NS 등 |
| Zone File | DNS 레코드를 포함하는 파일 | - |
| Name Server | DNS 쿼리를 해석하는 서버 | Authoritative / Non-Authoritative |
| TLD (Top Level Domain) | 최상위 도메인 | .com, .kr, .org |
| SLD (Second Level Domain) | 2차 도메인 | amazon.com, google.com |
URL 구조 분석
http://api.www.example.com.
│ │ │ │ │ └─ Root
│ │ │ │ └──── TLD (Top Level Domain)
│ │ │ └────────── SLD (Second Level Domain)
│ │ └──────────────── Sub Domain
│ └──────────────────── Sub Domain
└─────────────────────────── Protocol
전체 = FQDN (Fully Qualified Domain Name)2. DNS 동작 원리
웹 브라우저 → Local DNS Server → Root DNS Server (.com NS 반환)
↓
TLD DNS Server (.com) → example.com NS 반환
↓
SLD DNS Server (example.com) → IP 주소 반환
↓
웹 서버 (9.10.11.12) 접속관리 주체
| 서버 | 관리 주체 |
|---|---|
| Root DNS Server | ICANN |
| TLD DNS Server | IANA (ICANN 산하) |
| SLD DNS Server | Domain Registrar (예: Amazon Registrar) |
| Local DNS Server | 회사 또는 ISP |
3. Amazon Route 53 개요
Route 53란?
- 고가용성, 확장 가능, 완전 관리형 Authoritative DNS
- Authoritative = 사용자가 DNS 레코드를 직접 업데이트 가능
- 도메인 등록 기관(Domain Registrar) 역할도 수행
- 리소스 헬스 체크 기능 제공
💡 왜 53인가? DNS의 전통적인 포트 번호가 53
⭐ AWS 서비스 중 유일하게 100% 가용성 SLA 제공
4. Route 53 레코드
레코드 구성 요소
| 요소 | 설명 | 예시 |
|---|---|---|
| Domain/Subdomain Name | 도메인명 | example.com |
| Record Type | 레코드 타입 | A, AAAA, CNAME, NS |
| Value | 값 | 12.34.56.78 |
| Routing Policy | 라우팅 정책 | Simple, Weighted 등 |
| TTL | DNS Resolver 캐시 시간 | 300초 |
주요 레코드 타입 (필수 암기)
| 타입 | 설명 | 비고 |
|---|---|---|
| A | 호스트명 → IPv4 | 가장 기본 |
| AAAA | 호스트명 → IPv6 | |
| CNAME | 호스트명 → 다른 호스트명 | Zone Apex(루트 도메인)에 사용 불가 |
| NS | Hosted Zone의 Name Server | 트래픽 라우팅 제어 |
CNAME 제한사항
- 대상은 반드시 A 또는 AAAA 레코드가 있어야 함
- Zone Apex에 사용 불가
- ❌
example.com→ CNAME 불가 - ✅
www.example.com→ CNAME 가능
- ❌
5. Hosted Zone
Hosted Zone이란?
- 도메인과 서브도메인의 트래픽 라우팅 방법을 정의하는 레코드 컨테이너
- 비용: 월 $0.50 / Hosted Zone
Public vs Private Hosted Zone
| 구분 | Public Hosted Zone | Private Hosted Zone |
|---|---|---|
| 용도 | 인터넷 트래픽 라우팅 | VPC 내부 트래픽 라우팅 |
| 도메인 예시 | app.mypublicdomain.com | app.company.internal |
| 접근 | 전 세계 | VPC 내부만 |
6. TTL (Time To Live)
TTL 설정에 따른 차이
| TTL | 장점 | 단점 |
|---|---|---|
| 높은 TTL (예: 24시간) | Route 53 트래픽 감소 | 오래된 레코드 유지 가능성 |
| 낮은 TTL (예: 60초) | 레코드 변경 빠름, 최신 상태 유지 | Route 53 트래픽 증가 (비용 ↑) |
⚠️ Alias 레코드 제외, 모든 DNS 레코드에 TTL 필수
7. CNAME vs Alias
AWS 리소스 연결 시 비교
| 구분 | CNAME | Alias |
|---|---|---|
| 대상 | 모든 호스트명 | AWS 리소스만 |
| Zone Apex 사용 | ❌ 불가 | ✅ 가능 |
| 비용 | DNS 쿼리 과금 | 무료 |
| 헬스 체크 | 불가 | 네이티브 지원 |
| TTL 설정 | 가능 | 불가 (AWS 관리) |
Alias 레코드 특징
- 호스트명을 AWS 리소스에 매핑
- 리소스의 IP 주소 변경 자동 인식
- 항상 A/AAAA 타입 (IPv4/IPv6)
Alias 대상 가능 리소스
- ✅ Elastic Load Balancer
- ✅ CloudFront Distribution
- ✅ API Gateway
- ✅ Elastic Beanstalk
- ✅ S3 Website
- ✅ VPC Interface Endpoint
- ✅ Global Accelerator
- ✅ 같은 Hosted Zone의 Route 53 레코드
- ❌ EC2 DNS name은 불가
8. 라우팅 정책 (Routing Policies)
⚠️ 주의: DNS 라우팅 ≠ 로드밸런서 라우팅
DNS는 트래픽을 라우팅하지 않고, DNS 쿼리에 응답만 함
8.1 Simple (단순)
| 특징 | 설명 |
|---|---|
| 용도 | 단일 리소스로 트래픽 라우팅 |
| 다중 값 | 가능 (클라이언트가 랜덤 선택) |
| Alias 사용 시 | 단일 AWS 리소스만 지정 가능 |
| 헬스 체크 | ❌ 불가 |
8.2 Weighted (가중치)
| 특징 | 설명 |
|---|---|
| 용도 | 리소스별 트래픽 비율 제어 |
| 계산 | 트래픽(%) = 해당 레코드 가중치 / 전체 가중치 합 |
| 가중치 합계 | 100일 필요 없음 |
| 헬스 체크 | ✅ 가능 |
| 가중치 0 | 해당 리소스로 트래픽 중단 |
| 모든 가중치 0 | 모든 레코드 균등 반환 |
사용 사례: 리전 간 로드밸런싱, 새 버전 테스트 (카나리 배포)
8.3 Latency-based (지연시간 기반)
| 특징 | 설명 |
|---|---|
| 용도 | 지연시간이 가장 낮은 리소스로 연결 |
| 기준 | 사용자 ↔ AWS 리전 간 지연시간 |
| 헬스 체크 | ✅ 가능 (장애조치 기능) |
💡 독일 사용자가 미국 리전으로 연결될 수도 있음 (지연시간이 더 낮으면)
8.4 Failover (장애조치)
| 특징 | 설명 |
|---|---|
| 구성 | Primary (Active) + Secondary (Passive) |
| 동작 | Primary 헬스 체크 실패 시 Secondary로 전환 |
| 헬스 체크 | Primary에 필수 |
사용 사례: 재해 복구 (DR)
8.5 Geolocation (지리적 위치)
| 특징 | 설명 |
|---|---|
| 기준 | 사용자의 물리적 위치 |
| 위치 지정 | 대륙, 국가, 미국 주 단위 |
| Default 레코드 | 매칭 안 될 경우를 위해 필수 권장 |
| 헬스 체크 | ✅ 가능 |
⚠️ Latency-based와 다름! (지연시간 아닌 위치 기반)
사용 사례: 웹사이트 현지화, 콘텐츠 배포 제한, 로드밸런싱
8.6 Geoproximity (지리적 근접성)
| 특징 | 설명 |
|---|---|
| 기준 | 사용자와 리소스의 지리적 위치 |
| Bias | 트래픽을 더 많이/적게 받도록 조정 |
| Bias 확장 | 1 ~ 99 (더 많은 트래픽) |
| Bias 축소 | -1 ~ -99 (더 적은 트래픽) |
| 필수 기능 | Route 53 Traffic Flow |
리소스 지정 방식:
- AWS 리소스: AWS 리전 지정
- Non-AWS 리소스: 위도/경도 지정
8.7 IP-based (IP 기반)
| 특징 | 설명 |
|---|---|
| 기준 | 클라이언트 IP 주소 |
| 설정 | CIDR 목록과 엔드포인트 매핑 |
사용 사례: 특정 ISP 사용자를 특정 엔드포인트로 라우팅, 성능 최적화
8.8 Multi-Value Answer (다중 값)
| 특징 | 설명 |
|---|---|
| 용도 | 여러 리소스로 트래픽 라우팅 |
| 반환 | 최대 8개의 정상 레코드 |
| 헬스 체크 | ✅ 가능 (정상 리소스만 반환) |
⚠️ ELB의 대체제가 아님!
9. 헬스 체크 (Health Checks)
개요
- Public 리소스 전용 (HTTP Health Check)
- 자동 DNS 장애조치 지원
- CloudWatch 메트릭과 통합
헬스 체크 유형
| 유형 | 설명 |
|---|---|
| Endpoint 모니터링 | 애플리케이션, 서버, AWS 리소스 직접 체크 |
| Calculated Health Check | 다른 헬스 체크들의 조합 |
| CloudWatch Alarm | CloudWatch 알람 상태 체크 (Private 리소스용) |
Endpoint 모니터링 상세
| 항목 | 값 |
|---|---|
| 헬스 체커 수 | 전 세계 약 15개 |
| Healthy/Unhealthy 임계값 | 기본 3회 |
| 체크 간격 | 30초 (10초 가능, 추가 비용) |
| 지원 프로토콜 | HTTP, HTTPS, TCP |
| Healthy 판정 | 18% 이상의 체커가 정상 보고 |
| 정상 응답 코드 | 2xx, 3xx |
| 응답 본문 체크 | 처음 5120 바이트 |
⚠️ 방화벽에서 Route 53 Health Checker IP 허용 필요
IP 목록: https://ip-ranges.amazonaws.com/ip-ranges.json
Calculated Health Check
- 여러 헬스 체크 결과를 OR, AND, NOT으로 조합
- 최대 256개 Child Health Check 모니터링
- 사용 사례: 유지보수 시 전체 헬스 체크 실패 방지
Private Hosted Zone 헬스 체크
문제: Route 53 헬스 체커가 VPC 외부에 있어 Private 엔드포인트 접근 불가
해결책:
1. CloudWatch Metric 생성
2. CloudWatch Alarm 설정
3. 해당 Alarm을 모니터링하는 Health Check 생성10. Traffic Flow
Traffic Flow란?
- 복잡한 라우팅 구성을 시각적 에디터로 관리
- Traffic Flow Policy로 저장 가능
- 여러 Hosted Zone(다른 도메인)에 적용 가능
- 버전 관리 지원
11. Domain Registrar vs DNS Service
개념 구분
| 구분 | 역할 | 예시 |
|---|---|---|
| Domain Registrar | 도메인 구매/등록 | GoDaddy, Route 53 |
| DNS Service | DNS 레코드 관리 | Route 53, Cloudflare |
💡 Domain Registrar ≠ DNS Service
하지만 대부분의 Registrar가 DNS 서비스도 제공
타사 Registrar + Route 53 사용 방법
- Route 53에서 Hosted Zone 생성
- 타사 Registrar 사이트에서 NS 레코드를 Route 53 Name Server로 변경
라우팅 정책 요약 비교
| 정책 | 기준 | 헬스체크 | 주요 사용 사례 |
|---|---|---|---|
| Simple | 없음 | ❌ | 단일 리소스 |
| Weighted | 가중치 비율 | ✅ | A/B 테스트, 카나리 배포 |
| Latency | 지연시간 | ✅ | 글로벌 서비스 성능 최적화 |
| Failover | Primary 상태 | ✅ (필수) | 재해 복구 (DR) |
| Geolocation | 사용자 위치 | ✅ | 현지화, 콘텐츠 제한 |
| Geoproximity | 사용자+리소스 위치 | ✅ | 트래픽 분산 조정 |
| IP-based | 클라이언트 IP | ✅ | ISP별 라우팅 |
| Multi-Value | 없음 | ✅ | 간단한 로드밸런싱 |
CloudFront와 S3를 함께 사용하시는 배포 환경에서 Route 53의 Alias 레코드와 라우팅 정책은 자주 활용되니 참고하세요! 🙂