Amazon Web Services 한국 블로그

AWS Global Accelerator 출시 – 엔드 유저에게 더 빠른 서비스 접속을 위한 서비스

전 세계 각 지역별로 사용자 데이터를 분리하도록 한 규정과 데이터 주권에 관한 법률을 적용받는 분야에 몸담았던 사람으로서, 여러 국가에 배포된 인프라가 필요한 전역 워크로드를 실행하는 것이 얼마나 복잡한 일인지 잘 알고 있습니다. 원래 데이터 센터의 경계를 넘어 확장할 경우 가용성, 성능, 장애 조치는 모두 매우 까다로운 일이 됩니다. 가용성 때문이든, 성능 때문이든, 규정상의 이유든, 여러 지역에서 환경을 운영해야 한다고 말하는 고객이 많습니다.

이들 고객들은 AWS CloudFormation을 통해 워크로드의 템플릿을 작성하고, Amazon DynamoDB Global Tables로 데이터베이스를 복제하고 AWS SAM으로 서버리스 워크로드를 배포할 수 있다는 데 무척 만족합니다. 이를 통해 몇 분 안에 전 세계 어디서나 실행할 수 있으며 일반 사용자에게 글로벌 환경을 제공합니다. 또한 고객들은 피해 반경을 줄이기 위해 AWS가 제공하는 리전별 격리 기능이 유용하기는 하지만, 각 애플리케이션을 하나로 통합하는 데도 도움이 필요하다고 말합니다.

AWS Global Accelerator 소개

그런 의미에서 기업들이 여러 리전으로 트래픽을 원활하게 라우팅하여 최종 사용자(End user)에게 제공되는 가용성과 성능을 높일 수 있는 네트워크 서비스인 AWS Global Accelerator는 큰 도움이 될 것입니다. AWS Global Accelerator는 가용성이 높고 정체가 없는 AWS의 방대한 글로벌 네트워크를 활용하여 사용자의 인터넷 트래픽을 AWS 리전에서 실행 중인 애플리케이션으로 라우팅합니다.

AWS Global Accelerator를 사용하면 사용자가 지리적 위치, 애플리케이션 상태, 구성 가능한 가중치에 따라 귀사의 워크로드로 이동됩니다. 또한 AWS Global Accelerator는 전역적으로 고유하며 변경되지 않는 애플리케이션의 정적 Anycast IP 주소를 할당합니다. 따라서 애플리케이션을 확장하더라도 클라이언트를 업데이트할 필요가 없습니다.

global-accelerator-before
기존 사용자의 서비스 연결 방법
global-accelerator-after
Global Accelerator를 통한 연결 방법

먼저 Accelerator를 프로비저닝하고 Network Load Balancer, Application Load Balancer 또는 탄력적인 IP 주소에서 실행 중인 애플리케이션에 연결합니다. 그러면 AWS Global Accelerator가 워크로드의 진입점 역할을 하는 2개의 정적 Anycast IP 주소를 AWS 네트워크에서 할당합니다. AWS Global Accelerator는 TCP 및 UDP 프로토콜을 모두 지원하며, 대상 엔드포인트의 상태를 검사하여 비정상 상태인 애플리케이션에서 다른 애플리케이션으로 트래픽을 라우팅합니다.

하나 이상의 AWS 리전에서 액셀러레이터를 사용하여 최종 사용자에게 향상된 가용성과 성능을 제공할 수 있습니다. 미디어, 금융 및 게임 기업에서 많이 사용하는 지연 시간이 짧은 애플리케이션에는 Accelerator의 AWS 글로벌 네트워크와 사용자 및 엣지 네트워크 간 최적화 기능이 특히 유용합니다.

그림 1 – 작동 방법

알아야 할 핵심 사항:

  • 정적 Anycast IP – Global Accelerator는 하나 이상의 AWS 리전에서 호스팅되는 애플리케이션에 대한 고정 진입점 역할을 하는 정적 IP 주소를 사용합니다. 이 IP 주소는 AWS 엣지 로케이션에서 할당되는 Anycast입니다. 즉, 이 IP 주소가 여러 AWS 엣지 로케이션에서 발표되므로 트래픽이 사용자에게 최대한 가까운 위치에서 AWS 글로벌 네트워크에 진입할 수 있습니다. 이 주소를 Network Load Balancer, Application Load Balancer, 탄력적 IP 주소 등의 리전별 AWS 리소스 또는 엔드포인트에 연결할 수 있습니다. 엔드포인트를 수정하거나 교체할 때 클라이언트에 대한 설정을 변경하거나 DNS 레코드를 업데이트할 필요가 없습니다. 액셀러레이터의 IP 주소는 정적이며 사용자에게 제공되는 애플리케이션로의 진입 경로가 됩니다.
  • AWS의 글로벌 네트워크 – 액셀러레이터를 통해 라우팅되는 트래픽은 공용 인터넷이 아니라 철저하게 모니터링되고 정체가 없는 이중화된 AWS 글로벌 네트워크를 따라 이동합니다. 클라이언트는 클라이언트 위치, 상태 검사 결과 및 구성된 가중치에 따라 최적의 리전으로 라우팅됩니다. 트래픽은 액셀러레이터의 Anycast IP 주소를 알리는 AWS 엣지 로케이션으로 진입합니다. 엣지 로케이션에서는 요청이 최적화된 경로를 통해 애플리케이션으로 라우팅됩니다.
  • 클라이언트 상태 – AWS Global Accelerator를 활용하면 필수 요건으로 상태를 저장하는 애플리케이션을 만들 수 있습니다. 상태 저장 애플리케이션은 초기 연결 후에 동일한 엔드포인트로 사용자를 라우팅합니다. Global Accelerator는 이를 위해 포트와 프로토콜에 관계없이 클라이언트 요청자의 SourceIP를 상태 유지를 위한 식별자로 설정합니다.

AWS Global Accelerator 사용 방식

Application Load Balancer의 배후에 있는 2개의 EC2 호스팅 WordPress 배포를 사용하여 AWS Global Accelerator의 기능을 살펴보겠습니다. AWS Global Accelerator의 글로벌 특성을 테스트하기 위해 싱가포르 리전과 도쿄 리전에 애플리케이션을 배포했습니다. 그림 3은 우리가 거쳐가게 될 경로를 보여 줍니다. 엣지 로케이션에서 알리는 2개의 Anycast IP 주소를 통해 클라이언트에서 가장 가까운 엣지 로케이션으로 트래픽이 전송됩니다. AWS 글로벌 네트워크를 통해 액셀러레이터로 요청이 라우팅되면 액셀러레이터는 가장 가까운 정상 상태의 엔드포인트 그룹을 선택합니다. Application Load Balancer가 요청을 종료하고 WordPress 인스턴스로 요청을 전달하면 여기에서 콘텐츠가 서비스됩니다.

그림 2 – 사용자 흐름

 

저는 여기에 나와 있는 지침에 따라 2대의 콘텐츠 서버를 만들었습니다. 어느 경로로 라우팅되는지 확인할 수 있도록 콘텐츠를 서비스할 리전의 홈 배너를 변경했습니다. 콘텐츠 서버가 만들어졌으므로 이제 각 서버의 Application Load Balancer를 구축하고 정상 작동 상태가 될 때까지 기다립니다.

그림 3 – Shaun의 글로벌 웹사이트

Global Accelerator는 이름을 선택하고, 리스너 유형(WordPress의 경우 포트 80 및 TCP)을 지정하며, 각 리전의 엔드포인트 그룹을 생성하는 방법으로 간단히 만들 수 있습니다. 클라이언트가 엣지 네트워크에 진입한 후 연결하게 되는 액셀러레이터의 리스너를 구성해 보겠습니다. HTTP 트래픽을 지원해야 하므로 당연히 포트 80을 선택합니다. 테스트 클라이언트가 처음으로 연결한 후에 계속 동일한 리전과 애플리케이션으로 리디렉션하는 선호도 설정을 SourceIP를 사용하여 활성화했습니다.

엔드포인트 그룹은 액셀러레이터의 대상이 되며 기본적으로 각 그룹에는 트래픽 다이얼이 100으로 설정됩니다. 트래픽 다이얼을 낮추면 클라이언트가 다른 엔드포인트 그룹 또는 다른 AWS 리전으로 리디렉션될 수 있으므로, 유지 관리 작업을 수행하거나 예상치 못한 트래픽 급증을 처리하는 데 유용합니다. 여기서는 실험을 위해 도쿄 및 싱가포르 리전을 선택하고 기본 다이얼을 100으로 설정합니다.

그림 4 – 엔드포인트 그룹 구성

상태 검사는 간단한 구성 작업에 이용하거나, 애플리케이션에 대한 심층적인 분석 정보를 제공할 수 있는 강력한 도구입니다. 이 예에서는 기본 경로에서 200 OK HTTP를 폴링하는 기본 HTTP 상태 검사를 사용한 간단한 웹사이트를 지원합니다. 구성을 완료하려면 앞서 생성한 Application Load Balancer로 엔드포인트 그룹을 채워야 합니다.

그림 5 – 엔드포인트 그룹에 ALB 추가

구성이 모두 완료되었으므로 이제 액셀러레이터가 할당한 2개의 Anycast IP 주소를 통해 트래픽을 라우팅할 수 있습니다. 트래픽을 라우팅하려면 브라우저, HTTP 클라이언트 또는 curl을 사용합니다. 글로벌 사용자를 테스트하기 위해 프록시를 사용하여 아시아, 북미, 유럽 지역의 다양한 위치에 걸쳐 위치를 설정한 후 트래픽이 어떻게 라우팅되는지 살펴보겠습니다.

그림 6 – 글로벌 웹사이트로 분산되는 요청

AWS Global Accelerator의 가장 강력한 기능 중 하나는 1분 안에 리전 간에 장애 조치하는 기능입니다. 사이트에 초당 100개의 요청을 보내는 부하 테스트를 설정했습니다. 이제 트래픽이 얼마나 빠르게 도쿄 엔드포인트로 라우팅되는지 테스트하기 위해 싱가포르 서버를 끄겠습니다.

트래픽이 03:15에 액셀러레이터를 통해 라우팅되기 시작했고, 3:30에 제가 싱가포르 인스턴스를 종료했습니다. 3:31에 도쿄에서는 이미 4,000개에 가까운 요청이 처리되었고 모든 트래픽을 처리하고 있었습니다. 3:35에 싱가포르 서버를 다시 활성화했습니다. 상태 검사 준비 시간(90초)이 걸리기 때문에 3:38까지는 복구 상태를 확인할 수 없습니다. 상태 검사를 좀 더 까다롭게 구성했다면 5분 이내에 장애 조치와 복구가 완료되었을 겁니다.

가용성 및 요금

AWS Global Accelerator에서는 배포된 각 액셀러레이터와 액셀러레이터를 통해 전송되는 지배적인 방향의 트래픽 양을 기준으로 요금이 부과됩니다. 액셀러레이터는 AWS 글로벌 네트워크를 통해 최적의 엔드포인트로 트래픽을 라우팅하기 위해 생성하는 리소스입니다. 일반적으로 고객은 애플리케이션마다 하나씩 액셀러레이터를 설정하지만, 복잡한 애플리케이션에는 액셀러레이터가 2개 이상 필요할 수 있습니다.

실행 중인 모든 액셀러레이터에 대해 한 시간 단위로 정액 요금이 부과되며 Data Transfer-Premium 요금(DT-Premium)이라고도 하는 표준 데이터 전송 요율에 대해 증분 요금이 부과됩니다. DT-Premium은 지배적인 방향의 트래픽, 즉 애플리케이션으로의 인바운드 트래픽 또는 애플리케이션에서 인터넷의 사용자로의 아웃바운드 트래픽에 대해 1시간마다 계산됩니다.

정액 요금: 액셀러레이터가 계정에서 실행되는 1시간 또는 그 미만의 시간에 대해 0.025 USD의 요금이 부과됩니다.
Data Transfer-Premium 요금(DT-Premium): AWS 네트워크를 통해 전송되는 데이터의 기가바이트당 요율입니다. DT-Premium 요율은 요청을 처리하는 AWS 리전(원본)과 응답이 전달되는 AWS 엣지 로케이션(대상)에 따라 다릅니다. DT-Premium은 지배적인 데이터 전송 방향에만 부과됩니다.

대상(AWS 엣지 로케이션)

원본

(AWS 리전)

 NA EU APAC
NA 0.015 USD/GB 0.015 USD/GB 0.035 USD/GB
EU 0.015 USD/GB 0.015 USD/GB 0.043 USD/GB
APAC 0.012 USD/GB 0.043 USD/GB 0.010 USD/GB

AWS Global Accelerator는 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 미국 서부(캘리포니아 북부), EU(아일랜드), EU(프랑크푸르트), 아시아 태평양(도쿄)아시아 태평양(싱가포르) 리전에서 이용할 수 있습니다.

– Ray Shaun;