2021. 7. 25. 13:25ㆍDevOps/AWS
AWS Global Accelerator에 대한 개요 및 기타 기능은 AWS 공식 문서에 자세하게 나와있으므로 이를 참고하시는 것이 좋습니다
Usecase
- 마이크로 서비스 아키텍처(MSA)를 사용해 서비스를 구성하는 회사(이를테면 게임회사)가 있다고 가정합니다. 이 회사는 글로벌 서비스를 지원하기 위해 Multi Region에 퍼져 있는 ALB(Application Load Balancer)를 통해 각각의 마이크로 서비스들을 제공합니다. 서비스의 규모가 커지면서 여러 서비스들이 추가되는데, 서비스를 추가한다는 것은 곧 엔드포인트(Endpoint)를 추가한다는 의미이고, 이는 보안을 위한 방화벽 설정, 트래픽 라우팅 로직들을 서비스를 추가 / 제거할 때마다 수행해야 한다는 것을 의미합니다. 과정을 단순화하기 위한 방법은 어떤 것이 있나요?
Multi Region Application
AWS Global Acclerator는 여러 가지 장점을 제공하지만, 위 Usecase의 문제를 해결하기 위한 방법으로써의 장점은 공식 문서에서 소개하고 있는 "간소화된 글로벌 트래픽 관리" 입니다 위의 Usecase에 소개된 것처럼, 애플리케이션의 규모가 커져서 관리해야 할 마이크로 서비스의 개수가 많아지게 되면 일반적으로는 그만큼의 엔드포인트를 제공해야 합니다. 단순히 Scaling을 통해 해결될 수 있는 문제라면 Load Balancer와 Auto Scaling Group등의 설정을 통해 트래픽을 분산하고 안정적으로 서비스를 제공할 수 있겠지만, 기본적으로 Load Balancer는 크로스 리전이 아니며, 제공하려는 서비스의 성격이 다른 경우에는 같은 Load Balancer에 묶는 것이 적절하지 않아 불가피하게 새로운 엔드포인트를 생성해야 하는 경우가 생기게 됩니다. 엔드포인트를 새로 생성 / 제거하게 될 경우 일반적으로 관리해야 할 IP주소, 방화벽 설정, 하드코딩된 디바이스 목록이나 허용 목록들이 늘어나게 되며, 이를 일일이 관리해 주어야 하기 때문에 번거로운 부분들이 생기게 됩니다
AWS Global Accelrator는 이름 그대로 "글로벌 트래픽"을 제어하기 위한 서비스 입니다. 한 번만 설정하면 되는 2개의 정적 애니캐스트 IP를 제공하기 때문에 사용자는 Global Accelerator에서 제공하는 정적 IP를 엔드포인트로 사용하고, Global Accelerator뒤에 여러 리전의 서비스들을 제공할 수 있습니다. 즉, Multi Region(Cross Region) 서비스에 대한 설정을 간편하게 처리하고, failover에 대한 처리를 제공하여 고가용성을 제공할 수 있게 되는 것입니다.
STEP1: Enter Name & Add Listeners
다음과 같이 Global Accelerator에서 개방할 Port를 명시하면 Global Accelerator는 해당 포트로 요청이 들어올 시에 이를 Listen 하고 있다가 요청을 처리합니다.
STEP2: Add Endpoint Groups
특정 포트로 요청이 들어오면, 이 요청을 처리할 수 있는 리전을 명시해줍니다. Listener는 요청한 지점에 대해 가장 짧은 Latency를 제공할 수 있는 Region으로 이 요청을 처리해 줍니다. 만약 해당 요청을 처리할 수 없다면 다른 리전으로 요청을 보내 안정적으로 서비스를 제공할 수 있도록 처리합니다.
Step 3: Add Endpoints
마지막으로 해당 리전으로 연결되었을 때, 이 요청을 처리해 줄 엔드포인트를 지정합니다. Application Load Balancer, Network Load Balancer, EC2 Instance, Elastic IP Address의 4가지 Endpoint Type을 지정해 줄 수 있으며 Weight 설정을 통해 새로운 버전의 서비스(Endpoint) 테스트할 때, 새로운 버전의 서비스를 Endpoint에 추가하고 적절한 비율로 Traffic을 흘려가면서 Blue-Green 테스트를 수행할 수 있습니다.
Conclusion
AWS Global Accelerator를 사용하면, Cross-Region 서비스를 제공할 때, 각각의 리전에서 설정을 만지고 Endpoint를 설정하지 않아도 공통 Endpoint(2개의 Anycast IP)에서 한번에 관리할 수 있는 이점을 제공합니다. 또한, 기존의 Endpoint를 새로운 Endpoint로 대체할 때 Traffic Weight Control을 통해 서서히 Traffic의 양을 조절하면서 효율적인 Blue-Green 배포를 가능하도록 도와줍니다. 이외에도 최적의 Latency를 알아서 찾아주는 기능을 통해 서비스의 품질을 높여주고 고가용성을 제공한다는 장점이 있습니다. 다만, "Global" Accelerator인 만큼, 단일 리전에서는 불필요한 기능이 많고, 무료 서비스가 아니라는 점에서 상황에 따라 필요한 곳에서 적절하게 사용해야 하는 서비스입니다.
References
'DevOps > AWS' 카테고리의 다른 글
[ELB] Connection Draining (0) | 2021.07.28 |
---|---|
[SQS] Long Polling & Short Polling (0) | 2021.07.27 |
[CloudWatch] Alarm & Events Usecases (0) | 2021.07.22 |
[Lambda@Edge] Signed Cookie를 사용한 인증 구현 (0) | 2021.04.08 |