AWS活用事例 – Logreco編

みなさんこんにちは、ごきげんよう。池内です。

今回から、ALBERTが自社サービスで利用しているAmazon Web Serviceの構成を紹介していくシリーズを(勝手に)始めることとなりました。

能書きは抜きに早速参ります。第1回はサイト内レコメンドエンジン「Logreco」の構成をご紹介します。

AWS構成図

AWS活用例 - Logreco編

※ 実際の構成とは異なる点があります。ご紹介目的の簡略図とご理解下さい。

サービスの特徴

Logreco」は、「この商品を見ている人は、この商品も見ています」というキャッチで利用される、Webサイト向けレコメンデーションサービスです。フロントエンドは、ログ収集や推薦商品のインプレッションを行う役割を担うJavaScriptやWeb APIを備え、裏側では「アソシエーション分析」と呼ばれる分析アルゴリズムを用い、大量のログデータの演算を行っています。

演算に利用するアクセスログは、JavaScriptがWebアプリケーションにリクエストすることで収集しています。APIを直接利用する場合もあります。Webアプリケーションは受け取ったリクエストをファイルとして書き出し、Fluentdがログを収集しAmazon S3に蓄積します。MySQLには直接INSERTを行わず、リアルタイムに利用したい行動データがある場合は(直前に見たもので推薦アイテムを変更するなど)、CookieかElastiCacheRedisにデータを保持して利用します。

AWS活用ポイント

アプリケーションの構成がレガシーであることもあって、AWSもシンプルに利用しています。マルチテナント型のサービスであるためScalabilityとAvailabilityを確保するという点を重視し、Internal ELBを導入して配下にMySQLを並べています。MySQLはRDSではなくEC2上に構築したものを利用しています。JavaScriptはCloudFrontにデプロイします。

ALBERTでは多くのサービスでAmazon Redshiftを利用していますが、Logrecoも同様です。Fluentd + S3 + Redshiftの組み合わせは、大容量データを活用する上でかかせません。

なお、より膨大なアクセス数にも適応できるようAmazon DynamoDBを採用したLogreco高速配信版(仮)を、一部のお客様に向けてご提供させて頂いております。高速配信版(仮)についても当ブログ内でご紹介する予定です。

Logreco x Amazon RDS for Aurora

構成図の通り、LogrecoはRDBにMySQLを採用しています。先日のAWS re:Invent 2014にてAmazon RDS for Auroraが発表されましたが、Amazon RDS for Auroraをアプリケーションの大きな変更なく利用可能になることが社内で期待されています。Logreco x Auroraを活用事例として紹介出来る日を楽しみにしています!