국가별 서비스 시 CDN을 사용하는 여러 방법이 존재할 수 있다. 뭐 GeoIP를 활용할 수도 있고, DNS 분기를 이용할 수도 있고....
그러나 가장 간단하게 사용할 수 있는 방법은 CloudFront의 Viewer-Country 헤더를 사용하는 것이다.
참고로 레이턴시가 중요하지 않은 서비스는 한국/북미/유럽에서 App 서버 구성 + CDN정도로 원활히 운영할 수 있다.
https://aws.amazon.com/ko/about-aws/whats-new/2020/07/cloudfront-geolocation-headers/
실제 위 도큐먼트를 참고해서 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를 못 믿어서가 아니라 한 번 해봤음...
'Storage&CDN > CloudFront' 카테고리의 다른 글
AWS Global Accelerator 성능 테스트 (0) | 2021.05.06 |
---|---|
Amazon CloudFront 장애 발생 시 필요 정보 (0) | 2018.02.26 |
AWS CloudFront Apache 원본 연동(mod_security2) (0) | 2018.02.11 |
AWS CloudFront RTMP 재생 URL (0) | 2017.04.11 |
AWS CloudFront SignedURL/Cookie 사용 (2) | 2017.02.28 |