Route53이란?
DNS 서비스이다. 도메인 네임을 관리하고, 사용자의 인터넷 요청을 웹 애플리케이션 서버, 클라우드 기반 애플리케이션 또는 다른 인프라로 라우팅하는 데 사용된다.
DNS 관리 기능 외에도 도메인 등록, 트래픽 라우팅, 가용성 모니터링 기능을 제공한다.
주요 기능
- 도메인 이름 등록
- Route 53을 통해 도메인 이름을 등록하고 관리할 수 있다. 사용자는 쉽게 Route 53을 통해 도메인을 구매하거나 관리할 수 있다. 또는 다른 도메인 등록 서비스에서 도메인을 이전할 수도 있다.
- DNS 관리
- 도메인 이름을 IP 주소로 변환해주는 DNS 서비스이다. Route 53은 도메인에 대한 DNS 레코드(A, CNAME 등)를 생성하고 관리하여, 웹 트래픽을 올바른 서버로 라우팅할 수 있다.
- 트래픽 라우팅 정책
- 다양한 트래픽 라우팅 정책을 지원한다.
- 단순 라우팅: 단일 IP 주소로 트래픽을 라우팅.
- 지연 시간 기반 라우팅: 가장 짧은 네트워크 지연 시간을 기준으로 트래픽을 라우팅.
- 장애 조치 라우팅: 기본 리소스가 실패할 경우 백업 리소스로 트래픽을 전환.
- 가중치 라우팅: 각 리소스에 가중치를 할당하여 트래픽을 분배.
- 지리적 라우팅: 사용자 위치를 기반으로 트래픽을 라우팅.
- 지리적 근접성 라우팅: 리소스와 사용자 간의 지리적 근접성을 기준으로 트래픽을 라우팅.
- 헬스 체크
- Route 53은 웹 애플리케이션의 상태를 모니터링할 수 있다.
- 헬스 체크를 통해 서버가 정상인지 확인하고, 문제가 있는 경우 자동으로 트래픽을 다른 서버로 전환하여 애플리케이션 가용성을 유지할 수 있다.
- DNS Failover
- 특정 리소스가 다운되었을 때 자동으로 다른 리소스로 트래픽을 전환하는 장애 조치 기능을 제공한다.
- 이를 통해 서비스 가용성을 높일 수 있다.
- 통합 클라우드 관리
- AWS의 다른 서비스들, S3, EC2, Elastic Load Balancer, CloudFront와 쉽게 통합할 수 있다.
- 이를 통해 인프라 관리가 통합적으로 이루어진다.
일반적인 사용 사례
- 웹사이트 트래픽 관리
- 사용자의 웹 트래픽을 최적의 서버로 라우팅하는 데 사용된다.
- 지연 시간을 기반으로 가장 빠른 서버로 트래픽을 보내거나, 장애 발생 시 백업 서버로 자동으로 전환할 수 있다.
- 멀티 리전 애플리케이션
- 전 세계 여러 AWS 리전에 배포된 애플리케이션에 Route 53을 활용하여 사용자가 지리적으로 가까운 서버로 빠르게 접속하도록 라우팅할 수 있다.
- 도메인 네임 관리
- AWS 외부에서 호스팅되는 웹사이트 또는 애플리케이션의 도메인 네임도 Route 53에서 관리할 수 있다.
- 이는 도메인 네임을 일관되게 관리하고 여러 서비스를 통합하는 데 유용하다.
- 서비스 헬스 체크 및 장애 조치
- AWS 인프라에서 호스팅되는 웹 애플리케이션 또는 데이터베이스의 헬스 체크를 수행하고, 장애가 발생하면 트래픽을 백업 리소스로 전환할 수 있다.
- 하이브리드 클라우드 솔루션
- Route 53은 온프레미스 데이터 센터와 클라우드 리소르를 연동하여 하이브리드 클라우드 아키텍처에서 사용할 수 있다.
- 이를 통해 유연한 트래픽 라우팅을 구성할 수 있다.
Github Actions와의 연계
Route 53은 CI/CD 파이프라인에서 도메인 네임 변경 및 업데이트 작업에 사용될 수 있다. 예를 들어, GitHub Actions에서 새로운 릴리즈가 배포되면 Route 53의 DNS 레코드를 자동으로 업데이트하여 새 인스턴스나 리소스로 트래픽을 전환하는 등의 작업을 할 수 있다.
AWS CLI 또는 SDK를 이용하여 GitHub Actions 내에서 Route 53 API를 호출해 자동화 작업을 진행할 수 있다.
아래와 같은 방식으로 작성할 수 있다.
name: Update DNS in Route 53 on: push: branches: - main jobs: update-route53: runs-on: ubuntu-latest steps: - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Update DNS Record in Route 53 run: | aws route53 change-resource-record-sets --hosted-zone-id Z3P5QSUBK4POTI \ --change-batch '{ "Comment": "Update DNS record", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "example.com", "Type": "A", "TTL": 300, "ResourceRecords": [ { "Value": "192.0.2.44" } ] } } ] }'
CNAME 레코드를 추가하고 싶은 경우
- name: Update DNS Record in Route 53 run: | aws route53 change-resource-record-sets --hosted-zone-id Z3P5QSUBK4POTI \ --change-batch '{ "Comment": "Update CNAME record", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "www.example.com", "Type": "CNAME", "TTL": 300, "ResourceRecords": [ { "Value": "example.com" } ] } } ] }'
이메일 서버를 위한 MX 레코드 추가
- name: Update DNS Record in Route 53 run: | aws route53 change-resource-record-sets --hosted-zone-id Z3P5QSUBK4POTI \ --change-batch '{ "Comment": "Update MX record", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "example.com", "Type": "MX", "TTL": 300, "ResourceRecords": [ { "Value": "10 mailserver.example.com" } ] } } ] }'
TXT 레코드 추가 (도메인 인증)
도메인 소유권을 인증하거나 SPF 설정을 위해 TXT 레코드를 추가해야할 수도 있다.
- name: Update DNS Record in Route 53 run: | aws route53 change-resource-record-sets --hosted-zone-id Z3P5QSUBK4POTI \ --change-batch '{ "Comment": "Update TXT record", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "example.com", "Type": "TXT", "TTL": 300, "ResourceRecords": [ { "Value": "\"v=spf1 include:_spf.example.com ~all\"" } ] } } ] }'