DNS란 무엇인가
우리는 브라우저에 google.com처럼 사람이 기억하기 쉬운 도메인 이름을 입력하지만, 실제로 컴퓨터끼리 통신하려면 142.250.206.14 같은 IP 주소가 필요합니다. DNS(Domain Name System)는 바로 이 도메인 이름을 IP 주소로 변환해주는 인터넷의 ‘전화번호부’ 같은 시스템입니다. 전화번호부에서 이름을 찾아 전화번호를 알아내듯, DNS는 도메인 이름을 받아 해당 서버의 IP 주소를 알려줍니다.
DNS는 어떻게 동작하는가
브라우저에 도메인을 입력하면 다음과 같은 과정을 거쳐 IP 주소를 찾습니다.
- 로컬 캐시 확인: 브라우저나 OS에 이미 저장된 IP가 있는지 먼저 확인합니다.
- 재귀 리졸버(Recursive Resolver) 요청: 캐시에 없다면 보통 ISP가 운영하는 리졸버 서버에 질의를 보냅니다.
- 루트 네임서버 조회: 리졸버는 최상위 루트 서버에 물어
.com을 담당하는 TLD 네임서버 위치를 받습니다. - TLD 네임서버 조회: TLD 서버는
google.com을 관리하는 권한 있는(Authoritative) 네임서버 주소를 알려줍니다. - 권한 네임서버 응답: 마지막으로 권한 네임서버가 실제 IP 주소를 리졸버에게 전달하고, 리졸버는 이를 브라우저에 반환합니다.
이 과정은 보통 수십~수백 밀리초 안에 끝나며, 한 번 조회된 결과는 TTL(Time To Live) 값만큼 캐싱되어 다음 요청 시 속도를 높여줍니다. 마치 자주 연락하는 사람의 번호를 외워두면 매번 전화번호부를 찾아볼 필요가 없는 것과 같습니다.
실무에서 DNS가 중요한 이유
개발자 입장에서 DNS는 단순한 이름 변환 그 이상입니다. 서버 이전 시 IP가 바뀌어도 도메인만 그대로 유지하면 사용자는 변화를 느끼지 못합니다. 또한 로드밸런싱, 장애 복구(Failover), CDN을 통한 지역별 최적 서버 연결도 DNS 설정을 기반으로 이루어집니다. 예를 들어 여러 서버 IP를 하나의 도메인에 연결해두면, DNS가 트래픽을 분산시켜주는 역할도 할 수 있습니다.
결국 DNS를 이해하면 ‘왜 배포 후 도메인이 바로 반영되지 않는지(TTL 캐싱 때문)’, ‘왜 서비스 장애 시 DNS 설정부터 점검하는지’ 같은 실무 이슈를 훨씬 빠르게 파악할 수 있습니다.