[レポート] コマース用スマフォアプリにおけるAWS構成&Cognito活用事例 #AWSSummit
コマース用スマフォアプリにおけるAWS構成&Cognito活用事例
AWS Summit Tokyo 2015 の TC-04: Tech Deep Dive by Customers のセッション「コマース用スマフォアプリにおけるAWS構成&Cognito活用事例」のレポートです。スピーカーはクルーズ株式会社のSHOPLIST.com事業本部の田沢氏、加川氏、稲垣氏です。
紹介
- CROOZ
- ブラウザゲー
- iOS、Androidのゲームを世界に配信
- SHOPLIST.com
- コマースショッピングサイト
- エンターテイメントを提供
アジェンダ
- SHOPLIST.comのAWS構成、負荷(メガセール時)の概要
- 認証機能としてのCognito活用事例
- 今後のAWS活用予定、方向性
- 今後のAWSに期待したいこと
SHOPLIST.comについて
- 昨年の年間取引高100億円
- メガセール時、取引高月10億円突破
- 90%以上がスマホから
- インフラ構成
- AWSに移行したのは昨年の10月
- それまでオンプレで運用していたが約1ヶ月でクラウドに移行できた
- サービスはノンストップ、入れ替え時に数時間メンテ入れた程度
- DNSはRoute53
- ELB、EC2
- MariaDB on EC2
- Aurola移行を検討中
- 検索はElasticSearch、キャッシュはElastiCacheとRedis
- レコメンドに近いところをMapReduce
- 商品画像はオリジナルはS3、サムネ化はnginx
- コンテンツ配信はCloudFrontでCDN化
- オンプレで使用している一部をVPC、VPNで接続
- インスタンスタイプ
- その時点で一番いいものを使用する運用
- 新インスタンスのほうがパフォーマンスが3割位良い
- Webはc3.2xlarge、c3.xlarge
- DBはr3.4xlarge、r3.2xlarge
- Cacheはcache.r3.large
- バッチはm3.xlarge
- スケーラビリティ
- 年3回「メガセール」を実施
- 開始時にメルマガを送信
- 通常の約5倍のアクセス数
- 最大は1,000r/s
- レイテンシは900msを超えることはない
- コスト
- 1インスタンスあたりのreq/sを想定で
- 一式をワンセットとする
- Web4台、db5台、search6台、cache5台
- Web(c3.2xlarge) 100r/s
- DB(r3.xlarge) 200r/s
- Cache(cache.r3.large) 500r/s
- 全体の売上に対して3%以下に抑える方針にしている
- 1ヶ月の売上に対して1%程度しかかかっていない
- 画像配信
- CloudFrontを使用
- CDNは他社サービスでもあるが(以前使っていた)
- 現在はすべてAWSを使っている
- トラフィック増でも十分さばけている
- リザーブドは3,4割安い
Cognito活用事例
- モバイルアプリからCognitoを利用
- 極力EC2を経由せず、アプリ、新サービスのアクセスを捌きたい
- スケールさせるのを考慮せずに直接AWSサービスを利用したい
- SHOPLIST.comの認証基盤を今後新サービスにも展開したい
- SSOも手間がかかるが、Cognitoを経由することで多少は楽になりそう
- パーソナライズされたユーザーの行動情報を活用していきたい
- 苦労した点、良かった点
- 導入を決めるところが苦労
- 既存の認証基盤を使うと、一手間増えるだけに
- Kinesis活用など今後も見据えて入れるなどの理由が必要
- データ同期の仕組みをフルスクラッチで作らなくて良い
- 今後、アップデートで対応される
- レイテンシが気になるレベルになっているのが問題
- Cognitoが東京リージョンに無いため
- 最大で900msくらいになっている
- 具体的なプログラム
- DeveloperAuthenticateを利用
- Unauthも対応
- CustomIdentityProviderクラスを作成
- IdentityIdがとれてもSHOPLIST.comのトークンが取れていない場合がある
- 確実にSHOPLIST.comのサーバーへリクエストが送信されない場合がある
- とても簡単
- サーバーサイドも難しくない
- SHOPLIST.comのIDにCognitoのIdentityIdを紐付ける
- SHOPLIST.comのトークンが切れている場合があるが、mergeDevelopIdentityを実行している
今後のAWSの活用予定
- DynamoDB、Kinesisの活用
- Webサーバーのログ、ユーザーの行動履歴を流す
- ElastiCacheを一部DynamoDBに移行を検討中
- スケーラビリティを確保したい
- ElastiCacheはキーが増えたら分散しないと厳しい
- コスト面でメリットが出る
- レイテンシがElastiCacheよりかかるのが懸念
- 今後のサービスの予定
- リアルタイム、シームレス、パーソナライズ
- スマホ⇔PC、おすすめなど
- Cognito、Kinesis、EMRを活用
- ユーザーにフォーカスした検索並び順の整備
- きれいな画像やユーザーレビュー(ただしノイズ除外必要)
- ノイズ除外はAMLを使って自動判定にしたい
- 在庫確保
- 欲しいと思う商品が無いのは問題
- 物が売れる予測を立てる必要がある
- Redshiftを使ってデータマイニングをしている
- 相関関係をAMLを使って予測する調査を進めている
- リアルタイム、シームレス、パーソナライズ
今後のAWSに期待したいこと
- AML
- 未来販売予測、レビューノイズ除外、商品検知
- Aurora
- 無停止、柔軟なRDB拡張
- Lambda
- 最低限数のインスタンスでサービスの実現
- システム運用面
- 無停止でインスタンスタイプを変更したい
- セキュリティ面
- コストメリット
- EC2がほとんどコストになっているので、EC2を使わなくて済むアーキテクチャにしたい
まとめ
トラフィックが高い場合の対応方法やCognito活用のメリット・デメリットが具体的に聞くことができ、勉強になりました。AMLの活用もかなり考えておられるようで、AWSのサービスに対してかなり積極的な印象を受けました。今後もSHOPLIST.comに期待ですね!