Home AWS 리소스를 활용한 도메인 연동
Post
Cancel

AWS 리소스를 활용한 도메인 연동

요구사항

기술 지원 업무의 일환으로 AWS 리소스를 활용한 도메인 연동 기능에 대한 관리 및 유지보수 업무를 담당하게 되었습니다. 제대로된 이해 없이 해당 업무를 진행할 경우, 예상치 못한 에러 케이스를 마주할 때 정확한 원인 파악과 대처가 불가능하게 때문에 AWS 내에서 해당 기능의 설계 및 동작 원리에 대해서 이해가 필요했습니다.

우선 기능 구현을 위해 사용된 AWS 리소스 개념에 대해 알아보도록 하겠습니다.

사용된 AWS 리소스

Route53

Amazon Route53는 AWS에서 제공하는 DNS 웹 서비스입니다.

DNS(Domain Name System)
사람이 읽기 쉬운 문자로 된 도메인 주소를 IP 주소로 변환해주는 역할을 하는 기능

Route53을 사용하면 도메인 등록, DNS 라우팅, 상태 확인 등의 기능을 활용할 수 있어 AWS 내에서 제공하는 다양한 리소스와 도메인을 확장성과 유연성을 가진 상태로 연동할 수 있습니다.

Route53을 활용해 도메인을 연동하기 위해선 아래 세가지 레코드 값을 등록해야 합니다.

  1. 네임서버 레코드
    • 네임서버란, DNS 서버와 같은 의미로서 도메인 주소값과 매핑되는 IP 주소 정보를 가지고 있는 서버를 의미합니다.
    • 호스팅사를 통해 도메인을 구매하는 경우, 도메인 별로 할당되는 네임서버 값이 있는데 이 값을 Route53에 네임서버값으로 등록해야 합니다.
  2. A 레코드
    • Address record의 줄임말로 도메인과 연동될 실제 IP 주소를 의미합니다.
    • Route53에선 여러 개의 A 레코드를 등록해 활용할 수 있습니다.
  3. CNAME 레코드
    • 대체 도메인 값으로, 연동하고자 하는 도메인의 지정하고자 하는 다른 도메인 값을 의미합니다.
    • Route53에서는 CNAME을 활용해 ACM에서 발급한 SSL 인증서를 통해 인증을 진행합니다.

CloudFront

CloudFront는 AWS에서 제공하는 CDN 서비스로 .html, .css .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다.

CDN(Content Delivery Network)
데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크

CloudFront를 사용할 경우, 가질 수 있는 장점은 다음과 같습니다.

  • 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공하기 때문에 데이터 전송 속도가 빠릅니다.
  • 엣지 로케이션에 분선 저장되어 있어 유지 및 가용성이 증가합니다.
  • HTTPS 주소를 사용할 수 있게 SSL 인증 기능을 제공합니다.
  • 다양한 원본 도메인 형태(S3, EC2, 로드벨런서 등)를 제공합니다.

데이터 전송이 빠른 이유
전 세계에 위치하고 있는 엣지 로케이션들에 사용자들의 콘텐츠 정보를 캐싱하고 있다가 요청이 오면 가장 가까운 위치에 있는 엣지에서 해당 컨텐츠 정보를 전송해주기 때문입니다. CloudFront는 요청에 대한 콘텐츠를 가장 효과적인 네트워크 방식으로 찾아낼 수 있도록 지원해줍니다.

CloudFront를 통해 특정 도메인과 연결하면 , 배포된 CloudFront를 통해 해당 도메인으로 콘텐츠 요청을 전달해줄 수 있습니다.

ACM

ACM(Amazon Certificate Manager)은 AWS 웹 사이트와 애플리케이션을 보호하는 퍼블릭 및 프라이빗 SSL/TLS 인증서와 키를 생성, 저장, 갱신하는 기능을 제공합니다.

도메인의 안정성을 보장하기 위해 HTTPS 주소를 제공해야 하고, 이를 위해 ACM을 활용할 수 있습니다.

인증서 생성 후 발급되는 CNAME 이름과 값을 원하는 도메인 Route53 리소스에 CNAME 레코드로 등록해야 정상적으로 인증서가 검증을 통해 생성됩니다.

동작 방식

위 세가지 리소스를 활용해 도메인 연동 기능을 구현한다면 동작 방식은 아래와 같습니다.

  1. 사용자가 특정 도메인으로 데이터 요청을 보냅니다.
  2. 도메인에 해당하는 route53 호스팅 영역에서 A 레코드(CloudFront)로 요청을 전달해줍니다.
  3. 요청을 전달받은 CloudFront에선 연동된 ACM 인증서를 가지고 SSL 인증 절차를 거칩니다.
  4. 인증에 성공하면 CloudFront에 등록된 원본 도메인(EC2 엔드포인트)에 요청을 전달합니다.

* 위 과정을 표현한 다이어그램은 아래와 같습니다.

도메인 연동 순서

연동 과정에 대한 자세한 이미지 파일 추가 작업 예정

위와 같은 동작 방식이 가능하도록 실제 AWS 리소스를 활용한 도메인 연동 기능 구현 과정은 아래와 같습니다.

  1. Route53 호스팅 영역 생성
  2. ACM 인증서 생성
  3. ACM 인증서 CNAME 이름과 값을 Route53 CNAME 레코드에 추가
  4. 인증서 생성 과정에서 Route53에 연동된 도메인의 소유권과 CNAME값을 확인해 인증서 생성(DNS 검증에 대한 설명)
  5. CloudFront 생성 및 도메인 연결
  6. CloudFront 인증서 연결
  7. Route53 A 레코드에 CloudFront 연결

마치며

위처럼 도메인 연동 기능 구현에 사용된 AWS 리소스에 대한 역할과 관계에 대해 학습하면서 얻은 높은 이해도를 바탕으로 예상치 못한 에러 케이스가 발견되어도 근본적인 문제점을 파악해 해결 방법을 도출해 내는 시간을 단축해 업무의 효율성을 높일 수 있었습니다.

참고자료

This post is licensed under CC BY 4.0 by the author.