DNS부터 이해하기 — 이름을 실제 목적지로 바꾸는 과정
사용자는 서버 IP 대신 www.example.com 같은 도메인 이름을 사용합니다. DNS는 이 이름을 브라우저가 실제로 접속할 수 있는 IP 주소나 다른 DNS 이름으로 변환합니다.
Route 53은 “어디로 갈지”에 대한 DNS 응답을 제공합니다. 실제 HTTPS 요청은 그 응답을 받은 클라이언트가 목적지로 직접 보냅니다.
Route 53 — Hosted Zone과 레코드
Route 53은 AWS의 관리형 DNS 서비스입니다. 도메인을 Route 53에서 등록할 수도 있고, 다른 등록기관에서 구매한 도메인의 Name Server만 Route 53으로 위임할 수도 있습니다.
Hosted Zone
인터넷에서 조회되는 도메인의 DNS 레코드를 관리합니다.
연결된 VPC 내부에서만 이름을 해석하는 사설 DNS 영역입니다.
자주 쓰는 레코드
| 타입 | 역할 | 예시 |
|---|---|---|
| A | 이름 → IPv4 주소 | IPv4 Endpoint |
| AAAA | 이름 → IPv6 주소 | IPv6 Endpoint |
| CNAME | 이름 → 다른 DNS 이름 | 서브도메인 → 외부 서비스 |
| Alias | Route 53 확장 기능으로 AWS 리소스 등에 연결 | Root Domain → CloudFront / ALB |
| MX | 메일 수신 서버 지정 | 회사 메일 |
| TXT | 문자열 기반 검증·정책 정보 | 도메인 인증 등 |
일반 CNAME은 Zone Apex에 사용할 수 없지만 Route 53 Alias는 CloudFront·ALB 같은 지원 대상에 Root Domain을 연결할 수 있습니다. Route 53은 CloudFront 등 지원 AWS 리소스로 향하는 Alias Query에 DNS Query 요금을 부과하지 않습니다.
TTL — DNS 변경이 바로 안 보이는 이유
TTL(Time To Live)은 DNS Resolver가 응답을 얼마나 오래 캐시할지 정하는 값입니다. TTL이 남아 있는 동안 Resolver는 Route 53에 다시 묻지 않고 기존 값을 반환할 수 있습니다.
전환 직전에 TTL을 낮춰도 이전 TTL로 이미 캐시된 Resolver는 기존 값을 계속 사용할 수 있습니다.
Routing Policy — DNS 응답을 어떻게 선택할까
| 정책 | 동작 | 대표 사용 |
|---|---|---|
| Simple | 기본적인 단일 리소스 응답 | 단일 웹 서비스 |
| Weighted | 설정한 비중으로 트래픽 분배 | 점진 배포·A/B 테스트 |
| Latency | 가장 낮은 지연을 제공하는 AWS Region 선택 | Multi-Region |
| Failover | Primary/Secondary Active-Passive | DR |
| Geolocation | 사용자 위치 기준 | 국가·대륙별 콘텐츠 |
| Geoproximity | 사용자·리소스 위치와 Bias 기준 | 지역별 트래픽 이동 |
| Multivalue | 건강한 레코드 중 여러 값을 응답 | 간단한 DNS 수준 분산 |
CloudFront — Origin 앞에 두는 CDN
CloudFront는 사용자와 Origin 사이에서 콘텐츠를 Edge Location에 캐시해 전달하는 CDN입니다. 정적 파일뿐 아니라 ALB·API 같은 동적 Origin 앞에서도 사용할 수 있습니다.
Edge에 객체가 있으면 Origin까지 가지 않고 가까운 Edge에서 응답합니다.
Edge에 없거나 만료되면 Origin에서 가져와 응답하고 정책에 따라 캐시합니다.
Private S3 Origin + OAC
S3 정적 콘텐츠를 배포할 때는 버킷을 인터넷에 공개하지 않고 CloudFront의 OAC(Origin Access Control)를 사용해 CloudFront만 S3를 읽도록 제한하는 패턴이 권장됩니다.
OAC를 사용하는 보안 구성은 일반 S3 Bucket Origin을 사용합니다. S3 Website Endpoint를 Custom Origin으로 연결하는 구성에서는 OAC를 사용할 수 없습니다.
ACM 인증서 — CloudFront는 us-east-1
CloudFront Distribution에 사용자 도메인과 HTTPS를 붙이려면 해당 도메인을 포함하는 TLS 인증서가 필요합니다. ACM 인증서를 CloudFront Viewer HTTPS에 사용하려면 인증서를 US East (N. Virginia), us-east-1에서 요청하거나 Import해야 합니다.
| 대상 | ACM 인증서 위치 |
|---|---|
| CloudFront Viewer HTTPS | us-east-1 |
| Regional ALB HTTPS | ALB와 같은 Region |
CloudFront에 추가하는 Alternate Domain Name은 연결된 인증서의 SAN에 포함되거나 적절한 Wildcard로 커버되어야 합니다.
Cache Policy · Invalidation · 파일 버전 전략
CloudFront는 Cache Key에 어떤 Header, Cookie, Query String을 포함할지에 따라 캐시 효율이 크게 달라집니다. 필요 없는 값을 많이 포함하면 같은 콘텐츠가 여러 Cache Entry로 나뉘어 Hit Ratio가 떨어질 수 있습니다.
app.abc123.js처럼 파일명에 버전을 넣습니다. AWS는 자주 갱신하는 콘텐츠에는 파일 Versioning을 주로 사용하는 방식을 권장합니다.index.html처럼 최신 Asset 이름을 연결하는 파일은 짧은 Cache 정책을 적용하는 식으로 분리합니다.전체 연결 — 도메인 입력부터 응답까지
Route 53 → CloudFront → OAC → Private S3
Route 53 → CloudFront(선택) → ALB → 애플리케이션 Origin