CNAME(Canonical Name)

소프트웨어 마에스트로 14기 팀 프로젝트에서 나는 백엔드 파트를 담당하여 Spring Boot를 통한 API 서버 개발을 하게 되었다. DNS 설정을 하면서 ‘CNAME’이라는 키워드를 접하게 되었고, 정확한 정의를 학습하기 위해 게시글을 작성하게 되었다.


Canonical?

  Canonical은 캐논의 형용사이며 문자 그대로 규칙이며 표준, 전형적, 독특한 고유 표본을 의미한다고 한다.
  프로그래밍에서 canonical규정대로하는 프로그래밍을 의미하며, non-canonical규정에 따르지 않고하는 프로그래밍을 의미한다는데, 때때로 프로그래밍 인터페이스가 특정한 표준을 따르는지, 아니면 전례를 따르는지, 또는 그런 것들로부터 무관한지 여부를 식별하기 위해서 사용되는 용어라고 한다.

CNAME(Canonical Name)

  DNS(Domain Name System) 레코드의 한 종류로, 한 도메인 이름을 다른 도메인 이름으로 매핑하는 것을 뜻한다. 하나의 웹 서버에 여러 서비스나 웹 사이트를 운영할 때 주로 사용한다.
  예를 들어 www.example.com이라는 도메인이 있고, 이를 example.com으로 리다이렉트하고 싶을 때 CNAME 레코드를 사용해 www.example.comexample.com으로 매핑할 수 있다. 이렇게 하면 사용자가 www.example.com을 방문하려고 하면 example.com으로 자동으로 리다이렉트된다.
  다만, CNAME 레코드는 다른 도메인으로 완전히 리다이렉트하기 때문에, CNAME이 설정된 도메인에 대해 다른 DNS 레코드를 가질 수 없다. 예를 들면, CNAME이 설정된 도메인에 대해 MX (Mail Exchanger) 레코드를 설정하려고 하면 문제가 발생할 수 있다. 이런 경우에는 다른 유형의 DNS 레코드인 Alias 레코드를 사용하면 된다. Alias 레코드는 CNAME과 비슷하게 동작하지만, Alias가 설정된 도메인에 대해 다른 DNS 레코드를 가질 수 있다.

CNAME 레코드를 사용하는 이유

  1. 도메인 이름의 추상화: CNAME 레코드는 한 도메인 이름을 다른 도메인 이름에 매핑하므로, 하나의 IP 주소에 여러 도메인 이름을 부여할 수 있다. 이렇게 함으로써 웹 서버의 IP 주소가 변경되더라도 도메인 이름은 그대로 유지할 수 있으며, DNS 레코드만 업데이트하면 된다.

  2. 서비스 분리: 여러 서브 도메인을 관리하고 각각을 서로 다른 서버 또는 서비스로 라우팅하고 싶을 때 CNAME을 사용하면 유용하다. 예를 들어, blog.yourdomain.com, shop.yourdomain.com 등의 서브 도메인을 각각의 서비스로 연결할 수 있다.

  3. 쉬운 관리: CNAME 레코드는 웹 서비스의 마이그레이션을 보다 쉽게 관리할 수 있도록 도와준다. 예를 들어, 서버를 이동하거나 클라우드 서비스로 전환할 때 CNAME 레코드를 사용하여 사용자가 눈치채지 못하게 웹사이트의 주소를 변경할 수 있다.

  4. CDN 및 SaaS 통합: 많은 CDN (Content Delivery Network) 및 SaaS (Software as a Service) 제공업체들은 서비스 통합을 위해 CNAME 레코드를 사용한다. 이를 통해 고객의 도메인을 해당 서비스의 도메인에 매핑할 수 있습니다. 이 경우, 고객은 서비스 제공업체의 복잡한 인프라를 직접 관리할 필요 없이 자신의 도메인 이름을 유지할 수 있다.

  5. 편의성과 유연성: CNAME 레코드를 사용하면 한 웹 서버에 여러 서비스나 웹사이트를 운영하고 각각에 서로 다른 도메인 이름을 제공하는 등의 유연성을 가질 수 있다. 도메인 이름을 변경하거나 추가할 필요가 있을 때는 CNAME 레코드만 업데이트하면 된다.

MX 레코드

  도메인의 이메일 메시지를 어디로 전달해야 하는지를 나타내는 DNS 레코드이다. 이메일 서버의 주소와 우선순위를 가리키며, 이메일을 전송하는 측의 시스템은 이 정보를 사용하여 메시지를 올바른 서버로 라우팅한다. MX 레코드가 여러 개인 경우에는 우선순위가 가장 높은 (즉, 숫자가 가장 낮은) 서버에 먼저 메시지를 전송하고, 해당 서버가 사용할 수 없는 경우에는 우선순위가 다음으로 높은 서버로 메시지를 전송한다.

Alias 레코드

  AWS Route 53과 같은 일부 DNS 서비스에서 사용되는 특별한 유형의 레코드이다. 기본적으로 CNAME 레코드와 유사한 방식으로 작동하지만, 몇 가지 중요한 차이점이 있는데, CNAME 레코드와 달리 도메인의 최상위 레벨에서 사용할 수 있으며, 또한 MX 레코드나 NS (Name Server) 레코드와 같은 다른 DNS 레코드와 함께 사용할 수 있다고 한다. 특히 AWS의 서비스, 예를 들어, Amazon S3 버킷, CloudFront 배포, Elastic Beanstalk 환경, ELB 로드 밸런서, Amazon API Gateway 등을 도메인에 매핑하는 데 많이 사용된다.


Reference