毎日、何千万もの見込みある住宅の購入者、販売者、賃貸人、さらには仲介業者や不動産担当マネージャーが、Zillow ウェブサイトを利用し、家やアパート物件リスト、住宅ローンのショップ情報を検索し、米国中の 1.1 億件もの物件情報を見ています。この人気サイトは、Zillow グループによって所有され、最大規模の不動産と家屋関連のブランドのポートフォリオをオンラインで提供しています。Zillow に加えて、Zillow グループでは Trulia、HotPads、StreetEasy を運営しています。

Zillow では、300 万を超える新しい画像を毎日処理しています。それには、Zillow Digs サイトに一覧表示された写真、貸主や仲介業者向けのプロファイル画像、ホームプロジェクト画像が含まれます。「当社では、デスクトップとモバイル機器を使用するクライアント双方からのトラフィックが集中する期間に、毎秒 17,000 件の画像リクエストを受信します」と Zillow グループの Unix システムエンジニアリングマネージャー、Nick Michal 氏は述べています。

Zillow が有名になると仲介業者が会社のリストに高画質の写真データを投稿し始めたため、古い画像システムでは需要に対応できなくなりました。そのシステムはホストされたデータセンターに存在し、1 つのキューからダウンロードされた画像を伴い、ピラミッド形の TIFF 形式でネットワークアタッチドストレージ (NAS) 機器に保存され、ローカル Squid サービスからコンテンツ配信ネットワーク (CDN) に提供されていました。「この方法は高額で、高いキャッシュヒット率は得ることは CDN に依存していました。高いヒット率が得られないと、画像を効果的に提供できませんでした。毎日、容量の限界ぎりぎりで運用していました」と Michal 氏は語ります。

Zillow では、画像の処理パフォーマンスについても苦労していました。一部の画像は手動でアップロードされ、他の画像はダウンロード用にバルクフィードから送られてきたためです。バルクフィードから送られる新しい画像の比率はしばしば予測不可能で、画像ソースによっては他のソースよりも速く同時にダウンロードされるものもありました。結果として、キューの前の方に遅くて問題のある画像が存在する場合、他の画像のダウンロードが妨げられることがありました。「Zillow で帯域幅の問題があってはなりませんでした。ユーザーがサイトを開き、その画像が存在しないなら、今後はリストを見ようとしないでしょう」と、Zillow グループのシニアソフトウェア開発エンジニア、Feroze Daud 氏は語ります。「ユーザーにとってそれは不満の理由となります」

さらに、ピラミッド形の TIFF 形式で保存するために Zillow で使用していた画像処理ツールは、古くなっており、容易に拡張できませんでした。「ソリッドカラーの縁取りを取り除くといった、画質の改善を進めることは容易ではありませんでした」と、Daud 氏は述べています。災害対策は、もう 1 つの重要な問題でした。「1 つのデータセンターにすべてのデータをホストすることにはリスクがありました」と、Michal 氏は述べています。

この画像システムのスケーラビリティ、パフォーマンス、災害対策といった課題を解決するため、Zillow ではクラウドベースのインフラストラクチャに移行することを決定しました。「総コストと管理業務の緩和という観点から、クラウドの使用には多くの意味がありました」と、Michal 氏は言います。Zillow はさまざまなクラウドテクノロジーを評価して、最終的にアマゾン ウェブ サービス (AWS) を選択しました。「AWS はクラウド分野で最長の歴史があり、最優位の地位を占めていました」と、Michal 氏は述べています。「また、当社が取り込んできた企業の多くがすでに AWS を使用していました」

画像ホスティング、およびディストリビューションを物理的な共用設備から AWS に移行し、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、および画像オブジェクトストレージ用に Amazon Simple Storage Service (Amazon S3) を使用しています。現時点で Zillow では、ほぼ 100 TB のデータを Amazon S3 に保存しています。これには、3 億万もの画像と、10 億を超えるオブジェクトが含まれています。「数十億を数えるオブジェクトの管理は、従来のファイルシステムでは十分に行えません」と、Michal 氏は述べています。「これらのオブジェクトを大量のファイルシステム全体に分割する必要があるとすると、それは悪夢のような仕事です。Amazon S3 のスケーラビリティは、当社に適したテクノロジーでした」

Zillow では、ウェブアプリケーションとサービスの開発、およびスケーリングを目的とした AWS Elastic Beanstalk の使用も開始しました。開発者がコードを Elastic Beanstalk にアップロードすると、キャパシティーのプロビジョニング、ロードバランシング、自動スケーリングからアプリケーションの状態のモニタリングまで、デプロイが自動的に処理されます。同社では、Elastic Beanstalk のワーカー環境を使用し、カスタムコードで Python 画像ライブラリを実行しています。「当社ではデータを恣意的に取り込み、膨大な作業をすべて 1 度にシステムに投げ込むフィードを実行するため、一連の画像コンバーターをスケールアップする必要があります」と、Daud 氏は言います。「いくつもの静的インスタンスを保有したり、独自の自動スケーリング設定を記述したりすることとは対照的に、AWS Elastic Beanstalk では最もシンプルな方法でこれを実現できます」

その後、同社では CDN ワークロードの大部分を Akamai から Amazon CloudFront に移動しました。これはコンテンツ配信ウェブサービスで、ユーザーにより近い Zillow ウェブサイトコンテンツを配信します。「AWS CloudFront は、Akamai に比べて格段に安価で、Amazon S3 との統合に適しています」と、Michal 氏は述べています。Zillow では、いくつかのクラウドリソースをモニタリングするため、Amazon CloudWatch も利用しています。

Zillow では、データセンターでダウンロードサーバー (DLS) を使用して、フィードの一覧表示から送られてくる画像のダウンロードリクエストを管理しています。そこでは、DLS 用のクラウドでのフロントエンドサービスとして、Amazon Elastic Beanstalk REST API を使用しています。このサービスでは、各画像ダウンロードリクエストを受け、それをフィードごとに 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 では、1 日を通じて送られてくるさまざまなレベルの画像を処理するために、画像のダウンロードや処理をスケールできます。そして各フィードソースからの画像ダウンロードは現在、独立して実行されているため、Zillow では、高い帯域幅と同時実行をサポートするソースを活用し、サポートしないソースについては抑制することができます。さらに、Amazon S3 ではほぼ無制限のオブジェクトストレージを提供しているので、容量を増加するためのサーバーまたはドライブのオーダーやインストールが不要になります。

Amazon CloudFront を Amazon S3 と使用することで、Zillow では画像システムのパフォーマンスに不安を感じることがなくなりました。「以前よりはるかに多くの帯域幅を使用できるので、それについて考える必要さえなくなりました」と、Michal 氏は言います。「S3 の容量不足についてはまったく心配していません」

Zillow では、 AWS に画像処理と配信システムを移行することで、運用コストも削減できました。「Amazon CloudFront を使用することで、以前は毎月 CDN のために支払っていた金額の半分未満の支払いになりました」と Michal 氏は述べています。「NAS 機器への移動アップグレードに資金を投入する必要がなくなりました」

同社は Amazon S3 および Amazon CloudFront を使用して、画像システムの可用性を向上させました。「S3 を使用することで、リージョン内にオブジェクトをレプリケートする 3 つの方法を持てるので、1 つのアベイラビリティーゾーンがダウンしても、こちら側で開発の労力をかけずにトラフィックをユーザーに提供できます」と、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/ を参照してください。