[개발일지]/CS 스터디 플랫폼

6장. 도메인 만들어야지. Gabia와 Route53 중에 뭘 쓸까?

biz-ninza 2025. 1. 23. 15:36

도메인을 구입하는 것은 매우 쉽다.
결제하고 레코드에 내 IP주소만 붙여주면 된다.
 
 
이건 초등학생도 따라서 할 수 있다.
 
장기간 서비스를 운영하다 보면 필연적으로 에러들을 마주칠 것이고, 이에 대해 빠르게 대응하며 트러블슈팅을 해야하는데 그냥 '되네~' 하고 넘어가기엔 불안하다.
 
또 근본원리를 이해하면 창의적인 방법으로 고정비를 아낄 수도 있다 (이게 제일 큼 ㅋㅋ)
 
 
하루에도 수십번씩 도메인을 마주한다.
우리가 도메인을 입력하고 엔터를 눌렀을 때 어떤 일이 일어날까?
어떻게 클라이언트가 우리 서버의 IP주소를 찾아 들어오게 할 수 있을까?
 
이 글을 읽은 이후에는 두 질문에 대해 명쾌하게 답할 수 있길 기대하며 글을 작성했다.
 
 
 

목차

1. Route53는 DNS 서비스다
2. 클라이언트는 이렇게 IP주소를 찾는다
3. 이 과정을 눈으로 확인해보자
4. 가비아에서 구매한 도메인으로도 Route 53 네임서버를 사용할 수 있다
5. 네임서버를 임대했으면 IP를 등록하자
6. 참고로 S3도 Route53과 연결할 수 있다
7. Route 53을 선택하는 이유
 
 
 

[1. Route53는 DNS 서비스다 ]

 
HTTP 에선 TCP 커넥션을 맺은 이후  HTTP 요청과 응답 트렌젝션 수행을 한다.
이때 TCP 커넥션을 맺으려면 IP주소와 포트번호를 알아야한다.
그런데 이 포트번호를 기억하기는 곤란하므로 IP 이름에 Domain Name 을 붙여 쉽게 기억할 수 있도록 했다.
이것이 DNS다. 
 
즉, DNS(Domain Name System)는 인터넷의 전화번호부와 같다.
인간이 판독가능한 www.example.com 을 숫자 IP로 주소로 변환하고 이를 기반으로 컴퓨터는 소통한다.
이러한 역할을 하는 서버를 DNS 서버 혹은 네임서버라고 한다.
 
 
Route53는 기본적으로 DNS 서비스다.
 
1) 도메인 이름을 구입할 수 있다 ㅡ 등록대행
2) 구입한 도메인 이름 (혹은 이미 가진) 과 IP 주소를 매칭관리를 한다 ㅡ 네임서버 임대

출처 : 생활코딩

 
 
1) 도메인 이름을 구입할 수 있다
 
.net .com 과 같은 url 끝자리를 top level 도메인이라고 하는데 해당 도메인마다 관리하는 곳(Registry-등록소)이 다르다. Route53 이나 가비아같은 회사에서는 구매 대행을 해주는 것(Registrar-등록대행자)

Route53 을 통해 도메인을 구입하면 네임서버를 임대해서 자동으로 세팅까지 해준다.
네임서버를 임대한다는 것이 무슨 의미일까?
 
 
2) 도메인과 IP주소의 매칭관리를 한다
 
도메인에 대한 IP 를 제공하려면 이를 기록한 DNS 서버 (=네임서버) 를 가지고 있어야한다.
우리가 직접 PC에 네임서버를 만들어서 운영해도 된다.
즉, 우리의 IP와 도메인이름을 매칭하는 서버를 운영하며 Top-level domain 서버(= .net 등 각 등록소)에 우리의 네임서버주소를 기록해주면 된다.
 
Route 53 에서는 이 과정을 대신해준다.
그림을 살펴보자. 아래의 authoritative name server 가 Route53이 빌려준 네임서버다.

 
example.com 의 IP는 93.184.216.34 임!’ 이라고 네임서버에 세팅을 해놓고 우리에게 빌려준다.
그리고 aws(Registrar)는 등록소(Registry)에 ‘example.com 요청이 오면 우리 네임서버인 a.iana-servers.net 에 보내주세요’ 라고 기록을 남겨두고 비로소 연결작업이 완료된다
 
(이렇게 하면 향후 IP가 바뀌면 네임서버의 IP 주소만 바꿔주면된다)
 
 
 

[ 2. 클라이언트는 이렇게 IP주소를 찾는다 ]

클라이언트는 우리가 빌린 네임서버에 바로 들어오는 것이 아니다.
실제 유저가 도메인에 접속할 때는 생각보다 많은 과정을 거친다.

  1. 사용자가 example.com 을 입력하면 DNS Resolver (그림상에서 DNS Server) 에게 IP를 물어본다.
  2. DNS Server 에는 Root name server 목록이 상수로 적혀있고 (모든 name server 에 Root name server 가 상수로 적혀있음) 이곳에 example.com 주소에 대한 문의를 한다.
  3. Root name server 는 .com 을 보고 (Top-level domain 이라고 한다) 해당 Registry 서버에 접속하여 example.com 에 대해서 문의를 한다.
  4. Registry 서버는 example 을 보고 이에 맞는 네임서버를 찾아 해당 네임서버에 문의를 한다 (우리가 빌린 네임서버임)
  5. 이곳에서 비로소 IP를 찾게 되고, 네임서버 → Top-level domain 서버 → Root name server → DNS Resolver 로 IP주소가 되돌아오고 클라이언트는 IP주소를 알게 된다.

*참고로 domain 을 통해 IP를 추적해오는 DNS Resolver 는 PC마다 다르다 (운영체제에 설정되어 있다)
 
 
 

[ 3. 이 과정을 눈으로 확인해보자 ]

지금은 도메인에 가비아에서 운영중인 네임서버가 등록이 되어있다.
(도메인을 가비아에서 구매했기 때문에 가비아가 authoritative name server 를 빌려줌 )
 

Dig는 Linux/Unix/macOS 에서 쓸 수 있는 명령어.
window 에선 사용할 수 없으나 웹에서도 명령어를 사용해볼 수 있다.
 

위의 화면까지를 보면 네임서버까지 잘 세팅된 것

 
1) DNS Resolver 가 root name server 목록을 가져온다 (파란 글씨)
 
여기서 9.9.9.10 은 우리가 default 로 설정한 DNS Resolver다. 사용자의 요청을 받아서, 루트 네임 서버로부터 정보를 조회하여 최종적으로 도메인 이름에 해당하는 IP 주소를 찾아주는 역할 (보통 pc에서 접속할 때는 운영체제에 설정된 DNS 리졸버를 사용한다. 네트워크 설정과 ISP에 따라 달라진다)
 
2) 하나의 root name server 는 Top-level domain 서버 목록을 가져온다 (빨간 글씨)
 
3) 하나의 Top-level domain 서버는 네임서버 목록을 가져온다 (초록 글씨)
 
DNS resolver 는 최종적으로 ns.gabia.net, ns.gabia.co.kr, ns1.gabia.co.kr 중 하나에 직접 쿼리를 보내 IP주소를 알 수 있다.
 
 
 

[ 4. 가비아에서 구매한 도메인으로도 Route 53 네임서버를 사용할 수 있다 ]

 
Route 53에서 Hosted Zone (호스팅영역) 을 만들면 네임서버가 만들어진다.


위의 NS 라고 명시되어 있는 것이 Route 53의 네임서버 목록이다.

한편 다른 곳에서 도메인을 구입했다면 도메인 구매처에 ‘해당 도메인은 Route 53이 관리하는 네임서버에 등록되어 있다’ 라는 것을 알려야한다. Route 53에서 생성한 호스팅영역의 네임서버 주소로 바꿔준다.

다시 확인 해보면 aws 의 네임서버 목록이 나타나는 것을 알 수 있다.
 

Route 53은 이렇게 도메인 구매대행을 하고 네임서버를 관리를 해서 클라이언트가 우리 IP에 잘 들어올 수 있게 만남을 주선해주는 서비스다.
 
물론 우리가 PC에서 직접 네임서버를 만들고 소프트웨어를 설치해서 Top level 도메인에 등록하고… 하는 과정을 직접 거칠수도 있다만 딸깍딸깍 몇 번 하면 성능좋은 네임서버를 하나 만들어 소프트웨어 설치후 세팅까지 해주는 서비스가 Route 53이다.
 
 
 

[ 5. 네임서버를 임대했으면 IP를 등록하자 ]

지금 접속이 불가한 이유는 당연한데 지금은 도메인에 대한 네임서버만 연결시켜주었고, 네임서버에는 내 IP 주소가 없다.
다시말해 idealstudy.store 으로 접속하면 route53 의 네임서버까지는 접속하지만 해당네임서버는 내 서버의 IP주소를 모르는 것이다.

aws 에서 레코드를 등록해준다.
 
서브도메인은 www 같이 실제 도메인이름 앞에 붙는 prefix로 이에 따라 ip주소를 다르게 라우팅해줄 수 있다.
 
레코드 유형에서 A는 IPv4주소와 도메인 이름을 매칭시켜주는 것(우리가 원하는 것), AAAA는 IPv4주소와 도메인 이름을 매칭시켜주는 것, CNAME은 도메인네임과 또다른 도메인네임을 매칭하는 것.. 이것저것 많다.
 
TTL 은 DNS 서버들이 요청마다 root 서버부터 타고 내려와서 조회하면 느리니 IP주소를 캐싱을 하게 되는데 이 캐싱기간을 의미한다. 즉 TTL을 길게 잡으면 조회가 줄어드니 빠르지만, 짧게 잡으면 조회는 느리지만 작업 내용이 바로 반영이 된다 (작업할 때는 TTL을 낮게 하고 평소엔 길게 주는게 정석)
 

Dig 에서 빨갛게 표시된게 TTL 이었음!
 
 
 

[ 6. 참고로 S3도 Route53과 연결할 수 있다 ]

S3를 예로 들어보자
S3에서 퍼블릭 액세스가 가능하게 만든 버킷에서 만든 공개주소가 아래와 같은 상황이다.
https://idealstudy-bucket-img.s3.ap-northeast-2.amazonaws.com/user-profile/img+(2).png
이런 주소가 보기가 좋지 않다면… ?

우리가 원하는 도메인 s3-img.idealstudy.com 에 S3에서 부여받은 endpoint 를 할당하면 도메인주소를 변경해줄 수 있다.

S3 링크가 dns4u.tk 라는 도메인 주소로 alias 된 예시

 
이와 같은 과정을 alias 라고 한다.
 
 
 

[ 7. Route 53을 선택하는 이유 ]

 
route53은 도메인구매 대행과 네임서버 임대를 해준다.
실제로는 이 외에도 많은 부가서비스를 제공한다.

  • Route 53은 여러 대의 네임서버를 전세계에 분산후 사용자가 접속했을때 사용자에게 가까운 서버의 IP를 사용자에게 제공해서 빠른 응답속도와 가용성을 보장한다.
  • Route 53은 하나의 도메인에 여러 IP를 연결한 후 서버마다 가중치를 줘서 로드밸런싱 기능도 수행할 수 있다.
  • Route 53은 웹서버 같은 리소스로 자동화된 요청을 보내서 정상작동중인지 확인하며 리소스를 사용할 수 없게 될 때 알림을 수신하고 다른 곳으로 인터넷 트래픽을 라우팅할 수 있다 (헬스체크)
  • Route53는 LB, EC2 인스턴스, S3버킷, CloudFront 배포 및 다른 AWS 리소스에 매핑하는데도 사용할 수 있다.
  • Route 53을 AWS 리소스가 아닌 다른 리소스에도 사용할 수 있다.

Amazon Route 53의 비용은 호스팅영역당 월 $0.5, IP주소를 찾는 DNS 쿼리는 백만 번당 $0.4
여기에 헬스체크까지 붙이고 여러가지 작업해도 월에 1~2달러 꼴이다.
 
이정도면 충분히 부담할만 하다는 판단이고, 매력적인 것은 헬스체크를 통해 서버의 가용성을 확인하고 또 보장한다는 것이다.
 
EC2에 모니터링 툴을 붙여서 시스템 상태에 따라 알림을 줄 수도 있겠지만 지금 머리속에 그려지는 아키텍쳐상으로는 서버가 아예 shutdown 되었을 때 이를 확인하는 방법이 떠오르지 않는다.
 
CloudWatch 와 연계해서 Route 53을 서버가 잘 돌아가는지 감시하는 도구로 사용한다는 점이 매력적으로 다가왔고 Route 53을 이용하기로 했다.