잡다한 IT 지식

AWS Route53 - CNAME vs Alias 본문

AWS

AWS Route53 - CNAME vs Alias

가나무마 2025. 7. 4. 13:41

TL;DR

  • CNAME은 도메인을 다른 도메인에 매핑하는 표준 DNS 레코드입니다.
    • 하지만 루트 도메인(zone apex) 에는 사용할 수 없습니다.
    • 서브 도메인에서만 사용 가능하며, 질의가 최소 2회 이상 발생합니다.
  • Alias는 AWS Route 53에서 제공하는 비표준 레코드입니다.
    • AWS 리소스(CloudFront, ALB 등)와 직접 연결할 수 있으며, A 레코드처럼 IP를 바로 응답합니다.
    • 루트 도메인에서도 사용 가능하고, DNS 질의는 1회로 끝납니다.
  • AWS 리소스 연결 시에는 가능한 한 Alias를 사용하는 것이 성능과 운영 면에서 유리합니다.
    • CNAME은 도메인과 도메인을 연결해야 할 때만 사용하세요.

AWS 자격증을 공부하며 Route 53의 Alias와 CNAME을 구분하는 데 어려움을 겪었습니다. 두 레코드는 비슷해 보이지만 적용 대상, 동작 방식, 사용 가능 위치에서 중요한 차이가 있습니다. 이 글에서는 DNS 프로토콜의 기초부터 시작해, 두 레코드의 구조적 차이와 실제 사용 기준까지 정리해보겠습니다.


1. DNS 프로토콜 요약

도메인 주소는 결국 IP 주소로 변환되어야 브라우저가 요청을 보낼 수 있습니다. 이 변환 과정에서 DNS가 동작하며, 다음과 같은 절차로 질의가 이루어집니다.

  1. 사용자가 example.com 요청
  2. 리졸버가 루트 네임서버에 .com 네임서버 주소 질의
  3. .com 네임서버가 example.com의 네임서버 주소 반환
  4. 리졸버가 권한 있는 네임서버(authoritative name server)에 질의
  5. 해당 도메인에 매핑된 A 레코드(IPv4 주소) 등을 응답으로 반환

이 과정을 통해 클라이언트는 최종적으로 요청해야 할 서버의 IP를 알게 됩니다.

여기서 중요한 요소는 리졸버(resolver)입니다. 클라이언트는 실제 질의를 수행하지 않고, 리졸버가 대신 여러 네임서버를 거쳐 결과를 받아옵니다. 우리가 흔히 보는 8.8.8.8(Google), 1.1.1.1(Cloudflare) 등이 대표적인 공개 리졸버입니다.

Cloudflare의 DNS 홈페이지 화면
구글 Public DNS의 홈페이지 화면

 

2. CNAME과 Alias의 차이점

이번에는 실제 DNS 질의 관점에서 CNAME과 Alias가 어떻게 다르게 동작하는지를 비교해보겠습니다. 예시로 api.example.com이라는 도메인을 AWS API Gateway와 연결한다고 가정해보겠습니다.

CNAME

CNAME(Canonical Name)은 DNS에서 정의된 표준 레코드 타입으로, 하나의 도메인 이름을 다른 도메인 이름에 매핑할 때 사용됩니다.

예를 들어, 다음과 같이 설정하면:

api.example.com    CNAME    some-service.cloudprovider.com

api.example.com에 대한 질의는 내부적으로 some-service.cloudprovider.com에 대한 추가 DNS 질의를 유도하게 됩니다.
이 방식은 DNS 표준 문서인 RFC 1034에 정의된 동작입니다.

하지만 CNAME에는 중요한 제약이 있습니다. CNAME이 설정된 도메인에는 다른 레코드(A, NS, SOA 등)를 함께 정의할 수 없습니다.
따라서 필수적으로 NS와 SOA 레코드가 존재해야 하는 루트 도메인(zone apex) 에는 CNAME을 사용할 수 없습니다.

결과적으로, CNAME은 api.example.com과 같이 서브 도메인에서만 사용할 수 있는 레코드입니다.

 

Alias

Alias는 AWS Route 53에서만 제공하는 비표준 레코드 타입으로, CNAME과 유사하게 도메인을 다른 대상에 연결할 수 있도록 해줍니다. 주로 CloudFront, ALB, S3 웹 호스팅 등 AWS 리소스를 대상으로 사용되지만, 동일한 호스팅 영역 내의 다른 레코드 이름도 Alias 대상이 될 수 있습니다.

Alias의 핵심 특징은 CNAME과 달리 최종 IP 정보를 Route 53이 대신 질의하여 A 레코드처럼 응답한다는 점입니다. 이 덕분에 추가 DNS 질의 없이 한 번에 IP 주소를 얻을 수 있으며, 루트 도메인(zone apex) 에서도 사용할 수 있는 것이 큰 장점입니다.

3. 실제 동작 비교: CNAME vs Alias

예를 들어 api.example.com 도메인을 API Gateway에 연결한다고 가정하겠습니다.

CNAME을 사용하는 경우:

api.example.com → API Gateway의 도메인 → A 레코드(IP 주소)

DNS 질의는 최소 두 번 발생합니다. CNAME 체인이 길 경우 질의가 더 많아질 수도 있습니다.

dig를 통해 도메인에 질의하자 CNAME을 반환

 

CNAME에 질의하여 최종적으로 A레코드를 반환

Alias를 사용하는 경우:

api.example.com → A 레코드(IP 주소)

Route 53이 대신 API Gateway 도메인의 IP를 가져와 응답해주기 때문에, 단일 질의로 결과를 바로 받을 수 있습니다.

dig 명령어로 비교해 보면, CNAME은 도메인 질의를 한 번 더 거치는 반면, Alias는 첫 요청의 응답이 A레코드입니다.

 

4. 언제 무엇을 사용해야 할까요?

항목 Alias CNAME
루트 도메인에서 사용 가능 O X
DNS 질의 횟수 1회 최소 2회
대상 리소스 AWS 리소스 (CloudFront, ALB 등) 외부 도메인 이름

추천 기준은 다음과 같습니다.

  • AWS 리소스와 연결할 경우에는 Alias를 사용하는 것이 좋습니다.
  • 도메인과 도메인을 연결하는 경우(CNAME의 본래 용도)에는 CNAME을 사용합니다.
  • 루트 도메인(example.com)에서는 CNAME을 사용할 수 없기 때문에 Alias만이 유일한 선택지입니다.

5. 성능 및 운영 고려사항

Alias는 CNAME보다 DNS 질의 횟수가 적고, 루트 도메인에서도 사용할 수 있다는 점에서 실무적으로 유리합니다.
특히, 중간 CNAME 도메인이 지리 기반 분기(Geo DNS), 복잡한 로드밸런싱 등을 수행하는 경우, CNAME의 추가 질의가 전체 응답 시간에 영향을 줄 수 있습니다.

물론, 이런 차이가 실제 성능 병목으로 이어지는지는 트래픽 규모와 아키텍처에 따라 다르므로, 실제 서비스 환경에서 테스트를 통해 검증하는 것이 가장 정확합니다.


참고 자료

 

 

 

 

'AWS' 카테고리의 다른 글

AWS self managed kubernetes 구축 아이디어  (0) 2025.07.16
CloudFront VPC Origin - 퍼블릭 노출 피하기  (0) 2025.05.19