AdRoll은 100여 개 국가의 실제 광고주 10,000여 곳을 대상으로 리타게팅 서비스를 제공하는 글로벌 선두 기업입니다. AdRoll은 방문자의 검색 행동을 기반으로 광고 캠페인을 개인화하는 대규모 디스플레이 인벤토리 소스 및 도구에 대한 교차 플랫폼 액세스를 제공합니다. AdRoll은 2007년에 설립되어 캘리포니아 주 샌프란시스코에 본사를 두고 있으며 Salesforce, Tableau, Alex and Ani, Rickshaw Bags, Hipmunk 등과 같은 브랜드의 광고를 처리하고 있습니다.

AdRoll Uses AWS to Serve 50 Billion Daily Ad Impressions (3:16)

adroll-thumb

광고 리타게팅은 사이트 방문자를 고객으로 전환하는 것입니다. 리타게팅은 전 세계적으로 온라인 비즈니스의 매출 동인이며, AdRoll은 업계 선두 기업 중 하나로 2012년에 15,000%의 성장을 기록했습니다. AdRoll에서 광고를 효과적으로 제공하기 위해서는 즉시 용량을 추가할 수 있는 유연성, 실시간 입찰에 성공할 수 있는 빠른 응답 시간, 그리고 시스템이 입찰에 신속하게 응답할 수 있도록 해주는 자동화가 필요했습니다.

CTO인 Valentino Volonghi는 "뛰어난 성능 그 이상이 필요했습니다. 유연성이 필요했고, 여러 데이터 센터와 시스템 전체에서 확장할 수 있고 상황에 따라 최적화할 수 있는 소프트웨어가 필요했습니다. 비즈니스를 클라우드로 이전하는 것이 이를 실현할 수 있는 유일한 방법이었습니다."라고 말합니다.

실시간 입찰 인프라를 구현하면서 AdRoll은 초당 수십만 건의 쓰기와 수억 명 사용자의 주문에 대해 4개의 리전에 걸쳐 모든 사용자의 데이터를 동기화해야 했습니다. 이러한 데이터를 실시간으로 써야 하는 벅찬 과제를 해결해야 할 뿐 아니라 입찰 시스템에는 모든 입찰 요청에 100밀리초라는 하드 캡 제한이 있으므로 AdRoll은 읽기 성능에 대한 강력한 보장이 필요했습니다.

AdRoll은 Amazon Simple Storage Service(S3)로 먼저 시작했습니다. AWS 환경을 시작 및 실행하는 데 약 2주가 걸렸으며 현재 AdRoll은 Amazon S3에 1.5PB의 데이터를 저장하고 있습니다. 오래 지나지 않아서 AdRoll은 AWS가 단순한 스토리지 이상의 역할을 할 수 있다는 것을 깨달았고, AWS 클라우드로 점점 더 많은 시스템을 이전하기 시작했습니다. 현재 AdRoll의 핵심 사이트가 30개의 Amazon Elastic Compute Cloud(EC2) 인스턴스에서 실행되고 있습니다. Amazon EC2 스팟 인스턴스를 비롯해 200개에서 1,000개의 추가 인스턴스를 가변 용량에 사용하고 있습니다. Volonghi는 "자동화가 우리 비즈니스의 핵심입니다. 이러한 인스턴스 중 하나에 장애가 발생하면 인적 개입 없이 시스템에서 인스턴스를 교체하여 계속 실행합니다."라고 말합니다.

AdRoll은 스토리지와 컴퓨팅 솔루션 외에 100밀리초의 지연 시간 요건을 충족하는 고성능 데이터베이스 솔루션도 필요했습니다. 여러 대안을 검토한 후 지연 시간이 짧고, 처리량이 보장되며, 빠르게 확장할 수 있는 DynamoDB를 선택했습니다.

DynamoDB는 NoSQL 데이터베이스 서비스로서 10밀리초 미만의 지연 시간과 처리량을 보장합니다. 완전관리형 서비스인 DynamoDB는 API와 사용이 간편한 관리 콘솔을 통해 원활한 처리량 및 스토리지 확장과 자동 3방향 복제를 제공합니다.

DynamoDB 테이블은 기본 키(해시 또는 해시와 범위)와 속성으로 구성됩니다. 스키마 없는 설계란 각 데이터 항목의 속성 개수가 서로 다를 수 있다는 뜻입니다. 여러 데이터 유형(문자열, 숫자, 바이너리 데이터 및 세트)은 풍부한 데이터 모델을 제공합니다.

AdRoll 테이블은 쿠키를 해시 키로, 프로필 ID를 범위 키로, 그리고 타임스탬프를 속성으로 사용하도록 설계되었습니다.

해시 키 범위 키 속성
쿠키(사용자 ID) 프로필 타임스탬프
"1234" "Segment1" "1378237387”
"1234" "Segment2" "1378237417"

AdRoll은 모든 테이블에서 해시 및 범위 기본 키를 사용합니다. Volonghi는 "해시 및 범위 키를 사용하면 BatchWriteItem라는 단일 API를 통해 같은 또는 다른 해시 키에 속한 여러 항목을 변경할 수 있습니다. 또한, 읽기 작업 결과를 가장 작은 크기의 페이로드로 축소함으로써 데이터를 매우 효율적으로 쿼리할 수 있습니다. 이를 통해 스토리지 비용과 처리량 비용을 모두 절약할 수 있습니다."라고 말합니다.

AdRoll은 DynamoDB를 최대한 활용하기 위해 자체 DynamoDB 클라이언트를 개발했습니다. Volonghi는 "수백 대의 시스템에서 이를 사용하여 AdRoll의 Erlang 인프라 전체에서 일관되게 짧은 지연 시간으로 DynamoDB를 빠르게 쿼리하고 있습니다. DynamoDB에 쓰고, 쓰기 처리량과 읽기 처리량을 측정하면, 세부 정보를 검토할 필요 없이 이를 활용할 수 있습니다."라고 말합니다. AdRoll 팀은 쓰기 처리량에 대한 경보를 낮은 수준과 높은 수준 모두에 설정하면 언제 용량이 감소하는지 또는 시스템이 중단되는지 이해할 수 있다고 말합니다.

AdRoll은 Apache Storm과 함께 Amazon DynamoDB를 사용함으로써 전 세계를 망라해 데이터 세트를 50밀리초 내에 복제할 수 있게 되면서 입찰과 고객 광고 서비스 모두에 중요한 신속한 응답 시간과 낮은 비용 유지라는 두 가지 이점을 모두 누릴 수 있습니다.

또한, AdRoll은 AWS가 제공하는 확장성의 혜택도 받고 있습니다. Volonghi는 "AWS에서 Facebook, Google, Yahoo 및 기타 방문자가 많은 사이트의 트래픽을 처리할 수 있는 역량을 제공해줌에 따라 우리는 하루에 500억 건 이상의 노출을 지원할 수 있습니다. Amazon DynamoDB가 다 알아서 해주기 때문에 관리 부담이 최소화됩니다."라고 말합니다.

AdRoll은 AWS를 사용하면서 새로운 고객을 손쉽게 지원할 수 있게 되었습니다. 새로운 고객이 가입하면 AdRoll의 시스템에서 모든 추가 트래픽을 즉시 처리할 수 있어야 합니다. 기존 온프레미스 인프라에서는 새로운 고객을 지원하려면 새로운 시스템을 확보하기 위한 승인 프로세스를 진행하고, 하둡 클러스터에 이를 추가하고, 추가 스토리지를 구매하는 등의 과정을 거쳐야 했습니다. 이러한 과정은 최대 90일까지 걸릴 수도 있습니다. Volonghi는 "AWS를 사용하면, 아무것도 걱정할 필요가 없습니다. 용량을 거의 소진하면, 새로운 인스턴스 몇 개를 자동으로 확장하기만 하면 됩니다."라고 말합니다.

AdRoll은 물리적인 위치와 관계없이 새로운 교환 사이트에 조인하여 비즈니스를 신속하게 구축할 수 있습니다. Volonghi는 "AWS는 전 세계 모든 트래픽 교환 사이트 가까이에 리전을 보유하고 있으므로 새로운 교환이 시작되면 즉시 이를 활용할 수 있습니다. 우리 시스템이 트래픽을 받을 수 있는 곳에 새로운 데이터 센터를 여는 것은 스위치를 켜는 것만큼 간단합니다. 그 후에 입찰을 시작할 수 있습니다. 아주 쉽습니다."라고 말합니다.

Volonghi는 AdRoll이 비즈니스를 구축하는 데 필요한 확장성과 용량을 온디맨드로 제공하는 AWS를 높이 평가합니다. "비즈니스가 매우 빠른 속도로 성장할 때 AWS를 통해 확장하고 알고리즘을 최적화하여 불필요한 용량을 제거할 수 있었습니다. AWS는 시간과 비용을 절약해줍니다. 확장을 위해 더 큰 데이터 센터도, 더 많은 운영 인력도, 그리고 더 많은 시스템도 확보할 필요가 없습니다."

DynamoDB에 대한 자세한 내용은 Amazon DynamoDB 상세 정보 페이지인 http://aws.amazon.com/dynamodb/를 참조하십시오.