aws

[AWS]DNS와 CDN: Route 53과 CloudFront

하리하링웹 2024. 7. 30. 17:08

도메인 네임 시스템(DNS)

AWS에서 인터넷 네트워크로 연결되는 서비스 시작 시 해당 시버스를 도메인 네임으로 연결할 수 있으며 Amazon Route 53이 이를 도와주는 서비스이다.

네임스페이스

IP 주소를 사람이 식별하기 편한 이름으로 변경 시 중복되는 이름이 있으면 안되기떄문에 이러한 인터넷 네임 시스템은 네임스페이스라는 도메인 네임 체계로 관리된다. 인터넷은 퍼블릭, 프라이빗 IP를 통하거나 TLD를 통해 접근할 수 있는 네임스페이스로 구획이 나눠진 가상의 공간이라 말할 수 있다.

네임 서버

amazon.com과 IP 주소를 연결하는 일은 네임 서버가 담당한다. 모든 컴퓨터는 로컬에서 접근할 수 있는 간단한 네임서버 데이터베이스를 지니며 여기에 localhost와 같은 호스트네임 엔트리, IP 주소가 포함된다.

도메인과 도메인 네임

인터넷에서 도메인은 단일 도메인 네임으로 식별 가능한, 하나 이상의 서버, 데이터 저장소 또는 디지털 리소스를 의미한다. 도메인 네임은 해당 도메인을 위해 공식 기구에 등록된 이름이며, 등록된 이름은 도메인이 가리키는 리소스를 네트워크로 직접 연결하는데에 사용될 수 있다.

도메인 등록

톱레벨 네임 서버는 쿼리에 응답하기 전 새 도메인 네임의 이름을 알고 있어야한다. 네임 서버에 새로운 도메인 네임을 전파하는 일은 도메인 네임 등록자 또는 레지스트라가 수행한다. 도메인 네임 등록자는 도메인 네임 예약을 관리하는 사업자로써 Amazon Route 53은 도메인 네임 등록자와 같은 역할을 수행하는 서비스이다.

도메인 레이어

도메인 네임은 여러 개의 요소로 구생된다 아래는 예시이다

aws.amazon.com

amazon.com = 서브도메인

→ amazon = SLD

→ com → TLD

전체 주소 도메인 네임

기본 DNS 설정에서 시스템의 기본 도메인 네임은 부분적인 도메인 네임과 서버에 대한 요청 사항이 자동으로 결합되어 완성된다. 예를 들어 worksatation 요청 시 workstation.localhost와 같이 표현될 수 있다. 이런 방식이 아니라 도메인 네임 그대로 요청을 전달하려는 경우 전체 주소 도메인네임을 사용하면 된다.

존과 존 파일

존은 DNS 도메인을 정의한 것이며 Route 53은 존을 호스팅 영역이라 부른다. 존 파일은 도메인 내에서 DNS 주소에 맵핑되는 리소스를 설명하는 텍스트 파일로써 아래와 같은 리소스 레코드로 구성된다.

  • Name: 정의된 도메인 네임 또는 서브 도메
  • TTL: 레코드 만료전 유효시간
  • Record Class: 레코드의 네임스페이스, 보통 IN을 사용
  • Record Type: 레코드에 정의된 레코드 타입

레코드 타입

존 파일의 리소스 레코드에 입력하는 레코드 타입은 레코드 데이터의 포맷과 활용 방법을 결정한다. 현재 약 40개의 레코드 타입이 사용되고 있다.

alias record

alias record를 이용하면 IP 주소 변경 없이 ELB 등 특정 리소스로 트래픽 경로를 설정할 수 있다. Route 53은 레코드 세트에서 alias record를 사용해 AWS의 네트워크로 연결된 리소스로 직접 라우팅할 수 있도록 한다.

Amazon Route53

Route53은 다음 네 가지에 초점을 맞춘 서비스이다.

  • 도메인 등록
  • DNS 관리
  • 가용성 모니터링(Network health check)
  • 트래픽 관리(Route policy 등)

Route 53에서 53이라는 숫자는 DNS 트래픽이 TCP 또는 UDP의 53 포트를 사용하는데서 나온 것이다.

도메인 등록

도메인은 등록 사업자 또는 레지스트라 중 어느곳에서도 등록할 수 있지만 Route 53에서는 더 쉽게 등록할 수 있다. 특히 AWS 인프라와 연관된 도메인은 절차 간소화가 가능하다. 기존 도메인 역시 이전이 가능하다.

DNS 관리

Route 53은 호스팅 영역 설정을 통해 사용자가 브라우저, 이메일 클라이언트, 프로그래밍 방식 중 선택해 도메인 네임을 호출해 사용할 수 있도록 돕는다. Route53에서는 호스팅 영역 생성 후 콘솔, CLI에서 설정이 가능하다.

프라이빗 호스팅 영역은 지정한 AWS VPC를 통해서만 리소스를 접근할 수 있도록 하며, 외부 사용자의 접근을 허용할 필요가 있다면 퍼블릭 호스팅 영역으로 설정하면 된다.

Route 53은 자동으로 SOA 레코드를 생성하고 4개의 네임 서버 주소를 제공한다. 그 뒤에는 새 레코드 세트 정의를 통해 원하는 도메인, 서브 도메인의 관계를 정의하고 작업을 수행하면 된다.

가용성 모니터링

Route 53은 리소스의 헬스 체크 모니터링 기능을 제공한다. 새 레코드 세트 생성 시 라우팅 정책 선택 옵션이 제공되며 Simple 정책 선택 시 헬스 체크와 정책을 간단하게 연결할 수 있다.

헬스 체크 또는 상태 검사 기능은 레코드 세트에 연결된 리소스의 성능을 주기적으로 점검한다. 결과가 정상이면 그대로 동작하지만 비정상이면 Route 53은 해당 트래픽을 백업 리소스로 우회시킨다.

라우팅 정책

Route 53의 라우팅 정책은 도메인 레벨에서 유연성을 제공해주며 모든 AWS 리전에서 일관되게 적용할 수 있다. 라우팅 옵션의 특징 및 차이점은 아래와 같다.

가중치 라우팅

가중치 라우팅 정책은 설정 비율에 따라 다수의 리소스에 트래픽을 분산한다. 용량이 큰 서버가 있으면 해당 서버쪽으로 가중치를 줘 효율적으로 자원을 사용할 수 있다. Route 53에서는 서버마다 별도의 레코드 세트를 생성하고, 각 레코드 세트마다 동일한 세트 ID 값을 할당한 뒤 인스턴스마다 가중치 값을 입력하면 된다.

지연 라우팅

다수의 AWS 리전에서 실행되는 리소스를 조합해 좋은 UX를 제공해주기 위한 좋은 방법이다. 예를들어 고객이 아시아, 유럽에 있는 경우 각 리전에 병렬적으로 리소스를 배치하여 전송 지연이 가장 낮은 쪽으로 트래픽을 전송해준다. Route 53은 이를 쉽게 할 수 있도록 해준다.

실패대응 라우팅

헬스 체크 결과 정상적으로 작동하는 리소스에 우선적으로 트래픽을 전송한다. 만약 기본 리소스가 오프라인이 되면 다음 트래픽은 2차 레코드 세트로 정의된 보조 리소스로 전송하는 방식이다.

지리적 라우팅

대륙, 국가, 미국의 주 등 요청이 발신된 지역 기준으로 라우팅 방식을 결정한다. 이 방식 선택 시 해당 지역 고객의 니즈에 맞는 콘텐츠를 제공하기 적합하며 각 지역에 맞게 금지된 콘텐츠를 차단해주고 특정 지역에서 마케팅을 할 수 있는 등의 작업을 할 수 있다.

다변량 라우팅

고가용성 제공을 위해 헬스 체크 설정과 다변량 라우팅 정책을 결합할 수 있다. 다수의 변수 값을 지닌 레코드 세트로 하나의 리소스를 가리키도록 하고, 이를 헬스 체크와 연계하는 방식이다. 최대 8개의 레코드를 이용해 병렬적으로 리소스를 가리키도록 할 수 있으며, 세트 ID 값으로 서소를 연결하면 된다. Route 53은 헬스 체크를 통해 리소스 상태를 모니터링하고 정상 리소스에 무작위로 트래픽을 전송한다.

Traffic Flow

Route 53의 Traffic flow는 복잡한 라우팅 정책 조합을 시각화하는 콘솔 기반 GUI 이다.

Traffic flow는 라우팅 정책과 AWS 계정의 모든 리소스 엔드포인트를 통합할 수 있어 복잡한 라우팅 구조를 쉽게 구현할 수 있으며 다양한 템플릿을 사용할수도 있다.

Traffic flow은 근접위치 라우팅으로 기존 지리적 라우팅 정책 옵션에 비해 세분화된 위치 정밀도를 제공해준다. 또한 경도 기반 측정, 리전단위 측정 등 룰을 지정할 수 있다.

Route 53 Resolver

AWS 리소스와 AWS 외부의 리소스를 통합해 하이브리드 인프라를 구성하는 경우, Route 53 Resolver를 이용해 라우팅을 관리할 수 있다. Resolver는 양방향 주소 쿼리를 이용해 AWs 리소스와 AWS 외부에 존재하는 온프레미스 리소스의 라우팅을 관리할 수 있으며, 프라이빗 및 퍼블릭 플랫폼 기반의 워크로드를 매우 간편하게 처리할 수 있다.

Amazon CloudFront

amazon의 글로벌 CDN 서비스이다. 엣지 로케이션 기반으로 제공되는 네트워크 서비스로 CloudFront에 콘텐츠 배포 방식을 설정하면 글로벌 네트워크를 통해 전 세계 고객에게 콘텐츠를 제공할 수 있다.

엔드 유저가 Route 53 환경설정으로 DNS 요청을 CloudFront distribution에 전달하면 엔드 유저가 자동으로 자신과 가까운 엔드포인트로 연결되는 방식으로 동작한다.

엔드 유저의 요청이 접수되면 CloudFront는 유저의 위치를 파악한 뒤 전송 지연이 가장 낮은 엔드포인트를 찾는다. 엔드 유저가 처음 요청한 경우 콘텐츠는 EC2 웹서버, S3 버킷 등 원본 서버에서 복사되어 제공되며 이후에는 캐싱된 상태이므로 훨씬 빠른 속도로 제공이 가능하다.

CloudFront가 지원하는 원본 또는 오리진은 아래와 같다.

  • Amazon S3 버킷: 접속 가능한 모든 S3 버킷
  • AWS MediaPackage 채널 엔드포인트: 비디오 패키징 및 원본 추적 기능
  • AWS MediaStore 컨테이너 엔드포인트: 미디어 최적화 스토리지 서비스
  • Application Load Balancer: 다수의 EC2 기반 웹 서버
  • Lambda 함수 URL: 서버리스 워크로드
  • 사용자 지정 오리진: HTTP 서버(온프레미스 서버 포함)

정리

  • DNS는 인터넷 리소스의 주소를 관리하는 시스템이며, IP 주소를 도메인 네임으로 맵핑한다. ICANN은 VeriSign 등 등록 운영자 등을 통해 네임서버 및 도메인 네임 등록 대행 사업자를 관리하며 Route 53은 등록 대행 사업자의 역할을 수행한다.
  • FQDN, 전체 주소 도메인 네임은 TLD와 SLD로 구성되며 루트 도메인임을 나타내기 위해 후속 닷 기호를 사용한다.
  • DNS 환경설정은 호스팅 존 기반으로 이뤄지며 레코드 세트를 생성해 인바운드 도메인 트래픽을 처리한다. 호스팅 존을 정의하는 주요 레코드 타입으로는 A, CNAME, MX 등이 있다.
  • Route 53 호스팅 존에는 SOA 레코드 세트와 요청 내용이 향하게 될 네임 서버 목록이 포함되며, Route 53이 유입되는 도메인 네임 요청을 처리할 수 있도록 최소 하나 이상의 레코드 세트를 생성해야 한다.
  • Route53에서 헬스 체크 기능을 이용해 리소스 실행 상태를 모니터링 할 수 있다. 또한 문제 상황에 대한 경고, 가용성 향상을 위한 Route 53 정책과 함께 사용도 가능하다.
  • 가중치 라우팅은 리소스 처리 용량을 비율로 정해 다수의 리소스가 병렬적으로 트래픽 처리가 가능하고, 지연 라우팅은 전송 지연이 가장 낮은 다수의 리소스에 트래픽을 전송한다. 실패대응 라우팅은 리소스를 모니터링하다가 실패 시 백업 리소스에 트래픽을 우회시키며, 지리적 라우팅은 요청 위치와 이에 대한 대응 위치를 고려해 라우팅 경로를 제공한다.
  • Amazon CloudFront는 글로벌 CDN 서비스로서 엣지 로케이션에 웹사이트와 디지털 미디어 등 콘텐츠를 캐싱한 뒤 고객이 요청 시 신속하게 콘텐츠를 제공해준다.

'aws' 카테고리의 다른 글

[AWS] DNS와 CDN: Route 53과 CloudFront  (0) 2024.08.04
[AWS]데이터 유입, 변환, 분석  (0) 2024.08.01
[AWS] 모니터링  (0) 2024.07.28
[AWS] IAM  (0) 2024.07.20
[AWS]데이터베이스 (2)  (0) 2024.07.18