확장성이 좋고 안정적인 시스템을 구축하는데 필요한 핵심 요소를 다룬다.
도메인 이름을 IP 주소로 바꿔주는 시스템이며 다음과 같은 개념으로 구성되어있다.
대규모 시스템을 논할때는 확장성, 신뢰성, 일관성이라는 세가지 핵심 개념이 자주 언급된다. DNS 역시 대규모 시스템인데 이 세 기둥을 어떻게 구성하고 구현하고 있을까?
DNS 서버는 루트 서버만 전세계에 1000개 이상이 있다. 이를 통해 DNS 서버 하나가 과부하되거나 장애가 나더라도 다른 서버가 대신 요청을 처리할 수 있다.
DNS는 여러 단계의 캐싱이 적용되므로 일시적으로 DNS 장애가 발생해도 신뢰성을 유지할 수 있다. 또한 여러 DNS 서버가 중복으로 있끼 때문에 시스템 안정성이 높다.
DNS는 강한 일관성 대신 높은 성능을 목표로 설계되었다. 캐싱된 레코드의 유효 시간(TTL) 설정과 점진적 업데이트를 반영하여 시간이 지나면 모든 서버가 일관된 데이터를 가지는 최종 일관성 모델이다. 따라서 DNS 시스템 내에서 업데이트가 모든 서버에 반영되는 데에는 최대 며칠이 걸릴 수 있다.