DNS 서비스
DNS(Domain Name System)
네트워크 통신을 위한 주소 체계를 문자 형태인 도메인으로 매핑하여 연결하는 서비스
동작 방식
➊ 웹 서버의 IP 주소를 도메인 주소로 사용하고자 ongja.com 도메인을구매하고 등록합니다. 그러면 DNS 서버는 ongja.com의 IP 주소가 무엇인지 알고 정보를 기록해 둡니다.
➋ 사용자는 ongja.com이라는 도메인 주소가 어떤 IP 주소인지 모르고있으므로 해당 정보를 확인하는 작업이 필요합니다.
➌ 사용자는 도메인 주소의 IP 주소를 확인하기 위해 DNS 서버에 ongja.com의 도메인 주소를 요청하고 응답받습니다. 이때 UDP 53번 포트를 사용하는 DNS 프로토콜을 이용하여 통신합니다. 그러면 사용자는 ongja.com에 대한 IP 주소가 무엇인지 알 수 있습니다.
➍ 사용자는 ongja.com의 IP 주소를 알아냈기 때문에 해당 IP 주소로 통신합니다.
도메인 구조
영역별 도메인을 관리하는 주체를 분리하기 위해서 . 으로 구분
루트 도메인
마지막 온점, 일반적으로 이 부분은 생략하고 사용
탑 레벨 도메인
TLD(Top Level Domain), 도메인 주소에서 가장 상위에 위치한 도메인
세컨드 레벨 도메인
SLD(Second Level Domain), cloudneta가 SLD에 해당,이런 SLD는 상위 TLD에서 유일하게 존재하고 식별하는 도메인 영역,일반적으로 도메인 이름은 SLD와 TLD를 합친 형태로 표현
서브 도메인
도메인을 용도에 따라 앞에 명칭을 부여해서 분류,앞의 blog와 test가 서브 도메인
DNS 서버 종류
도메인은 DNS 네임 서버로 관리, 도메인 영역별로 DNS 네임 서버를 분류해서 관리
루트 네임 서버
루트 도메인을 관리하는 DNS 서버를 루트 네임 서버라 한다.
TLD에 해당하는 네임 서버 정보를 응답
루트 네임 서버는 전 세계에 13개만 존재
TLD 네임 서버
도메인 이름의 최상위 영역인 TLD를 관리하는 DNS 서버
TLD 영역에서 식별되는 모든 SLD를 관리하여 DNS요청에 대해 SLD 네임 서버 정보를 응답
해당 도메인에 대한 DNS 요청이 있으면 SLD 네임 서버 주소를 알려 줍니다
SLD 네임 서버
실질적인 도메인 이름을 관리하는 DNS 서버
SLD 네임 서버(권한있는 네임 서버)
도메인의 최종 관리 서버로 권한이 있는 네임 서버
도메인 주소에 대한 IP 주소를 확인하는 가장 마지막 단계
DNS 해석기
사용자와 네임 서버 사이에서 중계자 역할을 수행
사용자가 DNS 해석기로 DNS 요청을 하면, DNS 해석기가 DNS 네임 서버와 정보를 주고받아 도메인 주소를 해석하여 최종적으로 IP 주소를 사용자에게 알려줌
DNS 통신 흐름
DNS 네임 서버들을 이용하여 도메인 주소의 IP 주소를 확인하는 DNS 통신 흐름
➊ 사용자 PC에서 blog.cloudneta.net이라는 도메인 주소의 IP 주소를 알기 위해 DNS 서버에 질의합니다. 여기에서 DNS 서버는 DNS 해석기를 이용하여 다양한 네임 서버와 통신하는 중계자 역할을 수행합니다.
➋ 기본적으로 DNS 해석기는 전 세계에 있는 루트 네임 서버의 주소를알고 있습니다. 해당 루트 네임 서버에 blog.cloudneta.net 도메인 주소의 IP 주소를 물어봅니다. 여기에서 루트 네임 서버는 blog.cloudneta.net이라는 도메인 주소를 알지 못하지만 .net의 TLD 네임 서버는알고 있기 때문에 해당 정보를 DNS 해석기에 전달합니다.
➌ 그러면 DNS 해석기는 .net에 해당하는 TLD 네임 서버에 blog.cloudneta.net 도메인 주소의 IP 주소를 물어봅니다. 여기에서 TLD 네임 서버는 blog.cloudneta.net이라는 도메인 주소를 알지 못하지만 cloudneta.net의 SLD 네임 서버는 알고 있어 해당 정보를 DNS 해석기에 전달합니다.
➍ 다시 DNS 해석기는 cloudneta.net에 해당하는 SLD 네임 서버에 blog.cloudneta.net 도메인 주소의 IP 주소를 물어봅니다. 이 SLD 네임 서버는 도메인 주소의 최종 정보가 있는 ‘권한이 있는 네임 서버’로, blog.cloudneta.net에 대한 IP 주소를 DNS 해석기에 전달합니다.
➎ DNS 해석기는 blog.cloudneta.net에 대해 최종적으로 해석한 IP 주소를 사용자 PC에 전달합니다. 이것으로 사용자 PC는 blog.cloudneta.ne 도메인 주소의 IP 주소를 알게 되어 해당 IP 주소로 통신합니다.
DNS 레코드 유형
DNS 레코드는 도메인에 대한 요청 처리 방법을 정의한 것
용도에따라 DNS 레코드 유형을 분류, 아래는 보편적인 DNS 레코드
A 레코드 유형
도메인을 IPv4 주소로 매핑하는 유형
blog.cloudneta.net이라는 도메인 주소로 질의하면 IPv4 주소인 52.219.60.13으로 응답
AAAA 레코드 유형
도메인을 IPv6 주소로 매핑하는 유형
blog.cloudneta.net이라는 도메인 주소로 질의하면 IPv6 주소인 2001:A10::2001로 응답
NS 레코드 유형
도메인의 네임 서버 주소를 매핑하는 유형
blog.cloudneta.net이라는 도메인 주소로 질의하면 .net의 TLD 네임 서버 주소인
a.gtld-servers.net.이라는 도메인 주소로 응답
CNAME 레코드 유형
도메인 별칭을 지정
www.cloudneta.net이라는 도메인 주소로 질의하면 cloudneta.net의 도메인 주소로 응답
AWS에서 제공하는 관리형 DNS 서비스
Amazon Route 53의 주요 기능
DNS 프로토콜은 UDP 53번 포트를 사용
도메인 이름 등록과 호스팅 영역 생성, 레코드작성 같은 기능을 제공
도메인 이름 등록
사용자가 도메인 등록대행소에 도메인 이름 등록을 요청하면 도메인 등록 작업을 대행
도메인 이름의 TLD에 해당하는 등록소로 도메인 등록 작업을 수행
호스팅 영역 생성
Amazon Route 53으로 호스팅 영역을 생성하여 네임 서버를 관리할 수 있다.
호스팅 영역의 네임 서버들은 고가용성을 위해 다수의 서버로 구성
레코드 작성
DNS 레코드를 정의하여 도메인에 대한 요청 처리방법을 정의할 수 있다.
다양한 형태의 라우팅 정책을 연결하여 도메인 요청에 대한 응답 방식을 정의 가능
Amazon Route 53의 라우팅 정책
Amazon Route 53에는 DNS 요청에 어떻게 응답할지 정의하는 다양한 라우팅 정책이 있다.
단순 라우팅 정책
도메인에 대해 특정 대상을 지정하고 랜덤하게 대상 선택
가중치 기반 라우팅 정책
도메인에 대해 특정 대상을 지정하고 가중치에 따라 대상 선택
지연 시간 기반 라우팅 정책
사용자 인접 리전을 기준으로 대상 자원의 리전 간 지연 시간을 파악하여 대상 선택
장애 조치 라우팅 정책
다수의 대상을 액티브와 패시브로 분류하고 액티브 대상을 선택하며, 주기적인 상태를 확인하여 액티브 대상 유지
CDN(Contents Delivery Network)
콘텐츠 제공자와 사용자가 지리적으로 멀리 떨어져 있는 환경에서 콘텐츠를 빠르게 전달하는 네트워크 기술
CDN 환경
CDN 기술이 없는 환경
원본 콘텐츠를가지고 있는 오리진(origin) 서버에서 사용자에게 콘텐츠를 전달
오리진 서버에 높은 부하가 발생하고 지리적으로 멀리 떨어져 있는 사용자에게 콘텐츠를 전달할 때 지연 시간이 길어짐
CDN 기술이 있는 환경
오리진 서버에서 지역적으로 분산된 캐시 서버에 콘텐츠를 동기화해서 콘텐츠가 분산된 환경을 구성
사용자는 인접한 캐시서버로 콘텐츠를 전달받아 빠르고 효율적인 서비스를 제공받음
높은 성능과 가용성을 보장
CDN 캐싱 방식
캐싱
캐시 서버에서 콘텐츠를 저장하는 행위
TTL(Time To Live)
콘텐츠를 캐싱하는 시간
캐시 서버는 콘텐츠를 저장하는 캐싱을 수행할 때, 유연하게 관리하고자 일정 시간 동안 콘텐츠를 유지하고 삭제하는 동작
Cache Miss 상황
캐시 서버에 콘텐츠를 가지고 있지 않은 상태
➊ 사용자가 캐시 서버에 콘텐츠를 요청합니다.
➋ 캐시 서버에 해당 콘텐츠가 없어 Cache Miss 판정을 합니다.
➌ 캐시 서버는 오리진 서버에 콘텐츠를 요청합니다.
➍ 오리진 서버는 원본 콘텐츠를 복제하여 캐시 서버에 전달합니다.
➎ 캐시 서버는 해당 콘텐츠를 저장하는 캐싱을 수행합니다.
➏ 캐시 서버는 사용자에게 콘텐츠를 전달합니다.
Cache Hit 상황
캐시 서버에 콘텐츠를 가지고 있는 상태
➊ 사용자가 캐시 서버에 콘텐츠를 요청합니다.
➋ 캐시 서버에서 해당 콘텐츠를 가지고 있어 Cache Hit 판정을 합니다.
➌ 캐시 서버는 사용자에게 콘텐츠를 전달합니다.
동적 콘텐츠
사용자 요청에 따라 변경되는 콘텐츠
동적 캐싱
동적 콘텐츠에 대한 캐싱으로 캐시 서버는 콘텐츠를 저장하지 않고 지속적인 Cache Miss 상태로 동작
정적 콘텐츠
변경되거나 수정되지 않는 콘텐츠
정적 캐싱
정적 콘텐츠에 대한 캐싱으로 TTL 동안 미리 콘텐츠를 저장해 두고 Cache Hit 상태로 동작
AWS에서 제공하는 CDN 서비스로 정적 콘텐츠나 동적 콘텐츠를 사용자에게 빠르게 배포하도록 지원하는 서비스
전 세계에 분포된 엣지 로케이션(edge location)이라는 곳에 콘텐츠를 캐싱하고 사용자 요청에 따라 가장 지연 시간이낮은 엣지 로케이션이 응답하여 최적의 성능을 보장
Amazon CloudFront 구성
Amazon CloudFront 기능
효율적인 CDN 서비스를제공
정적 및 동적 콘텐츠 처리
Amazon CloudFront는 정적 콘텐츠와 동적 콘텐츠에 최적화된 캐싱동작을 제공합니다.
HTTPS 기능
오리진 대상이 HTTPS를 지원하지 않아도 Amazon CloudFront가 알아서 HTTPS 통신을 중계합니다. 즉, 사용자와 CloudFront는 HTTPS로 통신하고 CloudFront와 오리진은 HTTP로 통신할 수 있습니다.
다수의 오리진 선택 기능
Amazon CloudFront의 단일 Distribution 환경에서 다수의 오리진을 지정하고 선택하여 콘텐츠를 분산 처리할 수 있습니다.
접근 제어
서명된 URL과 쿠키(cookie)로 사용자 인증을 지원하여 인증된 사용자만 접근할 수 있도록 지원합니다.