Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Copyright© BookLive Co., Ltd.
現場担当が語る!
AWSでのパーソナライズ導入事例~Amazon Redshift, Amazon S3, DynamoDB, Amazon Kinesis~
株式会社BookLive
技術開発本部 システム開発部 マネージャー 外山 英幸
ストア事業本部 マーケティング部 牧田 純
Copyright© BookLive Co., Ltd.
目次
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4DWHの必要性と課題の解決方法
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4DWHの必要性と課題の解決方法
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
1.会社概要 ~そもそもどんな会社?~
商号 株式会社BookLive
事業内容 電子書籍ストア事業及び、電子書籍配信プラットフォーム事業
所在地 東京都港区芝浦3-19-26
設立 2011年1月28日
代表者 代表取締役社長 淡野 正
資本金 48億8117万5千円
従業員数 137名(2016年4月1日現在)
1. 電子書籍ストア事業
・総合電子書籍ストア「BookLive!」の運営
・電子コミックストア「H a n d y コミック」の運営
2. 電子書籍配信プラットフォーム事業
・電子書籍アプリ「BookLive!Reader」の開発・運用
・ユーザビリティの高いクラウド書庫の実現
※BookLive!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します
Copyright© BookLive Co., Ltd.
1.自己紹介 ~こんな2人です~
某アイドル育成ゲーオタ
名前:外山 英幸(とやま ひでゆき)
所属:技術開発本部 システム開発部 ストア開発チーム
役職:マネージャー
通称:まっきー(27歳)
アニメ・ゲーム大好き
厨二マネージャー(33歳)
いろいろ開発する人です
名前:牧田 純(まきた じゅん)
所属:ストア事業本部 マーケティング部 マーケティング2チーム
役職:一般職
いろいろ企画する人です
Copyright© BookLive Co., Ltd.
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4DWHの必要性と課題の解決方法
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
2. BookLiveにおけるAWS利用範囲
Amazon EC2
主にWebサーバーとして数十~数百台
利用
CloudFront
コンテンツ配信やリソース等で月数百
GB以上利用
Amazon S3
様々なデータを配置しており、現在
200TB以上利用
ElasticCache
キャッシュ系のデータ保管先として redis
を利用
DynamoDB
クラウド本棚やしおり、ユーザーの行動履
歴等で多数利用
Amazon RDS
Mysqlやpostgresを多数利用
Amazon Redshift
DWHのコア。本日の主役。
Amazon VPC
基本的なネットワークの構成と、ダイ
レクトコネクト等で利用
AWS Route 53
DNSサーバーとして利用
Amazon CloudTrail
APIのログ処理として利用
Amazon CloudWatch
主にマネージドサービス系の
サーバー監視で利用
Amazon SES
メールサービスで利用。
Amazon Kinesis
様々なログ取得で利用。
本日の主役の一人
Amazon SQS
キューを使ったバッチ処理を容易
に実装するために利用
Copyright© BookLive Co., Ltd.
2. BookLiveにおけるAWS利用範囲 ~今回の発表範囲~
Amazon EC2
主にWebサーバーとして数十~数百台
利用
CloudFront
コンテンツ配信やリソース等で月数百
GB以上利用
Amazon S3
様々なデータを配置しており、現在
200TB以上利用
ElasticCache
キャッシュ系のデータ保管先として redis
を利用
DynamoDB
クラウド本棚やしおり、ユーザーの行動履
歴等で多数利用
Amazon RDS
Mysqlやpostgresを多数利用
Amazon Redshift
DWHのコア。本日の主役。
Amazon VPC
基本的なネットワークの構成と、ダイ
レクトコネクト等で利用
AWS Route 53
DNSサーバーとして利用
Amazon CloudWatch
主にマネージドサービス系の
サーバー監視で利用
Amazon Kinesis
様々なログ取得で利用。
本日の主役の一人
Amazon SQS
キューを使ったバッチ処理を容易
に実装するために利用
Amazon CloudTrail
APIのログ処理として利用
Amazon SES
メールサービスで利用。
Copyright© BookLive Co., Ltd.
2. BookLiveにおけるAWS利用範囲 ~今回の発表範囲 - DWHとしての利用~
Amazon Redshiftを利用したDWH基盤を構築し、
DOMOやCognos等のBIツールで様々な指標を表示
Copyright© BookLive Co., Ltd.
2. BookLiveにおけるAWS利用範囲 ~今回の発表範囲 -パーソナライズ~
例えばトップページから、
ある作品ページを閲覧し…
その後、トップに戻ると…見た作品に対応したレコメンド
が出る!※BookLive!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します
Copyright© BookLive Co., Ltd.
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4実装時の苦労や課題
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
3. 何故Redshiftを使おうと思ったか
そもそもBookLiveは全インフラの
AWS移行を進めていました。
なぜ?
Copyright© BookLive Co., Ltd.
3. 何故Redshiftを使おうと思ったか
ピークに応じて柔軟にインフラのコントロールが可
能。
必要な分だけを使用するのでインフラの無駄を減
らせ、コスト削減が可能。
ピーク予測による先行でのインフラ調達が必要
使わない無駄な
キャパシティの発生
AWSオンプレミス
ビジネスの成長予測が想定と違った場合
AWSは、ピークに応じて柔軟にインフラをコントロールすることが可能なため、
成長に合ったインフラを利用することができるので、想定相違はリスクとならない。
TIPS
Copyright© BookLive Co., Ltd.
3. 何故Redshiftを使おうと思ったか
来年以降のAWSサミットにご期待ください。
インフラのAWS移行については、
今回のテーマよりはるかに大きな規模であるため割愛。
では本題。
何故Amazon Redshiftを使おうと思ったのか?
Copyright© BookLive Co., Ltd.
3. 何故Redshiftを使おうと思ったか ~エンジニア側の考え~
2014年8月…システム開発部は悩んでいた
• BookLiveのシステムは完全内製
• アジャイルっぽい感じの開発
• 最低でも週1回はリリースがある状況
• 基本的にベンダー物が嫌いな人揃い
• でもAWSは大好き(楽はしたい)
BookLiveにおける開発 ベンダー製DWHを導入した場合
• 内製と比較してとにかく高い
• ドキュメントのやり取りが非常に多い
• データの変更で逐一連携が必要
• ブラックボックスな部分が多い
• モチベーションの低下
システム開発部 「外部のコンサル会社がめっちゃ価格の高いDWHの導入話を持ってきた…しかも偉い人たちは乗り気だし…どうしよう…」
Copyright© BookLive Co., Ltd.
( ゚д゚ ) ガタッ.r ヾ
__|_| / ̄ ̄ ̄/_\/ /
そうだ!
「もっといいDWH」 を開発側から逆提案すればいいんだ!
システム開発部は思った
Copyright© BookLive Co., Ltd.
Hadoop…
Hive …Hbase …
Cassandra …
BigQuery …
カタカタ…(ググっただけ)
Copyright© BookLive Co., Ltd.
3. 何故Redshiftを使おうと思ったか ~エンジニア側の考え~
東京リージョンのSSD 160GB 1台で$0.188 / 1時間 = 16,000円/月
3台並べても48,000円!
理由①:とにかく安い!
結果
費用、導入しやすさ、学習コスト、保守の容易性と他を
圧倒したため、導入を決定。
2か月間無料のトライアル期間があったのでまずは試し
てみる事に。
専門知識?SQLが分かればOK!インターフェイスはPostgresと同じ。
細かい違いやパフォーマンスを引き出す設計はあるが、とりあえず使いながら学べる!
理由②:すごく簡単!
BookLiveは既にAWS全移行中。既存システムとの親和性は抜群。
AWSのマネージドサービスなため構築・停止、バックアップやスケールアウトもボタン1発!
理由③:AWSのサービス!
そこで第一候補に挙がってきたのがAmazon Redshift
Copyright© BookLive Co., Ltd.
一方その頃
Copyright© BookLive Co., Ltd.
3. 何故Redshiftを使おうと思ったか ~企画側の考え~
2014年9月…マーケティング部は悩んでいた
マーケティング部 「○mazonみたいにレコメンドをもっと強化していきたい…。でも今導入しているレコメンドシステムじゃ限界だ…」
• ユーザーの行動履歴を蓄積したい
• よりリアルタイムにレコメンドを更新したい
• でもオンプレで作るのは費用がかかる
• 外部サービスだと対応が遅く高コスト
• え、どうすんの…?
当時の問題点 ( ゚д゚ ) ガタッ.r ヾ
__|_| / ̄ ̄ ̄/_\/ /
え?システムが「Redshift」導入するって?
それ使えば割と理想がかなうっぽいだって?
Copyright© BookLive Co., Ltd.
DynamoDBと組み合わせればリアルタイムな行動データの収集、更新が
出来るらしい
理由①:リアルタイム性の実現
Redshiftならば起こりがちなデータのサーバー圧迫を
気にしなくて良いらしい
理由②:蓄積データの担保
ちょうどその頃AWSを利用したよさげな
レコメンドサービスの提案があった
理由③:互換性の高いレコメンドシステム
Amazon Redshiftを使うと理想がどうかなうか?
開発チームが
導入に意欲的だったので
社内調整が楽だった
理由④:社内調整
3. 何故Redshiftを使おうと思ったか ~企画側の考え~
Copyright© BookLive Co., Ltd.
つまり
AWSサービスは
当時、社内で出ていた要望に
ことごとくマッチしていた
3. 何故Redshiftを使おうと思ったか
Copyright© BookLive Co., Ltd.
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4DWHの必要性と課題の解決方法
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
4. DWHの構築とパーソナライズ実装 DWHの必要性について①
システムの成長に伴い、様々なデータが多数のDBやログファイルに分散されていた。
アクセスログ
DB②のデータ
DB①のデータ
テーブル
テーブル
テーブル
・正規化されたテーブルが数百存在
・複雑なサブクエリのexplainに追われる日々
・特定テーブルのレコードが数千万を超えだす
・集計専用のslaveを用意したりテーブル分割をしたり…
・サービス成長に伴い、データソースも複数存在
・バッチを多数管理するが、実行順に複雑な関係が発生
・HadoopのM/Rによる集計を行ったりと四苦八苦
・機能追加時による影響範囲考慮漏れ
同一DB上の集計の場合
異なるデータソースのものを合わせて集計
Copyright© BookLive Co., Ltd.
もしAmazon Redshiftに全てのデータを集約できた場合…
Redshiftのテーブルの事「だけ」を考えて転送すればOK!
各サービス側(業務用DB)
集計・分析・外部サービスとの連携側
Redshift
Redshift
Redshiftの事「だけ」知って抽出すればOK!
4. DWHの構築とパーソナライズ実装 DWHの必要性について②
Copyright© BookLive Co., Ltd.
redshiftはSQLによる大量
更新に向かないため、基本的
にS3上に更新ファイルを配置
してcopyで取り込む。
4. DWHの構築とパーソナライズ実装 ~DWHの構築~
アクセスログ
データソース
広告データ
配信履歴データ
商品データ
CRMデータ
購買データ
行動データ
顧客データ
キャンペーン情報
S3
Redshift
DWH
基本的にはサブジェクト単
位での非正規化を行い、
できる限りjoinを行う必要
が無いように設計。
一時格納先
redshiftはSQLによる大量
更新に向かない
最も重視したことは「とにかく短期間でRedshiftの構築をする」ということ。
①テーブル単位で
jsonファイルを作成
(20分割程度)
②manifestを
コピーで取込み
manifest
Jsonファイル
Jsonファイル
…
Copyright© BookLive Co., Ltd.
4. パーソナライズ実装 ~課題~
DWHを構築できる見込みは立った。
AWS上で稼働するレコメンドエンジンの提案もあり、
DWHのデータと連携することで自社レコメンドも実現可能。
様々なデータがDWH上には集約される未来への期待が膨らんだ…。
が、サイト上でパーソナライズにあたり求められたものの1つが
「リアルタイム性」
「ユーザーが欲してる内容」を訴求するためにはできる限りタイムラグのないパーソナライズが必要。
しかし、そもそもRedshiftは「オンラインには不向き」 。
そのため、リアルタイム性の担保については別サービスの利用を検討。
Copyright© BookLive Co., Ltd.
①ページ遷移時に
ログを記録
Webサーバ群
大量のアクセスを記録す
るためには多数のWeb
サーバーが必要
KVS
冗長性を保つためには少
なくとも2台以上のKVS
が必要
②かなりのI/O数を
求められるため、DBではなく
KVSに記録する事が一般的
リアルタイム性を追求するほど
ログを記録・保存するためだけのサーバーが複数台必要になってしまう(アクセス数に比例)
4. パーソナライズ実装 リアルタイム更新① ~既存の処理~
Copyright© BookLive Co., Ltd.
①ajaxで足跡を記録
kinesis
1シャードで1000回/秒
の書込みが可能。
データソース
②KCLを利用した
バッチで転送
①のput側に関しては負荷に対するケアを何も気にしなくていいに等しい(シャード数くらい)。
②のget側に関してはクライアント用のライブラリ(KCL)もあるため2~3日で作成可能。
用途に合わせた格納先を複数用意することも容易に実現可能。
Kinesis
ユーザ行動履歴DynamoDB
S3 Redshift
500回/秒程度なら月額約43ドル!
BIでの分析やオフライン処理用シャードの増減も容易!
4. パーソナライズ実装 リアルタイム更新② ~kinesisの場合~
Copyright© BookLive Co., Ltd.
データソース
ユーザ行動履歴DynamoDB
Kinesisの転送先
レコメンドエンジン
書誌データSolr
購入履歴RDS
今回のスコープ外のサービス
パーソナライズ用API
様々なデータソースを利用し、パーソナライズ化された情報を返却するAPIを構築。
軸となる行動履歴はリアルタイムで更新されるため、返却される内容もほぼリアルタイ
ムで変動している状態。
専用のAPIをAWS上に構築
①APIで利用 ②パーソナライズ情報を表示
4. パーソナライズ実装 パーソナライズ化された結果の表示
※BookLive!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します
Copyright© BookLive Co., Ltd.
4. DWHの構築とパーソナライズ実装 ~スケジュール~
Redshift試験利用
テーブル設計
Redshift取込みバッチ開発
検証・再定義
調査・分析
要件定義
パーソナライズ用開発(バッチ・API実装)
★サイト表示開始
自動配信システムでのパーソナライズ開発
★メール配信開始
★DWH利用開始
Copyright© BookLive Co., Ltd.
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4DWHの必要性と課題の解決方法
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
5.プロジェクトを進めた結果 ~企画者側の視点から~
1. リアルタイムに変化するレコメンドが実現!
2. レコメンドを利用した他施策の実施も!
3. 蓄積したデータを利用した分析が可能に!
push通知でのレコメンド
メールでのレコメンド
※BookLive!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します
Copyright© BookLive Co., Ltd.
5.プロジェクトを進めた結果 ~企画者側の視点から~
社内でシステム構築が実現している汎用性・拡張性がともに高く、開発工数が抑えられている
ことにより
効果が高いパーソナライズ施策を、
コストを掛けずに開発し、収益の最大化が出来るようになった
Copyright© BookLive Co., Ltd.
5.プロジェクトを進めた結果 ~開発側の視点から~
サービスの提供に注力できる
新しいマネージドサービスが次々に出てくる
DevOpsがやりやすい
モチベーションの向上
スケールアップ・アウトが非常に容易
AWSサービス同士の親和性が高い
本番と同じ構成の試験環境が作りやすい
保守や拡張がしやすい
数値が可視化されておりシミュレーションが容易
開発サーバーは営業時間外は落とすなど工夫可
オンデマンドとリザーブドの使い分けがしやすい
流動的なコスト削減
リザーブド=年間契約のこと
AWSがないと生きていけなくなる
(打倒したいのに…)
デメリット
Copyright© BookLive Co., Ltd.
5.プロジェクトを進めた結果
導入にあたり、苦労したこともあります。
Copyright© BookLive Co., Ltd.
5.プロジェクトを進めた結果 ~導入にあたり、苦労したこと~
1. ベストプラクティスが分からない
自社システムに組み込む場合の最適なアーキテクトについては試
行錯誤が必要となります。
ただ、窓口担当者の方も非常に優秀なエンジニアの方であるため、
随時的確なアドバイスを頂く事が可能でした。
2. 古いアプリなどが切り捨てられている
Kinesisを利用する際、提供されているライブラリを利用するとIE8や
Android2.3で不具合がある(サポート外)等の問題が出ました。
中にはライブラリを使うのを諦めるなど、美しくない対応をしたものも
あります。
3. 想定通りのパフォーマンスが出ない事がある
Redshiftへの大量UPDATEや、IOPSを考慮せず各サービスを使うな
どするとパフォーマンスが出ずに苦労することがあります。
当たり前のことですが、ある程度各サービスの特徴をとらえた上で
正しく利用する必要があります。
様々な課題にアドバイス頂いたAmazonの
山田 俊則様・篠原 英治様に感謝の意を表して
~ S p e c i a l T h a n k s ~
Copyright© BookLive Co., Ltd.
1電子書籍の会社です
会社概要・自己紹介
2利用全域と今日のお話の範囲
BookLiveにおけるAWSの利用範囲
3導入の検討と経営層へのアピール
何故Redshiftを使おうと思ったか
4DWHの必要性と課題の解決方法
DWHの構築とパーソナライズ実装
5AWSへの印象や苦労したこと
プロジェクトを進めた結果
6今後の展望
最後に
Copyright© BookLive Co., Ltd.
パーソナライズ(Redshift利用)領域はさらに拡大しています
push通知でのレコメンド メールでのレコメンドユーザー作成リストでの
レコメンド
6.最後に ~今後の展開①~
ユーザーの購入傾向を元にしたレコメンド
Copyright© BookLive Co., Ltd.
新しいマネージドサービスもどんどん利用する予定です
6.最後に ~今後の展開②~
7月から利用開始予定6月から利用開始予定
Amazon EMRAmazon Inspector AWS LambdaAmazon Aurora
Copyright© BookLive Co., Ltd.
BookLiveでは
エンジニアの技術力向上の一環として
他社との技術交流会(勉強会)も行っています。
エンジニアの皆様、興味があればぜひご連絡ください!
6.最後に
Copyright© BookLive Co., Ltd.
終ご清聴ありがとうございました
https://booklive.jp/