본문 바로가기

Storage&CDN/CloudFront

Amazon CloudFront 글로벌 서비스 활용

국가별 서비스 시 CDN을 사용하는 여러 방법이 존재할 수 있다. 뭐 GeoIP를 활용할 수도 있고, DNS 분기를 이용할 수도 있고....

 

그러나 가장 간단하게 사용할 수 있는 방법은 CloudFront의 Viewer-Country 헤더를 사용하는 것이다.

 

참고로 레이턴시가 중요하지 않은 서비스는 한국/북미/유럽에서 App 서버 구성 + CDN정도로 원활히 운영할 수 있다. 

 

https://aws.amazon.com/ko/about-aws/whats-new/2020/07/cloudfront-geolocation-headers/

 

Amazon CloudFront, 세분화된 지리 기반 타겟팅을 위한 추가 지리적 위치 헤더 추가

Amazon CloudFront에서 새 캐시 및 원본 요청 정책에 사용할 수 있는 추가적인 위치 정보 헤더가 제공됩니다. 이제 CloudFront를 구성해서 캐싱 및 원본 요청 정책을 더욱 세밀하게 지정할 수 있는 추가

aws.amazon.com

 

실제 위 도큐먼트를 참고해서 CloudFront에 White 헤더를 추가하면 아래와 같은 요청이 원본에 전달된다.

 

원본에서는 해당 헤더들을 기준으로 각 지역의 사용자들을 분기 처리하여 활용할 수 있다. 

 

가령 OTT 서비스라면 한국 유저의 경우 국내 영상을 추천해주거나, 북미 사용자면 북미 영상을 추천해줄 수 있다.

{
  host: 'ec2-13-2xxxx.ap-northeast-2.compute.amazonaws.com',
  'user-agent': 'Amazon CloudFront',
  'x-amz-cf-id': 'qSly12tedVEVxcuSwvXAQe905sNmos-ltmyKgMEiJIpxPpYBRjvg7A==',
  connection: 'Keep-Alive',
  'x-forwarded-for': '2xx.xxx.xxx.11',
  via: '1.1 6371e42dc4882f0fa4f731d1a82340f3.cloudfront.net (CloudFront)',
  'accept-encoding': 'gzip',
  'prs-cid': '45799',
  'upgrade-insecure-requests': '1',
  'cloudfront-viewer-country': 'KR',
  'cloudfront-viewer-country-name': 'South Korea',
  'cloudfront-viewer-country-region': '11',
  'cloudfront-viewer-country-region-name': 'Seoul',
  'cloudfront-viewer-city': 'XXXX-gu',
  'cloudfront-viewer-postal-code': 'xxxxx0',
  'cloudfront-viewer-time-zone': 'Asia/Seoul',
  'cloudfront-viewer-latitude': 'x7.50030',
  'cloudfront-viewer-longitude': '1xx.95650',
  'cache-control': 'max-age=0'
}

또한 latitude, longitude 까지 제공되는데 꽤나 정확하게 Client 위치를 알 수 있다. 

 

별 거 아니지만 AWS Document를 못 믿어서가 아니라 한 번 해봤음...