每天,有數以千萬計的潛在購屋者、售屋者和租屋者,加上房屋仲介和地產經理人,都使用 Zillow 網站瀏覽房屋和公寓型錄、選購貸款方案,以及尋找遍及美國 1.1 億住家的資訊。這個熱門網站為 Zillow Group 所有,這間公司擁有線上最大的房地產和住家相關品牌的產品組合。Zillow Group 除了 Zillow 以外,同時營運 TruliaHotPadsStreetEasy

Zillow 每天處理 300 萬個以上的新影像,包括型錄相片、房東和仲介的個人資料圖片,以及 Zillow Digs 網站上的住家投影影像。「我們在尖峰流量期間每秒會從桌上型電腦和行動用戶端收到 17,000 個影像請求。」Zillow Group 的 Unix 系統工程經理 Nick Michal 說。

隨著 Zillow 使用人口成長且房仲開始在型錄中張貼更高解析度的相片,公司的舊影像處理系統逐漸無法追上需求的腳步。系統位於託管的資料中心內,以一個佇列下載影像,再以金字塔形的 TIFF 格式存放在網路連接儲存 (NAS) 裝置中,並從本機 Squid 服務提供給內容交付網路 (CDN)。「這種執行方式很昂貴,而且我們的 CDN 必須具有高快取命中率。如果沒有達到這個命中率,就無法有效率地提供影像。我們每天幾乎都達到容量上限。」Michal 這樣說明。

Zillow 也面臨影像處理效能問題的困境,因為有些影像是手動上傳,而其他則來自要下載的大量饋送。來自大量饋送的新影像速率通常無法預測,而且有些影像來源與其他來源相比,能夠透過更多並行以加快下載速度。因此,佇列前段中的慢速或有問題影像會拖慢其他影像的下載。「Zillow 不能出現頻寬問題,因為如果使用者進入網站但看不到影像,他們就不會瀏覽型錄。」Zillow Group 的資深軟體開發工程師 Feroze Daud 認為。「這會讓使用者覺得沮喪。」

不僅如此,Zillow 用來處理以金字塔形 TIFF 格式儲存影像的工具已經過時且不易擴展。「移除實色邊緣來提高影像品質這類的工作對我們來說並不容易。」Daud 說。災難復原是另一個重要考量。「將所有物件託管在一個資料中心是有風險的。」Michal 認為。

為了解決它的影像系統在擴展性、效能及災難復原方面的挑戰,Zillow 決定轉為使用雲端基礎設施。「從整體成本和易於管理的觀點而言,雲端是很合理的選項。」Michal 解釋說。Zillow 評估過各種雲端技術之後,決定選用 Amazon Web Services (AWS)。「AWS 在雲端空間的歷史最悠久,具有主導地位。」Michal 這樣認為。「而且,我們進行採購的一些公司也已經使用 AWS。」

公司將它的影像託管和分發從實體設施遷移到 AWS,使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和 Amazon Simple Storage Service (Amazon S3) 來儲存影像物件。Zillow 目前在 Amazon S3 存放近 100 TB 的資料,包括 3 億個影像和超過 10 億個物件。「在傳統檔案系統上維護數 10 億個物件的效果並不理想。」Michal 說。「我們必須將這些物件分割到許多檔案系統,而變成一個管理的夢魘。看起來 Amazon S3 的可擴展性是適合我們的技術。」

Zillow 也開始使用 AWS Elastic Beanstalk,這個服務可部署和擴展 Web 應用程式及服務。開發人員可將程式碼上傳到 Elastic Beanstalk,然後從容量佈建、負載平衡和自動調整規模到應用程式運作狀態監控等部署,Elastic Beanstalk 都可為您自動處理。公司使用 Elastic Beanstalk 工作者環境,利用自訂程式碼執行 Python Imaging Library。「因為我們以雜亂的方式導入資料,一次就將大量工作傾入系統來執行饋送,所以我們需要擴展影像轉換程式套裝組合。」Daud 這樣說。「AWS Elastic Beanstalk 是執行這個工作的最簡單方式,不用一些靜態執行個體或嘗試撰寫我們自己的自動調整規模組態。」

接著,組織將大部分的 CDN 工作負載從 Akamai 移到 Amazon CloudFront,這是一項內容交付 Web 服務,可更靠近使用者發佈 Zillow 網站內容。「AWS CloudFront 比 Akamai 相對便宜許多,而且它可以順暢地與 Amazon S3 整合。」Michal 表示。Zillow 也使用 Amazon CloudWatch 來監控它的一些雲端資源。

Zillow 在資料中心使用下載伺服器 (DLS) 管理來自型錄饋送的影像下載請求,並使用 Amazon Elastic Beanstalk REST API 做為雲端中 DLS 的前端服務。這項服務會接收每個影像下載請求,將它放入每一個饋送的 Amazon Simple Queue Service (Amazon SQS) 訊息佇列服務。「使用 SQS 讓我們擁有一個佇列系統,而且不用自己支援基礎設施。」Michal 這樣認為。

受到限制的下載程式控制 Zillow 下載每個饋送來源影像的速率和並行數,讓公司利用可支援快速下載的影像提供者,又不致全面取代不提供此功能的提供者。如果影像下載成功,Zillow 會將原始影像寫入 Amazon S3 以用於影像處理。

對於影像處理,Zillow 會利用存放在 S3 的原始影像,然後透過各種影像品質方法進行處理,同時為每個影像產生一組標準的大小。所有影像會自 Amazon S3 取出,並在 Amazon CloudFront 中快取。公司每秒平均最多提供 15,000 個影像。

使用 AWS,Zillow 可為潛在購屋者、租屋者、房仲業者及其他網站訪客提供更佳的使用體驗。「透過移至 AWS,我們不用再擔心快取排清或容量問題。我們擁有提供高品質房地產影像所需的可擴展性和效能,這對 Zillow 使用者體驗非常重要。」Daud 表示。Zillow 可以擴展影像下載和處理,以處理一天內各種層級的傳入影像。而且因為現在每個饋送來源的影像下載都是各自獨立,所以 Zillow 可以利用支援高頻寬和並行的來源,同時也調節不支援這些功能的來源。不僅如此,Amazon S3 為公司提供幾乎無限制的物件儲存空間,因此不用再訂購和安裝更多伺服器或磁碟機以增加容量。

使用 Amazon CloudFront 搭配 Amazon S3,Zillow 對它的影像處理系統效能信心大增。「我們比以前多了很多頻寬,所以甚至不用再考慮這個問題。」Michal 表示。「而且我們絕對不必擔心 S3 的容量用完。」

Zillow 將影像處理和交付系統遷移到 AWS 的同時,也降低了營運成本。「使用 Amazon CloudFront 之後,我們每月支付的費用比使用 CDN 減少一半以上。」Michal 這麼說。「我們不用再支付遷移升級到 NAS 裝置的費用。」

公司因為使用 Amazon S3 和 Amazon CloudFront 而提高其影像處理系統的可用性。「有了 S3,我們可在一個區域內三向複寫物件,即使可用區域故障,仍然可以為使用者提供流量,無須我們進行開發。」Michal 說。

災難復原也有所改善。「我們絕對可從 AWS 的地理分佈上獲利。」Michal 表示。「因為有許多 AWS 區域和這些區域中的可用區域,所以我們不只產生較接近使用者的動態內容,還改善了災難復原的能力。」

Zillow 現在回應可擴展性需求變得更靈活。「只要我想執行重大應用程式版本變更,隨時都可以運轉 Amazon EC2 執行個體,或者只需按幾下滑鼠按鍵就能建立新的 Amazon CloudFront 分發。」Daud 這樣說。「整體而言,我們使用 AWS 之後速度變得更快。」

組織也更清楚地看到系統效能。「我們之前有一些影像處理延遲,而最初版本的雲端應用程式無法提供足夠的指標,所以無法找出管道中造成延遲的元件。」Michal 說。「但是開始使用 Amazon CloudWatch 追蹤延遲之後,就更清楚了解原因所在,並採取動作來消除它們。」

Zillow 將繼續尋求將服務移至雲端的其他機會。「我們第一次遷移到 AWS 時,CloudFront 仍是相當新的服務,我們以為要冒風險。」Michal 說。「但是,它證明了自己的能力。將來,對於新的專案和服務,我們會考慮 AWS。我們的使用體驗非常棒。」

要進一步了解 AWS 如何協助您提高影像處理和交付的擴展和效能,請瀏覽我們的 Amazon CloudFront 詳細資訊頁面:http://aws.amazon.com/cloudfront/