Amazon Web Services 한국 블로그
GoDaddy, 멀티 리전에서 대규모 이벤트 기반 아키텍처를 운영하는 방법
도메인 등록 및 웹 호스팅 서비스를 제공하는 최고의 글로벌 공급업체인 GoDaddy는 1997년 설립된 이후 지금까지 8,400만 개 이상의 도메인을 2,200만 명의 고객에게 제공했습니다. GoDaddy의 다양한 내부 시스템 중에서도 특히 Customer Signal Platform은 고객 및 제품 데이터를 캡처하고 분석하며 데이터 기반 조치로 비즈니스 성과를 개선하는 도구를 제공합니다. 이 플랫폼 덕분에 GoDaddy는 자체 웹 사이트에서 발생하는 사용자 방문과 상호 작용을 추적하고, 유의미한 이벤트 데이터를 사용하여 고객 경험과 전반적인 비즈니스 성과를 향상하고 있습니다.
현재 Customer Signal Platform은 매일 4억 건의 이벤트를 처리합니다. GoDaddy는 현재 통합 기능을 확장하고 있으며, 조만간 일일 처리하는 이벤트를 20억 건으로 늘리려 합니다.
Customer Signal Platform을 구축할 때, GoDaddy는 세 가지 시스템 아키텍처 주요 요구 사항을 충족해야 했습니다.
- 운영 부하를 최소화하고,
- 트래픽 변화에 맞게 자동으로 크기로 조정하고,
- 고가용성을 제공하며 모든 고객 신호를 캡처하는 것이었습니다.
Amazon EventBridge 이벤트 버스
요구 사항을 충족하는 여러 선택지를 평가한 GoDaddy는 Amazon EventBridge 이벤트 버스를 사용하여 고객 신호 플랫폼을 구현하기로 했습니다. EventBridge 이벤트 버스는 이벤트를 수신, 필터링, 변환, 라우팅 및 전달하는 데 유용한 서버리스 이벤트 버스입니다. EventBridge는 서버리스이므로, 최소한의 구성만으로 시작하고 자동으로 확장할 수 있습니다. GoDaddy에서 원한 첫 두 가지 요구 사항이 충족된다는 뜻이죠.
세 번째 요구 사항을 충족하려면 비즈니스 연속성을 제공하고 이벤트가 클라이언트에서 생성되어 분석 대상 플랫폼에 도달할 때까지 손실되지 않도록 하는 솔루션이 필요했습니다. EventBridge 이벤트 버스는 GoDaddy가 이러한 요구 사항을 염두에 두고 애플리케이션을 구축하는 데 도움이 된 다양한 기능을 제공합니다.
GoDaddy가 활용한 대표적인 기능은 글로벌 엔드포인트였습니다. EventBridge 글로벌 엔드포인트를 사용하면 이벤트 기반 애플리케이션의 비즈니스 연속성을 확실하면서도 간단하게 향상할 수 있습니다. 2022년에 추가된 이 새로운 기능을 사용하면 고객은 다중 리전 이벤트 기반 애플리케이션을 만들 수 있습니다.
EventBridge 글로벌 엔드포인트
글로벌 엔드포인트를 사용하면 애플리케이션이 이벤트를 전송할 목적지인 관리형 DNS 엔드포인트를 EventBridge에서 구성할 수 있습니다. 관리형 DNS 엔드포인트를 구성했다면 별개의 두 AWS 리전에 사용자 지정 이벤트 버스 2개를 구성해야 합니다. 하나는 기본 리전이고, 다른 하나는 장애 조치(보조 리전)입니다. 이벤트 장애 조치는 Amazon Route 53 상태 확인에 표시되는 상태에 따라 결정됩니다. 상태 확인 결과가 정상일 경우, 이벤트는 글로벌 엔드포인트에서 기본 리전의 사용자 지정 이벤트 버스로 라우팅됩니다. 상태 확인 결과가 비정상일 경우, 글로벌 엔드포인트는 보조 리전의 이벤트 버스로 이벤트를 전송합니다.
글로벌 엔드포인트의 가장 간단한 구성은 액티브/아카이브 구성입니다. 이 구성은 비즈니스 연속성과 단순성을 동시에 제공합니다. 액티브/아카이브 구성은 별개의 두 리전을 정의합니다. 기본 리전은 애플리케이션이 배포되고 모든 비즈니스 프로세스가 진행되는 곳입니다. 아카이브 리전은 사용자 지정 버스만 배포되고 모든 이벤트가 보관되는 곳입니다.
서로 다른 리전의 버스 간에는 양방향 복제 규칙이 적용됩니다. 상태가 정상이며 오류가 없다면, 이벤트는 기본 리전에 있는 사용자 지정 버스에 도착할 때마다 보조 리전에 있는 아카이브 사용자 지정 버스에 자동으로 복제됩니다.
장애 조치가 발생한다면 글로벌 엔드포인트는 이벤트를 보조 리전으로 리디렉션하고, 나중에 처리할 수 있도록 이벤트를 보관합니다.
GoDaddy에서 글로벌 엔드포인트를 구현한 방법
GoDaddy는 비즈니스 연속성이 보장되면서도 운영 부하는 가장 적은 솔루션을 원했고, 그래서 글로벌 엔드포인트와 액티브/아카이브 구성을 채택했습니다. 덕분에 기본 리전에서 이벤트 처리 로직을 실행하고 문제가 발생하면 보조 리전을 사용할 수 있었습니다.
이러한 구성에서 이벤트는 30일 동안 보조 리전에 보관되며, 30일이 지나면 만료됩니다. 장애 조치 발생 시 이벤트를 실시간으로 처리할 필요가 없으므로 이벤트는 아카이브에 수집됩니다. 복제 규칙 보존 기간인 24시간 안에 문제가 해결되면 이벤트가 자동으로 기본 리전으로 전송됩니다. 24시간 안에 문제가 해결되면 이벤트를 기본 리전으로 재현해야 합니다.
다음 이미지에서는 GoDaddy의 현재 솔루션을 확인할 수 있습니다. GoDaddy는 두 리전에서 작업하고 있습니다. 미국 서부(오레곤)가 기본 리전이며, 이벤트의 주요 소비자인 데이터 레이크가 있는 곳이기도 합니다. 미국 동부(버지니아 북부)는 보조 리전입니다. 이벤트는 다양한 클라이언트에서 생성되어 Amazon API Gateway로 전송됩니다. GoDaddy는 두 리전에 API 게이트웨이 두 개를 배포했습니다. 이벤트는 클라이언트에서 지연 시간이 가장 짧은 API 게이트웨이로 전송됩니다. 이 작업을 수행하기 위해 GoDaddy는 Amazon Route 53에서 제공하는 지연 시간 기반 라우팅을 사용합니다. 전송된 이벤트는 AWS Lambda 함수로 전송되며, 이 함수는 이벤트를 검증하여 DNS 수준에서 EventBridge 글로벌 엔드포인트로 전달합니다.
글로벌 엔드포인트는 액티브/아카이브 설정으로 구성되며, 장애 조치는 Amazon CloudWatch 경보를 모니터링하는 Route 53 상태 확인을 통해 트리거되도록 구성됩니다. 이 경보는 기본 리전의 IngestionToInvocationStartLatency 지표를 관찰합니다.
IngestionToInvocationStartLatency는 이벤트를 처리하는 시간, 즉 EventBridge에서 이벤트를 수집하는 시점에서 구성된 규칙으로 대상을 처음 호출하는 시점까지 걸리는 시간을 보여주는 서비스 수준 지표입니다. 이 지표는 버스의 모든 규칙에서 측정되며, EventBridge 서비스의 상태를 보여줍니다. 지연 시간이 30초를 넘으면 서비스 중단이 발생한다는 뜻입니다.
시스템이 정상 상태일 때는 이벤트가 글로벌 엔드포인트에서 기본 리전의 사용자 지정 수신 이벤트 버스로 전달됩니다. 이 사용자 지정 이벤트 버스에는 복제가 활성화됩니다. 버스에 도착하는 모든 이벤트가 보조 리전 사용자 지정 수신 이벤트 버스에 자동으로 복제된다는 뜻입니다.
수신 이벤트 버스에서 수신한 모든 이벤트는 보강 함수로 전송됩니다. 이 함수는 기본 검증 및 인증을 수행하고, 이벤트 데이터를 보강하여 서로 다른 클라이언트의 모든 이벤트가 표준인지 확인합니다.
이곳에서 이벤트는 데이터 플랫폼 이벤트 버스로 전달되어 다른 소비자 대상으로 전송됩니다. 주요 대상은 모든 이벤트를 분석하는 데이터 레이크 솔루션입니다.
채택으로 인한 변화
GoDaddy에서는 비즈니스 연속성을 중요하게 여기며, 플랫폼 문제 때문에 고객 신호가 손실되지는 않습니다. GoDaddy는 추가 운영 오버헤드 없이도 고객 신호 플랫폼을 매일 4억 건의 이벤트에서 20억 건으로 확장할 수 있다는 확신을 갖게 되었습니다.
현재 GoDaddy는 매일 이벤트 수억 건을 확실하게 시스템에서 처리하고 있으며, 이 수치는 계속 증가하고 있습니다. 다음 이미지에서는 평균적으로 하루에 글로벌 엔드포인트에서 수집하는 이벤트 수를 확인할 수 있습니다.
GoDaddy는 액티브/아카이브 패턴를 사용하여 어떤 이벤트도 손실되도록 하지 않지만, 서비스 중단이 발생하더라도 이벤트 처리 지연을 최소화해야 하는 사용 사례가 발견되었습니다. 이미 이벤트를 보조 리전에 복제하고 있었기에, GoDaddy는 가장 중요한 소비자를 두 리전 모두에 배포하고 미션 크리티컬 시스템용 액티브/액티브 구성을 활성화할 수 있습니다. 액티브/액티브 구성을 사용하면 기본 및 보조 리전 모두에서 병렬 이벤트를 처리할 수 있으며, 따라서 운영 중단이 발생하더라도 이벤트 처리를 단순화하고 비즈니스 연속성을 보장할 수 있습니다.
Customer Signal Platform을 구축할 때 GoDaddy가 세웠던 목표는 높은 신뢰성, 확장성 및 유지 관리 기준을 충족하고, 동시에 개발자가 비즈니스 요구 사항에 집중할 수 있도록 셀프 서비스 플랫폼을 유지하는 것이었습니다. 그래서 GoDaddy는 이러한 솔루션을 만들기 위해 Amazon EventBridge 글로벌 엔드포인트와 서버리스 기술을 채택했습니다.
GoDaddy Customer Signal Platform은 서버리스 기술의 역량을 보여주는 훌륭한 예시입니다. GoDaddy는 일상적이고 번거로운 작업을 클라우드를 이용해 최대한 많이 처리하여 다중 리전 전략을 위한 이벤트 버스 설정의 운영 복잡성을 줄이고, 리전 장애가 발생했을 때의 장애 조치 메커니즘을 구현했으며, 복제를 활성화하여 이벤트 손실을 방지하고 있습니다. 글로벌 엔드포인트 액티브/아카이브 구성을 사용하면 최소한의 구성 변경으로 고객 애플리케이션의 가용성을 개선할 수 있습니다.
EventBridge 글로벌 엔드포인트 사용에 관심이 있다면 이벤트 기반 애플리케이션 관련 강연을 확인해 보세요. 장애 조치 이벤트에 EventBridge 글로벌 엔드포인트를 사용하는 시연을 보고 싶다면, Serverless Land 리포지토리를 확인하시기 바랍니다.
– Marcia