Vercel에서 배운 DNS 작동 원리
January 24, 2025
프로젝트를 진행하며 배포 플랫폼에서 도메인 연결 과정을 경험해 보았습니다. 특히 도메인 연결 과정에서 발생한 문제를 해결하며, 배포 환경에서 DNS 설정이 얼마나 중요한지 깨닫게 되었습니다. 설정을 수정하고 DNS 레코드를 점검하는 등 다양한 시도를 통해 DNS 작동 원리에 대한 필요성을 느끼게 되었습니다.
이후 블로그를 만들던 중 Vercel을 사용해 배포를 시도했는데, 생각보다 수월하게 진행되었습니다. 그러나 그 과정에서 여전히 ‘Vercel 같은 서버리스 플랫폼에서는 DNS가 어떻게 작동할까?’라는 궁금증이 남아 있었습니다.
그래서 이번 글에서는 Vercel을 예시로 DNS 작동 원리와 도메인 연결 방법을 다루며, 배포 환경 설정의 개념을 정리해 보았습니다.
DNS의 개념 및 작동 원리
DNS란?
DNS(Domain Name System)는 인터넷에서 도메인 이름을 사용해 IP 주소를 조회하는 시스템입니다.
과거에는 브라우저에 IP 주소(예: `142.250.1.0`)를 직접 입력해 웹사이트에 접속했지만, 숫자를 기억하기는 비효율적이었습니다.
DNS는 이러한 불편을 해결하기 위해 개발된 시스템으로, 도메인 이름과 IP 주소를 매핑하는 역할을 합니다.
이를 통해 사용자는 기억하기 쉬운 도메인 이름만으로 원하는 웹사이트에 접근할 수 있습니다.
DNS 작동 과정 흐름
DNS는 사용자가 브라우저에 입력한 URL을 실제 서버의 IP 주소로 변환하는 과정을 말합니다.
아래는 사용자가 브라우저에 URL을 입력한 후, DNS가 작동하는 과정을 단계별로 정리한 내용입니다.
1, 2. 사용자가 브라우저에 URL 입력
- 사용자가 브라우저 주소창에 `www.example.com`과 같은 URL을 입력합니다.
- 브라우저는 도메인 이름을 해석할 준비를 시작합니다.
3. 로컬 DNS 서버에 IP 주소 요청
- 브라우저는 먼저 로컬 DNS 서버(사용자의 ISP에서 제공하거나 직접 설정된 DNS 서버)에 `www.example.com`의 IP 주소를 요청합니다.
- 로컬 DNS 서버는 요청받은 도메인의 IP 주소를 이미 캐싱하고 있는지 확인합니다. (캐싱: 로컬 DNS 서버는 자주 요청되는 도메인의 IP주소를 임시로 저장해, 더 빠르게 응답할 수 있도록 합니다.)
4, 5. 캐시에 없을 경우, Root Nameserver에 문의
- 로컬 DNS서버가 캐시에 해당 도메인 IP주소를 가지고 있지 않다면, Root Namserver에 요청을 전달합니다.
6, 7. TLD Nameserver에 요청
- Root Nameserver의 응답을 받은 로컬 DNS 서버는 해당 TLD Nameserver(예: `.com`의 Nameserver)에 다시 요청합니다.
8, 9. Authoritative Nameserver에 최종 요청
- 로컬 DNS 서버는 TLD Nameserver로부터 받은 정보를 사용해, Authoritative Nameserver에 요청을 전달합니다.
10. 로컬 DNS 서버에서 브라우저로 IP 주소 전달
- 로컬 DNS 서버는 Authoritative Nameserver로부터 받은 IP 주소를 브라우저에 전달합니다.
- 동시에, 이 정보를 캐시에 저장해 향후 동일한 요청에 더 빠르게 응답할 수 있도록 준비합니다.
11, 12. 브라우저가 확인된 IP 주소로 웹 서버에 HTTP 요청
- 브라우저는 전달받은 IP주소를 사용해 해당 웹 서버로 HTTP 요청을 보냅니다.
- 요청된 데이터를 수신하고 웹페이지를 렌더링합니다.
DNS 작동 과정 흐름
- Root Nameserver: 인터넷의 최상위 계층으로, .com, .org 등 TLD Nameserver의 정보를 제공합니다.
- TLD Nameserver: 해당 도메인의 관리 책임이 있는 Authoritative Nameserver의 정보를 제공합니다.
- Authoritative Nameserver: 요청된 도메인의 최종 IP 주소를 제공합니다.
Vercel에서 사용되는 DNS 레코드
DNS 레코드란?
DNS 레코드는 도메인 이름을 특정 정보(예: IP 주소)로 연결하는 데이터입니다. 사용자가 브라우저 `www.example.com`을 입력하면, DNS 레코드를 통해 이 도메인을 실제 서버의 IP 주소로 변환합니다.
Vercel에서 주로 사용하는 DNS 레코드는 다음과 같습니다.
A 레코드(Address Record)
- 역할: 도메인 이름을 Vercel의 서버 IP 주소에 직접 연결합니다. 이 레코드를 통해 사용자는 도메인을 입력했을 때 바로 Vercel 서버로 접속할 수 있습니다.
- 예: `example.com -> 76.76.21.21`
- 사용 시점: 최상위 도메인(example.com)을 연결할 때 사용됩니다. 예를 들어, 블로그나 회사의 대표 도메인을 설정할 때 유용합니다.
CNAME 레코드(Canonical Name Record)
- 역할: 서브도메인(`www.example.com`)을 Vercel의 기본 도메인(cname.vercel-dns.com)으로 연결합니다. CNAME은 별칭처럼 동작하여 관리와 리다이렉트를 간편하게 만들어 줍니다.
- 예: `www.example.com -> cname.vercel-dns.com`
- 사용 시점: 서브 도메인을 연결하거나 여러 도메인을 동일한 프로젝트에 연결할 때 사용됩니다. 예를 들어, 메인 도메인(example.com)과 서브도메인(blog.example.com)을 함께 관리할 때 유용합니다.
CAA레코드(Certification Authority Authorization)
- 역할: 특정 인증 기관(CA)만 도메인에 대해 SSL/TLS 인증서를 발급할 수 있도록 제한합니다.
- 예: `0 issue "letsencrypt.org"`는 Let's Encrpt만 인증서를 발급할 수 있도록 허용합니다.
- 사용 이유: 무단 인증서 발급을 방지하고 보안을 강화하기 위해 사용됩니다. Vercel은 기본적으로 Let's Encrypt를 허용하도록 CAA 레코드를 자동 설정합니다.
Vercel에서 도메인 연결 과정
1. 프로젝트 선택
- Vercel 대시보드에서 연결하고자 하는 프로젝트를 선택합니다. 프로젝트를 클릭하면 상세 설정 페이지로 이동합니다.
2. 도메인 추가
-
Domains 메뉴를 클릭합니다.
-
연결할 도메인을 입력한 후, Add 버튼을 클릭합니다.
-
나타나는 선택 옵션에서 원하는 리다이렉션 방식과 연결 방법을 선택합니다.
Add www.seoyoonyi.com and redirect seoyoonyi.com to it
- 설명: www.seoyoonyi.com을 기본 도메인으로 설정하고, seoyoonyi.com에서 www.seoyoonyi.com으로 리다이렉트합니다.
- 장점: 사용자가 www.를 포함하거나 제외한 도메인을 모두 입력해도 같은 페이지에 도달할 수 있어 일관된 사용자 경험을 제공합니다.Add seoyoonyi.com and redirect www.seoyoonyi.com to it
- 설명: 최상위 도메인(seoyoonyi.com)을 기본으로 설정하고, www.seoyoonyi.com에서 리다이렉트합니다.
- 장점: www.를 생략한 주소를 기본으로 사용하므로 간단한 URL을 선호하는 사용자에게 적합합니다.Add seoyoonyi.com
- 설명: seoyoonyi.com만 연결하며, 서브도메인(www) 리다이렉트는 설정하지 않습니다.
- 장점: 간단한 설정이 가능하며, www 없이도 충분한 경우 사용됩니다.
- 단점: www.를 입력하는 사용자는 접속이 불가능하므로, 사용자 경험이 제한될 수 있습니다.
3. DNS 설정 완료
- 스크린샷에 "Valid Configuration"이라는 메시지가 표시되어 있는 것으로 보아, Vercel에서 제공한 DNS Nameserver 설정이 정확히 적용되었음을 나타냅니다.
4. DNS 레코드 확인 (선택사항)
- 위 이미지에서 "EDIT"을 누르면 박스가 바뀌면서 "View DNS Records & More"를 통해 설정한 DNS 레코드의 세부 정보를 확인할 수 있습니다.
- A 레코드, CNAME 레코드, CAA 레코드가 정확히 설정되었는지 점검합니다.
DNS 전파와 주의할 점
DNS 설정이 완료된 후에도 변경 사항이 전 세계적으로 적용되기까지 시간이 걸립니다. 이를 DNS 전파라고 하며, 전파 시간은 다음 요인에 따라 달라질 수 있습니다.
- 네임서버 업데이트 속도
- ISP의 캐싱 정책
- 사용 중인 TTL(Time-To-Live) 값
팁
- TTL 값을 너무 짧게 설정하면 쓸데없는 쿼리가 늘어나고, 너무 길면 변경 적용에 시간이 걸릴 수 있습니다.
- DNS 전파 속도를 확인하려면 DNS Checker와 같은 도구를 사용할 수 있습니다. 이를 통해 특정 지역에서 DNS 적용되었는지 확인 가능합니다.
서버리스 배포 플랫폼의 DNS 관리와 이점
Netlify와 Vercel 같은 서버리스 배포 플랫폼은 도메인 연결과 DNS 관리를 간소화하는 기능을 제공합니다. 이를 통해 복잡한 설정 과정을 자동화하고, 성능과 보안을 손쉽게 강화할 수 있습니다.
공통적인 주요 기능
- 자동 DNS 설정: 네임서버를 통해 복잡한 DNS 레코드 생성 및 관리를 자동화
- HTTPS 인증서 자동 발급: Let's Encrypt 기반 SSL/TLS 인증서를 자동으로 발급 및 갱신
- 트래픽 최적화: 글로벌 CDN을 활용해 사용자와 가장 가까운 서버로 트래픽을 라우팅
- 통합 관리: 배포와 DNS 설정을 하나의 플랫폼에서 처리
장점
- 초보자 친화적: 몇 번의 클릭만으로 도메인 연결을 완료할 수 있는 간단한 인터페이스
- 보안 강화: 자동 SSL/TLS 인증서 발급과 CAA 레코드 설정으로 보안을 강화
- 성능 최적화: 글로벌 CDN 네트워크를 활용한 빠른 로딩 속도와 안정성
이 글에서는 서버리스 배포 플랫폼이 제공하는 DNS 관리와 도메인 연결의 주요 이점을 살펴봤습니다. Netlify와 Vercel 같은 플랫폼은 자동화된 DNS 설정, HTTPS 인증서 발급, 글로벌 CDN 기반의 성능 최적화 등 현대 웹 개발자에게 필요한 다양한 기능을 제공하며, 배포 과정을 단순화합니다.
이러한 플랫폼을 사용하며 복잡한 설정 과정 없이 안정적이고 빠른 배포를 경험할 수 있었습니다. 특히 Vercel을 활용한 프로젝트에서는 통합된 배포 환경 덕분에 작업 효율이 높아졌습니다. 앞으로도 DNS와 관련된 개념을 더 깊이 이해하고, 적합한 플랫폼을 상황에 맞게 활용해 나가고자 합니다.