핵심 요약
- 개발자가 미국, 유럽, 싱가포르에 서버를 두고 브라우저와 CDN이 라운드 로빈 DNS 서버를 어떻게 고르는지 직접 테스트했습니다.
- 크롬과 파이어폭스는 무작위로 서버를 골라 몇 시간씩 고정된 반면, 사파리와 curl은 가장 가까운 서버를 똑똑하게 찾아 연결했습니다.
- 서버가 다운되었을 때 브라우저는 1초 내에 정상 서버로 우회했으나, 클라우드플레어 프록시는 오프라인 서버를 감지하지 못하고 접속 에러를 냈습니다.
요약 비싼 로드밸런서를 쓰지 않고도 트래픽을 분산할 수 있는 '라운드 로빈 DNS(Round Robin DNS)'에 대해, 실제 브라우저와 CDN이 서버를 어떻게 선택하는지 직접 검증한 흥미로운 기술 실험 글입니다.
이론적으로는 '해피 아이볼(Happy Eyeballs, RFC 8305)' 규격 등에 따라 클라이언트가 서버들의 상태를 확인하고 왕복 지연 시간(RTT, 핑)이 가장 짧은 최적의 서버를 우선 선택해야 합니다. 글쓴이는 미국, 유럽, 싱가포르 3곳에 각각 VPS를 띄우고 동일한 도메인에 여러 A 레코드를 등록한 뒤, 유럽 현지에서 실제 동작을 테스트했습니다.
실험 결과 브라우저마다 동작 방식의 차이가 매우 컸습니다. 구글 크롬은 처음에 무작위로 위치를 고른 뒤 몇 시간 동안 해당 서버에 고정되는 특성을 보였는데, 유럽에서 가장 먼 싱가포르 서버가 걸려도 몇 시간 동안 느린 서버를 계속 유지했습니다. 파이어폭스 역시 브라우저 시작 시 무작위로 고른 뒤 고정되는 모습을 보였습니다. 반면 사파리는 놀랍게도 항상 지연 시간이 가장 짧은 유럽 서버를 정확하게 찾아내 연결했으며, 터미널 도구인 curl 역시 두 번째 호출부터는 가장 가까운 서버로 즉각 수렴했습니다.
더 큰 문제는 클라우드플레어(Cloudflare) 프록시를 경유할 때 발생했습니다. 클라우드플레어는 방문자 IP 해시를 기반으로 무작위 서버를 하나 배정한 뒤 고정하는 방식을 취했는데, 특정 서버가 다운되어 오프라인 상태가 되어도 이를 감지해 다른 서버로 우회시키지 않고 그대로 521 에러를 뱉어내는 치명적인 동작을 보였습니다. 반면 일반 브라우저들은 서버가 중간에 꺼지더라도 1초 이내에 다른 온라인 서버로 매끄럽게 우회 접속(Failover)하는 결과를 보였습니다. 저자는 클라우드플레어 역시 브라우저처럼 오프라인 서버를 감지하고 가장 빠른 서버를 선택하도록 개선되어야 한다고 지적했습니다.
Sponsored · 광고