AdRoll 是再行銷業界的全球領導廠商,在 100 多個國家有超過 10,000 個活躍廣告商。該公司會根據訪客瀏覽行為來個人化廣告行銷活動,並為各種大型展示廣告庫存來源和工具提供跨平台觸角。公司於 2007 年在加州舊金山設立,經手的品牌廣告包含:Salesforce、Tableau、Alex and Ani、Rickshaw Bags 和 Hipmunk 等。
廣告再行銷的目的在於將網站訪客轉換成客戶。再行銷是全球線上商業的收入驅動要素,而 AdRoll 是其中一個產業領導廠商,於 2012 年成長了百分之 15,000。但為了有效提供廣告,AdRoll 需要具備下列彈性:在非常短的時間內增加容量、快速發出回應以即時贏得競標,以及確保系統可以快速回應競標的自動化程序。
「我們需要高效能,但不僅是這樣,」技術長 Valentino Volonghi 表示。「我們需要彈性、可跨多個資料中心和機器擴展的軟體,以及隨時可進行優化的軟體。將作業轉到雲端是我們唯一的選擇。」
AdRoll 設置即時競標基礎設施時,需要同步四個區域中每個使用者的資料,約有成千上百萬名使用者及每秒數千次寫入。公司不僅要處理即時寫入此資料的繁重工作,競標系統的每個競標要求還有 100 毫秒的固定上限,因此 AdRoll 對於讀取效能,需要強而有力的保證。
AdRoll 從採用 Amazon Simple Storage Service (Amazon S3) 開始。設置 AWS 環境並讓其順利運作花了兩週的時間,現在 AdRoll 於 Amazon S3 中存放 1.5 PB 的資料。不久之後,AdRoll 了解到 AWS 的好處不只在於儲存,因此公司開始將更多系統移轉到 AWS 雲端。現在,AdRoll 的網站核心在 30 個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行。200 到 1,000 個之間的其他執行個體 (包含 Amazon EC2 競價型執行個體) 則用於可變容量。「自動化是我們所處產業的關鍵,」Volonghi 表示。「如果這些執行個體中有任何一個失敗,則該執行個體會自行替換,不須人為介入即可持續執行。」
除了儲存和運算解決方案,AdRoll 還需要高效能資料庫解決方案,以符合其 100 毫秒的延遲需求。評估多個替代方法後,公司決定採用 DynamoDB,因為它具備低延遲、保證輸送量及快速擴展的能力。
DynamoDB 是一種 NoSQL 資料庫服務,具備保證輸送量和十毫秒以內的延遲。DynamoDB 是全受管服務,可提供自動化的三向複寫和流暢的輸送量,以及透過 API 和容易使用的管理主控台擴展儲存。
DynamoDB 表由主索引鍵 (雜湊,或雜湊和範圍) 和屬性組成。無結構描述的設計表示每個資料項目可有不同的屬性數。多種資料類型 (字串、數值、二進位資料和集) 使資料模型更加豐富。
AdRoll 表的設計可使用 Cookie 作為雜湊鍵、設定檔 ID 作為範圍鍵,以及時間戳記作為屬性。
雜湊鍵 | 範圍鍵 | 屬性 |
Cookie (使用者 ID) | 設定檔 | 時間戳記 |
"1234" | "Segment1" | "1378237387" |
"1234" | "Segment2" | "1378237417" |
AdRoll 在所有表格都使用雜湊和範圍主索引鍵。「雜湊和範圍鍵可讓我們使用單一 API BatchWriteItem,修改屬於同一個或不同雜湊鍵的多個項目,」Volonghi 表示。「同時可以將讀取操作的結果壓縮成最小的承載,讓我們以非常有效率的方式查詢資料。這可以節省儲存和輸送量費用。」
為了充分利用 DynamoDB,AdRoll 開發了自己的 DynamoDB 用戶端。「我們已在上百部機器使用,以在 Erlang 基礎設施中以一致的低延遲快速查詢 DynamoDB,」Volonghi 表示。「我們只要寫入、測量寫入輸送量和讀取輸送量,而且不需要深入研究細節就能直接獲得好處。」AdRoll 團隊建議設定低寫入輸送量和高寫入輸送量的提醒,以了解容量是否太少或系統無法使用。
透過 Amazon DynamoDB 和 Apache Storm 的搭配使用,AdRoll 可在 50 毫秒以內於全球複寫資料集,為競標和供應廣告給客戶提供快速的回應時間,同時保持低廉的費用。
AdRoll 同時還受益於 AWS 提供的可擴展性。「AWS 可讓我們處理來自 Facebook、Google、Yahoo 和其他高流量網站的流量,因此我們一天能夠提供超過 500 億次廣告曝光,」Volonghi 表示。「同時也很經濟實惠,我們在 Amazon DynamoDB 上的花費比點心費用還要少。」
使用 AWS 讓 AdRoll 可以輕鬆登入新的客戶。當新客戶登入時,AdRoll 的機器必須能夠立即處理所有其他流量。在傳統現場部署基礎設施中,通常登入新客戶代表必須重複執行下列程序:取得新機器的核准、將機器新增至 Hadoop 叢集、購買更多儲存等。這可能要花費長達 90 天的時間。「有了 AWS,我們不需要擔心這些問題,」Volonghi 表示。「如果接近容量上限,我們只要自動擴展幾個新的執行個體即可。」
無論公司實際位置在何處,都可以參與新交易來快速發展業務。「AWS 有接近所有全球流量交換的區域,因此當新的交易登入,我們可以立即加以利用,」Volonghi 表示。「這就跟切換開關一樣簡單,且可開啟新的資料中心,讓機器取得流量。之後,我們就可以開始競標。就是這麼簡單。」
Volonghi 讚揚 AWS 能夠提供 AdRoll 發展業務所需的隨需可擴展性和容量。「當我們的業務飛快成長時,使用 AWS 可讓我們擴展和優化演算法,並清除多餘的容量。AWS 為我們節省時間和金錢。我們不需要更大的資料中心,不需要雇用更多現場操作人員,而且也不需要單純為了擴展而購買更多機器。」
若要進一步了解 DynamoDB,請瀏覽我們的 Amazon DynamoDB 詳細資訊頁面:http://thinkwithwp.com/dynamodb/。