DNS 용어 정리
- Domain Registrar (도메인 등록 기관): 도메인을 등록할 수 있는 서비스 (예: Amazon Route 53, GoDaddy 등).
- DNS Records: 도메인에 대한 정보를 담은 레코드 유형 (A, AAAA, CNAME, NS 등).
- Zone File: DNS 레코드를 포함하는 파일로, 도메인의 설정 정보를 저장.
- Name Server (네임 서버): DNS 쿼리를 처리하여 IP 주소를 반환하는 서버 (권한 있는 서버와 비권한 서버로 구분).
- Top Level Domain (최상위 도메인): .com, .us, .in, .gov, .org 같은 도메인 최상위 계층.
- Second Level Domain (2차 도메인): amazon.com, google.com 같은 도메인의 두 번째 계층.

How DNS Works?

Route53?
- 고가용성, 확장성, 완전 관리형 권한 있는 DNS 서비스:
- Amazon Route 53은 안정적이고 확장 가능한 DNS 서비스를 제공
- 권한 있는 DNS(Authoritative): 사용자가 직접 DNS 레코드를 업데이트
- 도메인 등록 기관 역할도 가능: Route 53은 도메인 등록 서비스도 제공
- 리소스 상태 확인 기능: Route 53은 리소스의 상태를 모니터링할 수 있다
- AWS 유일의 100% 가용성 SLA 제공 서비스: AWS에서 가용성을 100% 보장하는 유일한 서비스
- Route 53 이름의 유래: DNS의 기본 포트 번호 53을 참고하여 이름이 지어짐

도메인 트래픽 라우팅 방식 (Amazon Route 53)
도메인 트래픽을 라우팅할 때, 각 DNS 레코드:
- 도메인/서브도메인 이름: 예를 들어, example.com과 같은 도메인 이름 또는 sub.example.com 같은 서브도메인 이름.
- 레코드 유형(Record Type): 예를 들어, A 레코드나 AAAA 레코드 등.
- 값(Value): IP 주소 등 도메인에 연결할 실제 값 (예: 12.34.56.78).
- 라우팅 정책(Routing Policy): Route 53이 쿼리에 응답하는 방식(트래픽을 분배하는 방식) 지정
- TTL(Time-To-Live): DNS 리졸버(DNS Resolver)에 캐시될 시간(초 단위). TTL이 짧으면 변경 사항이 더 빨리 반영됨.
Route 53이 지원하는 주요 DNS 레코드 유형
기본 유형(자주 사용됨):
- A: IPv4 주소를 반환
- AAAA: IPv6 주소를 반환
- CNAME: 별칭 도메인(다른 도메인에 연결)
- NS: 네임 서버 레코드를 지정
고급 유형(추가적인 기능 제공):
- CAA, DS, MX, NAPTR, PTR, SOA, TXT, SPF, SRV 등
Route 53 – 레코드 유형
- A - 호스트 이름을 IPv4 주소에 매핑
- AAAA - 호스트 이름을 IPv6 주소에 매핑
- CNAME - 호스트 이름을 다른 호스트 이름에 매핑
- 대상은 반드시 A 또는 AAAA 레코드를 가진 도메인 이름이어야 함
- DNS 네임스페이스의 최상위 노드(Zone Apex)에 CNAME 레코드를 만들 수 없음
- 예: example.com에는 CNAME을 만들 수 없지만, www.example.com에는 만들 수 있음
- NS - 호스티드 존(Hosted Zone)의 네임 서버를 지정
- 도메인의 트래픽이 어떻게 라우팅될지 제어
Route 53 – Hosted Zones
호스티드 존(Hosted Zone)은 도메인 및 서브도메인으로의 트래픽 라우팅 방식을 정의하는 레코드들을 담고 있는 컨테이너
=> 즉, 하나의 호스티드 존에는 도메인의 DNS 레코드들이 포함되며, Route 53을 통해 도메인과 서브도메인 트래픽을 제어하고 관리할 수 있습니다.
두 가지 유형
- 퍼블릭 호스티드 존 (Public Hosted Zone):
- 인터넷 상의 트래픽 라우팅을 위한 레코드를 포함
- 예를 들어, application1.mypublicdomain.com과 같은 퍼블릭 도메인 이름에 대해 인터넷 사용자들이 접근할 수 있도록 트래픽을 제어
- 퍼블릭 호스티드 존은 외부(인터넷 사용자)에서 접근 가능한 웹 애플리케이션, API, 웹사이트 등의 트래픽 라우팅 설정에 주로 사용됩니다.
- 퍼블릭 호스티드 존을 통해 도메인의 A 레코드, CNAME 레코드 등을 설정하여 인터넷 상에서 트래픽이 올바르게 라우팅되도록 할 수 있습니다.
- 프라이빗 호스티드 존 (Private Hosted Zone):
- 하나 이상의 VPC 내에서만 접근 가능한 트래픽 라우팅을 위한 레코드를 포함
- 예를 들어, application1.company.internal과 같은 프라이빗 도메인 이름을 지정하여 회사 내부 또는 특정 VPC 내에서만 접근 가능하도록 설정
- 프라이빗 호스티드 존은 외부 네트워크와 격리된 상태에서 AWS VPC 내의 리소스들 간에 안전하게 트래픽을 라우팅할 수 있도록 도움
- 내부 애플리케이션이나 VPC 내 리소스들 간에 도메인 기반으로 통신할 때 유용하며, DNS 요청이 AWS 내부 네트워크를 벗어나지 않도록 설정
- 호스티드 존 비용:
- AWS에서는 호스티드 존당 월 $0.50의 요금을 부과

Record TTL(Time to Live)
High TTL – e.g., 24 hr
• Less traffic on Route 53
• Possibly outdated records
Low TTL – e.g., 60 sec.
• More traffic on Route 53 ($$)
• Records are outdated for less time
• Easy to change records
• Except for Alias records, TTL is mandatory for each DNS record

CNAME vs Alias (Route 53에서의 차이점)
- CNAME (Canonical Name) 레코드
-
기능: CNAME 레코드는 한 도메인 이름을 다른 도메인 이름으로 연결해줍니다.
- 예: app.mydomain.com을 blabla.anything.com에 매핑할 수 있습니다.
-
적용 범위: 루트 도메인(root domain)에는 사용할 수 없고, 서브도메인에만 사용할 수 있습니다.
- 예를 들어, example.com에는 CNAME을 설정할 수 없지만, www.example.com이나 app.example.com과 같은 서브도메인에는 CNAME을 설정할 수 있습니다.
-
적용 예시: 외부 서비스(예: blabla.otherdomain.com)를 subdomain.mydomain.com 형태로 설정하고 싶을 때 주로 사용됩니다.
-
특징:
- 타겟이 도메인 이름이어야 하며, IP 주소로 직접 연결할 수 없습니다.
- TTL(Time-to-Live) 값을 설정할 수 있어, 캐싱 시간을 조절할 수 있습니다.
- 주 사용 용도: 외부 도메인이나 다른 호스트네임에 연결할 때 사용합니다.
- Alias 레코드 (Route 53의 고유 기능)
-
기능: Alias 레코드는 도메인 이름을 AWS 리소스(예: Elastic Load Balancer, CloudFront, S3 버킷 등)에 직접 연결할 수 있도록 합니다. Route 53에서 제공하는 확장 기능으로, AWS 리소스에 대한 도메인 연결을 단순화합니다.
- 예: mydomain.com이나 app.mydomain.com을 blabla.amazonaws.com 같은 AWS 리소스에 연결할 수 있습니다.
-
적용 범위: 루트 도메인(root domain)과 서브도메인 모두에 사용할 수 있습니다.
- 예를 들어, example.com에도 설정할 수 있으며, www.example.com 같은 서브도메인에도 설정이 가능합니다.
-
적용 예시: AWS 리소스를 직접 연결하고, 리소스 IP 주소가 변경될 때 자동으로 갱신되게 하고 싶을 때 사용합니다.
-
특징:
- 무료: Alias 레코드를 통한 요청은 Route 53에서 추가 요금 없이 처리됩니다.
- 자동 IP 주소 갱신: 연결된 AWS 리소스의 IP 주소가 변경되면 Alias 레코드는 자동으로 변경 사항을 인식하고 갱신합니다.
- 네이티브 상태 확인: Alias 레코드는 상태 확인 기능을 지원하므로, 리소스의 가용성에 따라 응답이 조절될 수 있습니다.
- TTL 설정 불가: Alias 레코드는 TTL을 직접 설정할 수 없으며, Route 53이 자동으로 TTL을 관리합니다.
- 주 사용 용도: AWS 리소스(예: Load Balancer, CloudFront, S3 웹사이트 등)에 직접 도메인을 연결할 때 사용합니다.
Route 53에서 Alias 레코드의 대상이 될 수 있는 AWS 리소스
- Elastic Load Balancers: 애플리케이션의 트래픽을 여러 인스턴스에 분산할 수 있도록 도와주는 AWS 서비스.
- CloudFront Distributions: 전 세계에 콘텐츠를 빠르게 제공하기 위해 사용하는 CDN 서비스.
- API Gateway: API 요청을 처리하고 라우팅하는 AWS 서비스.
- Elastic Beanstalk 환경: 자동으로 애플리케이션을 배포하고 관리할 수 있는 AWS의 PaaS 서비스.
- S3 웹사이트: 정적 웹사이트 호스팅을 위해 S3 버킷을 웹사이트로 설정한 경우.
- VPC 인터페이스 엔드포인트: 프라이빗 네트워크에서 AWS 서비스에 접근하기 위해 설정하는 엔드포인트.
- Global Accelerator 가속기: 전 세계에서 더 빠르게 애플리케이션에 접근할 수 있도록 지원하는 서비스.
- 같은 호스티드 존의 Route 53 레코드: 동일한 호스티드 존 내의 다른 레코드에 연결할 수 있습니다.
제한 사항: EC2 인스턴스의 DNS 이름에 대해서는 Alias 레코드를 설정할 수 없습니다.

Route 53 – Routing Policies
- Route 53의 라우팅 정책은 DNS 쿼리에 어떻게 응답할지 정의하는 방식입니다.
- 트래픽을 실제로 라우팅하는 로드 밸런서의 라우팅과는 다릅니다.
It’s not the same as Load balancer routing which routes the traffic
DNS does not route any traffic, it only responds to the DNS queries
Route 53 Supports the following Routing Policies
• Simple
• Weighted
• Failover
• Latency based
• Geolocation
• Multi-Value Answer
• Geoproximity (using Route 53 Traffic Flow feature)
Routing Policies – Simple

- If multiple values are returned, a random one is chosen by the client
- When Alias enabled, specify only one AWS resource
- Can’t be associated with Health Checks
Routing Policies – Weighted
- Control the % of the requests that go to each specific resource
- Assign each record a relative weight
- Weights don’t need to sum up to 100
- Can be associated with Health Checks
- Use cases: load balancing between regions, testing new application versions...
- Assign a weight of 0 to a record to stop sending traffic to a resource
- If all records have weight of 0, then all records will be returned equally

Routing Policies – Latency-based
- Redirect to the resource that has the least latency close to us
- Latency is based on traffic between users and AWS Regions
- Can be associated with Health Checks (has a failover capability)
Route 53 – Health Checks (상태 검사)
- Public 리소스에만 사용 가능
- 상태 검사(Health Check)는 Route 53에서 자동으로 DNS 장애 조치(Failover)를 수행하는 데 사용됩니다.
- 엔드포인트를 모니터링하는 상태 검사
- 웹 애플리케이션, 서버, 또는 다른 AWS 리소스와 같은 특정 엔드포인트가 정상적으로 작동하는지 자동으로 확인합니다.
- 다른 상태 검사를 모니터링하는 상태 검사 (계산된 상태 검사)
- 한 상태 검사 결과에만 의존하는 것이 아닌, 여러 상태 검사를 종합하여 하나의 결과로 반환할 수 있습니다.
- CloudWatch 알람을 모니터링하는 상태 검사
-
Route 53 상태 검사로 CloudWatch 알람을 직접 모니터링할 수 있습니다. 예를 들어, DynamoDB의 과도한 쓰로틀링, RDS의 경고 알람, 사용자 정의 메트릭 등을 활용하여 상태를 확인할 수 있습니다. 특히 프라이빗 리소스(공개되지 않은 내부 리소스)의 상태를 확인할 때 유용합니다.
-
상태 검사는 CloudWatch 메트릭과 통합되어 실시간 모니터링과 자동화된 장애 조치 설정을 지원합니다.

Health Checks – Monitor an Endpoint
About 15 global health checkers will check the endpoint health
- Healthy/Unhealthy Threshold: 기본 3 (상태를 판별하기 위한 검사 횟수)
- Interval: 기본 30초 (10초로 설정 가능하지만 비용 증가)
- 지원 프로토콜: HTTP, HTTPS, TCP
- 상태 판별 기준: 상태 검사기 중 18% 이상이 엔드포인트를 “정상(Healthy)“으로 판단하면, Route 53도 이를 정상으로 간주하고, 그렇지 않으면 비정상으로 간주합니다.
- 위치 선택 가능: Route 53이 사용하는 위치를 선택할 수 있습니다.
- 응답 상태 코드: 2xx 및 3xx 상태 코드일 때만 상태 검사가 통과됩니다.
- 응답 텍스트 검사: 응답의 처음 5120바이트 내 텍스트를 기반으로 통과/실패 설정 가능
- 라우터/방화벽 설정: Route 53의 상태 검사 요청을 허용하도록 구성해야 합니다.

Route 53 – Calculated Health Checks
Combine the results of multiple Health Checks into a single Health Check
• You can use OR, AND, or NOT
• Can monitor up to 256 Child Health Checks
• Specify how many of the health checks need to pass to make the parent pass
• Usage: perform maintenance to your website without causing all health checks to fail

Health Checks – Private Hosted Zones
Route 53 health checkers are outside the VPC
• They can’t access private endpoints (private VPC or on-premises resource)
• You can create a CloudWatch Metric and associate a CloudWatch Alarm, then
create a Health Check that checks the alarm itself
