우리의 타겟 사용자와 머신이 클라우드 리소스에 쉽게 접속할 수 있게 하는 것은 매우 중요한 일이다. 네트워크를 통해서 우리가 만든 콘텐츠에 접속하려면
가용성, 속도, 정확성 등 세가지 요소가 겸비되어야 한다.
DNS(Domain Name System)은 우리의 리소스를 사람이 읽을 수 있는 주소 방식으로 접근할 수 있도록 돕는 시스템이며, 인터넷 DNS 인프라를 통해 읽기 편한 amazon.com 같은 도메인 네임으로 시스템에 접근이 가능하다.
Amazon의 Route 53은 관리형 도메인 서비스로서, 리소스에 대한 접근의 정확성, 신뢰성, 속도를 제공한다. Amazon의 글로벌 CDN(Content Delivery Network)서비스인 CloudFront는 속도 및 정확성 외에 몇 가지 장점을 추가한 서비스다.
도메인 네임 시스템은 사람이 읽기 편한 도메인 네임과 머신이 읽을 수 있는 IP주소를 맵핑하기 위한 시스템 이다.
AWS에서 인터넷 네트워크로 연결되는 서비스를 시작할 떄 해당 서비스를 도메인 네임으로 연결할 수 있으며, 이를 위해서 몇가지 환경설정 요구사항을 충족해야 한다.
인터넷 네임 시스템은 네임스페이스(namespace)라는 도메인 네임 체계로 관리된다. 인터넷은 퍼블릭 또는 프라이빗 IP를 통하거나 톱레벨 도메인 을 통해 접근할 수 있는 소규모의 네임스페이스로 구획이 나눠진 가상의 공간이라 할 수 있다.
이 이름의 체계를 정의하는 Internet Protocal(IP)와 도메인 네임의 계층 구조는 ICANN이라는 기구가 관장한다.
도메인 네임과 실제 IP 주소를 연결하는 일은 네임 서버가 담당한다. 모든 컴퓨터는 로컬에서 접근할 수 있는 간단한 네임 서버 데이터베이스를 지니며 여기에는 localhost와 같은 호스트네임 엔트리와 IP주소 정보가 포함된다.
일반적으로 PC 의 /etc/hosts 같은 호스트 파일에서 접속정보같은게 정의되어 잇다. 로컬 네임 서버에서 처리되지 못하는거는 컴퓨터의 네트워크 인터넷인터페이스 환경설정에 명시된 외부 DNS 네임 서버로 전달된다. 이 떄의 환경설정은
Google의 8.8.8.8 또는 OpenDNS의 208.67.222.222등 퍼블릭 DNS를 가리키도록 되어있다.
네임 서버는 우리가 입력한 도메인 네임에 해당하는 IP주소를 제공해 브라우저 등 애플리케이션이 우리의 요청이 완결되도록 도와준다.
인터넷 주소 체계에서 도메인(domain)은 단일 도메인 네임으로 식별 가능한 하나 이상의 서버, 데이터 저장소, 또는 디지털 리소스를 의미한다.
도메인 넴은은 해당 도메인을 위해 공식 기구에 등록된 이름이며, 등록된 이름은 도메인이 가리키는 리소스를 네트워크로 직접 연결하는데 사용될 수 있다.
네임 서버에 등록된 새로운 도메인 네임을 전파하는 일은 도메인 네임 등록자 또는 레지스트리(registrar)가 수행한다.
도메인 네임 등록자는 도메인 네임의 예약을 관리하는 사업자로서, 톱레벨 도메인 업무를 관장하는 등록 운영자와 협업해 도메인 등록 업무가 글로벌 단위로 처리될 수 있도록 한다.
Amazon Route 53은 도메인 네임 등록자와 같은 역할을 수행하는 서비스이다.
도메인 네임은 여러 개의 요소로 구성된다 .com 또는 .org등 도메인 네임의 최우측 텍스트는 TLD(톱레벨도메인)이고 TLD의 우측 요소 amazon.com에서의 amazon은 2단계 도메인, 세컨드레벨 도메인(SLD) 이다.
서브도메인은 도메인 리소스의 하위 요소를 식별하는데 도움을 준다.
예를들어 대학 메일은 administration.school.edu라는 이름등으로 사용 가능하다.
기본 DNS 설정에서 시스템의 기본 도메인 네임은 부분적인 도메인 네임과 서버에 대한 요청 사항이 자동으로 결합돼 완성된다.
전체 주소 도메인 네임(FQDN, Fully Qualified Domain Name)은 서브도메인과 TLD를 포함해 도메인의 절대 주소 정보를 모두 지니며 TLD뒤에 다시 후속 닷(trailling dot)문자를 추가해 FQDN임을 명시한다.
존(zone) 은 DNS 도메인을 정의한 것이며, Route 53은 존을 호스팅 영역이라 부른다. 존 파일은 도메인 내에서 DNS 주소에 맵핑되는 리소스를 설명하는 텍스트 파일이다.
Name : 정의된 도메인 네임 또는 서브도메인 네임
TTL : 레코드 만료전 유효시간
Record Class : 레코드의 네임스페이스, 보통 IN을 사용 (internet)
Record Type : 레코드에 의해 정의된 레코드 타입(A, CNAME등)
예를들어서 아래의 예시는
example.com 1h IN NS ns-750.awsdns-30.net.
internet 클레스 레코드에서 1시간의 유효시간동안 ns-750.awsdns-30.net값을 지니는 example.com도메인의 네임서버를 정의하는 뜻이다.
존 파일의 리소스 레코드에 입력하는 레코드 타입은 레코드 데이터의 포맷과 활용 방법을 결정한다.
A : IPv4 IP 주소에 호스트네임을 맵핑함
CNAME : Canonical name 으로 하나의 호스트네임을 알리아스로 사용할 수 있도록한다.
MX : Mail exchange - 도메인을 특정 메시지 변환 에이전트로 맵핑함.
AAAA : IPv6 IP 주소에 호스트네임을 맵핑함.
NS : 존에 의해 사용되는 네임 서버 식별
SOA : start of authority - 존의 관리 권한 메타 정보 정의
알리아스 레코드(alias record)를 이용하면 IP 주소 변경 없이 ELB등 특정 리소스로 트래픽 경로를 설정할 수 있따. 알리아스 레코드 사용과 관련해서 다수의 서비스 공급 사업자 간에 표준으로 확정된 것은 없지만
Route 53은 레코드 세트에서 알리아스 레코드를 사용해 AWS의 네트워크로 연결된 리소스로 직접 라우팅 할 수 있도록한다.
Route 53은 아래의 네가지 영역에 초점을 맞춘 서비스 이다.
참고로 route 53에서 53이라는 숫자는 DNS 트래픽이 TCP 또는 UDP의 53 포트를 사용하는데서 착안되었다.
도메인은 ICANN 인증 등록 사업자 또는 레지스트라중 어느곳에서도 등록할 수 있지만. Route53에서는 좀 더 간단하게 도메인 등록 작업을 마칠 수 있다.
AWS 인프라와 연계뙨 도메인의 경우 Route53을 이용해 업무 절차를 간소화 할 수 있다.
기존 도메인을 AWS로 이전하는 경우 기존 레지스트라의 어드민 인터페이스에 있는 도메인 이전 설정을 변경하고, 이에 대한 인증 코드를 요청한 뒤 Route53에 해당 인증 코드를 제공하면 이전 작업이 완료된다.
도메인을 등록한 뒤에 리소스와 연결하지 않으면 해당 도메인으로 별다른 일을 할 수 없다. Route53은 호스팅 영역 설정을 통해 사용자가 브라우저, 이메일 클라이언트, 또는 프로그래밍 방식으로 우리의 도메인 네임을 호출해 사용할 수 있도록 돕는다.
Route53에서 호스팅 영역을 생성한 뒤 우리의 도메인 네임을 입력하면 프라이빗 호스팅과 퍼블릭 영역중에 선택을 해야한다.
프라이빗 호스팅 영역은 우리가 지정한 AWS VPC를 통해서만 해당 리소스에 접근 할 수 있도록 하며 외부 사용자의 접근을 허용할 필요가 있다면 퍼블릭 호스팅 영역으로 설정하면 된다.
Route53은 자동으로 SOA(start of authority)레코드를 생성하고 4개의 네임 서버 주소를 제공한다. 그 다음부터는 새 레코드 세트 정의를 통해 우리가 원하는 도메인과 서브도메인의 관계를 설정하고 리소스와 연결하는 등의 작업을 수행하면된다.
관리자는 리소스가 정상적으로 작동하는지 확인해야한다. Route53은 리소스의 헬스 체크 모니터링 기능을 통해 문제의 해결 방안을 제시한다.
새 레코드 세트 생성 시, 라우팅 정책 선택 옵션이 제공되며 Simple 정책을 선택하면 헬스 체크와 정책을 간단하게 연결할 수 있다.
헬스 체크 또는 상태 검사 기능은 레코드 세트에 연결된 리소스의 성능을 주기적으로 점검한다. 헬스체크가 정상이면 route53은 해당 리소스로 트래픽을 계속 전송하지만 검증 결과 적절한 반응이 없을 경우 Route53은 해당 리소스가 오프라인 상태가 돼었다고 판단하고 트래픽을 백업 리소스로 우회시킨다.
애플리케이션 호스팅 환경은 쉽고 빠르게 서비스에 접속할 수 있는 유연한 프로토콜을 제공해야한다.
Route53의 라우팅 정책은 도메인 레벨에서 유연성을 제공하며 모든 AWS리전에서 일관되게 적용할 수 있다.
Route53의 Traffic flow는 복잡한 라우팅 정책 조합을 시각화 하는 콘솔 기반 그래픽 인터페이스다.
Traffic Flow는 라우팅 정책과 AWS계정의 모든 리소스 엔드포인트를 통합할 수 있다.
따라서 복잡할 수 있는 라우팅 구조를 쉽고 간단하게 구현할 수 있게 해주며, 다양한 라우팅 템플릿을 바로 활용하거나 템플릿 커스터 마이징도 가능하다.
AWS 리소스와 AWS외부의 리소스를 통합해 하이브리드 인프라를 구성하는 경우, Route53 Resolver를 이용해 라우팅을 관리할 수 있다.
Resolver는 양방향 주소 쿼리를 이용해 AWS리소스와 외부에 존재하는 온프레미스 리소스의 라우팅을 관리할 수 있다.
Amazon의 글로벌 CDN 서비스인 cloudfront는 전세계 고객에게 신속하게 콘텐츠를 제공하는것을 가능하게 한다.
CloudFront는 콘텐츠를 요청한 엔드 유저와 지리적으로 가까운 엣지 로케이션을 기반으로 제공되는 네트워크 서비스로 CloudFront 콘텐츠 배포 방식을 사용하면
글로벌 네트워크를 통해 전세계 고객에게 콘텐츠를 제공할 수 있다.
엔드우저가 자신가 가까운 cloudfront를 호출하는게 아니라 Route53환경설정으로DNS 요청을 CloudFront 배포에 전달하면 엔드 유저가 자동으로 자신과 가까운 엔드포인트로 연결되는 방식이다.
요청이 접수되면 CloudFront는 유저의 위치를 파악한 뒤 전송 지연 수준이 가장 낮은 엔드포인트를 찾는다. 최초 요청시에는 원본서버에서 복사된 콘텐츠를 제공하며 이후 다시 요청하는 경우 엔드포인트에 복사본을 캐싱해둔 상태이므로 전송 속도가 훨씬 빨라진다.
CloudFront배포의 종류는 콘텐츠의 미디어 타입에 따라 달라진다. 웹 페이지나 그래픽 콘텐츠의 경우 web distribution을 선택하고 S3 버킷에 저장된 Adobe RTMP(real time messaging protocol) 기반 비디오 콘텐츠의 경우 RTMP distribution을 선택하는 것이 좋다.
배포시 ACM SSL/TLS 암호화 인증서 추가 선택이 가능하며 이 인증서를 통해서 cloudfront에서 유저에게 전송되는 중간에 콘텐츠를 가로채는 스니핑이나 공격 행위를 방어 할 수 있다.