Guess the Discord API Location

(Last Updated On: December 1, 2020)

Discord를 사용하면서 분석 좀 했는데 CloudFlare CDN 네트워크를 통해 응답이 오는 것을 확인했다. CloudFlare Enterprise 플랜이기 때문에 ICN Edge (서울)을 사용하지만 모든 반응속도가 200ms~300ms 정도임을 확인하였다. 뭐 텍스트 채팅 함에 있어서 크게 불편한 속도도 아니며 VOICE나 VIDEO의 경우 가까운 지역 서버로 인도 해 주니까 서비스 적으로는 문제가 없지만. BOT을 여러개 켜두면 항상 아시아 지역의 서버만 꼴찌로 반응한다는 것이 기분 나빴다.

따라서 나는 Discord의 메인 API 서버가 어디 있는지 확인 할 필요성을 느꼈다. Discord Bot을 가동하면 Discord API 서버와 가장 빠르게 통신하는 곳이 가장 적합하지 않을까? 생각하여 찾을 생각을 하였다.

다만 Discord의 경우 공식적으로 서버의 위치를 공개하지 않고 CloudFlare CDN을 사용하기 때문에 더욱이 서버의 위치를 알 수 없다. 하지만 지역별로 반응속도가 다른 것을 이용해 origin 서버가 어디에 있는지 반응속도(RTT/TTFB/Latency)를 이용해 최대한 가까운 곳을 추측해보기로 하였다.

테스트 방법

curl -o /dev/null -w "Connect: %{time_connect} TTFB: %{time_starttransfer} Total time: %{time_total} \n" https://discord.com/api/

인터넷의 어딘가에서 가져온 curl로 TTFB를 출력하는 스크립트를 클라우드 컴퓨팅을 통해 각각의 리전마다 순회 시도 해본다. 무식하게 여러번 시도하여서 나온 TTFB 시간중 최저값을 결과값으로 사용한다.

테스트 결과

United Statesvultr.Silicon Valley115ms
KoreaSeoul230ms
Japanvultr.Tokyo200ms
United Statesvultr.Atlanta42ms
United Statesvultr.Dallas62ms
United Statesvultr.New Jersey55ms
United Statesvultr.Miami41ms
United Statesvultr.Paris135ms
Canadavultr.Torronto63ms
United Statesvultr.Chicago64ms
United Stateslinode.Newark, NJ59ms
United Stateslinode.Dallas63ms
United Statesaws.Virginia.Zone-A46ms
United Statesaws.Ohio.Zone-A87ms

데이터센터마다 라우팅도 다르고 CloudFlare 속도도 다르며 요청 처리속도도 다르니 신뢰하면 안되겠지만 최소한 가장 빠르다는 결과라는 점에 중시해야 할 것이다.

다만 위 TTFB 값을 근거로 가장 빠른 지역 세 지점을 이으면…

이런 삼각형이 그려졌다! Discord 서버가 이 삼각형 안에 들어갈지 어떨진 아직 서버 표본이 부족해서 정확히는 모르겠지만 최소한 미국 동부지역에서 Discord가 가장 반응이 빠르다는것은 알 수 있는 정보이다.