• 検索結果がありません。

A.週間ランキングメールのパーソナライズ配信 (セグメント小)

N/A
N/A
Protected

Academic year: 2021

シェア "A.週間ランキングメールのパーソナライズ配信 (セグメント小)"

Copied!
42
0
0

読み込み中.... (全文を見る)

全文

(1)

現場担当が語る!

AWSでのパーソナライズ導入事例

~Amazon Redshift, Amazon S3, DynamoDB, Amazon Kinesis~

(2)

目次

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

DWHの必要性と課題の解決方法

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

最後に

(3)

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

DWHの必要性と課題の解決方法

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

(4)

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!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します

(5)

1.自己紹介 ~こんな2人です~

名前:外山 英幸(とやま ひでゆき)

所属:技術開発本部 システム開発部 ストア開発チーム

役職:マネージャー

アニメ・ゲーム大好き 厨二マネージャー(33歳 )

いろいろ開発する人です

名前:牧田 純(まきた じゅん)

所属:ストア事業本部 マーケティング部 マーケティング2チーム

役職:一般職

いろいろ企画する人です

(6)

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

DWHの必要性と課題の解決方法

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

最後に

(7)

2. BookLiveにおけるAWS利用範囲

Amazon EC2

主にWebサーバーとして 数十~ 数百台 利用

CloudFront

コンテンツ配信やリソース等で 月数 百 GB以上利用

Amazon S3

様々なデータを配置して おり、 現在 200TB以上利用

ElasticCache

キャッシュ系のデータ 保管先 として r edi s

DynamoDB

クラウド本棚やしおり、ユーザーの行動履 歴等で多数利用

Amazon RDS

Mysqlやpostgr esを多数 利用

Amazon Redshift

DWHのコア。本日の主役。

Amazon VPC

基本的なネットワーク の構成 と、 ダイ レクトコネクト等で利用

AWS Route 53

DNSサーバーとして利用

Amazon CloudTrail

APIのログ処理として利用

Amazon CloudWatch

主にマネージドサービス系 の サーバー監視で利用

Amazon SES

メールサービスで 利用。

Amazon Kinesis

様々なログ取得で利用。 本日の主役の一人

Amazon SQS

キューを使ったバッチ処理を容易 に実装するために利用

(8)

2. BookLiveにおけるAWS利用範囲 ~今回の発表範囲~

Amazon EC2

主にWebサーバーとして 数十~ 数百台 利用

CloudFront

コンテンツ配信やリソース等で 月数 百 GB以上利用

Amazon S3

様々なデータを配置して おり、 現在 200TB以上利用

ElasticCache

キャッシュ系のデータ 保管先 として r edi s を利用

DynamoDB

クラウド本棚やしおり、ユーザーの行動履 歴等で多数利用

Amazon RDS

Mysqlやpostgr esを多数 利用

Amazon Redshift

DWHのコア。本日の主役。

Amazon VPC

基本的なネットワーク の構成 と、 ダイ レクトコネクト等で利用

AWS Route 53

DNSサーバーとして利用

Amazon CloudWatch

主にマネージドサービス系 の サーバー監視で利用

Amazon Kinesis

様々なログ取得で利用。 本日の主役の一人

Amazon SQS

キューを使ったバッチ処理を容易 に実装するために利用

Amazon CloudTrail

APIのログ処理として利用

Amazon SES

メールサービスで 利用。

(9)

2. BookLiveにおけるAWS利用範囲 ~今回の発表範囲 - DWHとしての利用~

Amazon Redshiftを利用したDWH基盤を構築し、

DOMOやCognos等のBIツールで様々な指標を表示

(10)

2. BookLiveにおけるAWS利用範囲 ~今回の発表範囲 -パーソナライズ~

例えばトップページから、

ある作品ページを閲覧し…

その後、トップに戻ると…

見た作品に対応したレコメンド

が出る!

※BookLive!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します

(11)

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

実装時の苦労や課題

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

(12)

3. 何故Redshiftを使おうと思ったか

そもそもBookLiveは全インフラの

AWS移行を進めていました。

(13)

3. 何故Redshiftを使おうと思ったか

ピークに応じて柔軟にインフラのコントロールが可

能。

必要な分だけを使用するのでインフラの無駄を減

らせ、コスト削減が可能。

ピーク予測による先行でのインフラ調達が必要

使わない無駄な

キャパシティの発生

AWS

オンプレミス

ビジネスの成長予測が想定と違った場合

AWSは、ピークに応じて柔軟にインフラをコントロールすることが可能なため、

成長に合ったインフラを利用することができるので、

想定相違はリスクとならない。

TIPS

(14)

3. 何故Redshiftを使おうと思ったか

来年以降のAWSサミットにご期待ください。

インフラのAWS移行については、

今回のテーマよりはるかに大きな規模であるため割愛。

では本題。

何故Amazon Redshiftを使おうと思ったのか?

(15)

3. 何故Redshiftを使おうと思ったか ~エンジニア側の考え~

2014年8月…システム開発部は悩んでいた

• BookLiveのシステムは完全内製

• アジャイルっぽい感じの開発

• 最低でも週1回はリリースがある状況

• 基本的にベンダー物が嫌いな人揃い

• でもAWSは大好き(楽はしたい)

BookLiveにおける開発

ベンダー製DWHを導入した場合

• 内製と比較してとにかく高い

• ドキュメントのやり取りが非常に多い

• データの変更で逐一連携が必要

• ブラックボックスな部分が多い

• モチベーションの低下

システム開発部

外部のコンサル会社がめっちゃ価格の高いDWHの導入話を持ってきた…

しかも偉い人たちは乗り気だし…どうしよう…」

(16)

( ゚д゚ ) ガタッ

.r

__|_| / ̄ ̄ ̄/_

\/

/

そうだ!

もっといいDWH

」 を開発側から逆提案すればいいんだ!

システム開発部は思った

(17)

Hadoop…

Hive …

Hbase …

Cassandra …

(18)

3. 何故Redshiftを使おうと思ったか ~エンジニア側の考え~

東京リージョンのSSD 160GB 1台で

$0.188 / 1時間 = 16,000円/月

3台並べても48,000円!

理由①:とにかく安い!

結果

費用、導入しやすさ、学習コスト、保守の容易性と他を

圧倒したため、導入を決定。

2か月間無料のトライアル期間

があったのでまずは試し

てみる事に。

専門知識?

SQLが分かればOK!

インターフェイスはPostgresと同じ。

細かい違いやパフォーマンスを引き出す設計は

あるが、とりあえず使いながら学べる!

理由②:すごく簡単!

BookLiveは既にAWS全移行中。

既存システムとの親和性は抜群。

AWSのマネージドサービスなため構築・停止、

バックアップやスケールアウトもボタン1発!

理由③:AWSのサービス!

そこで第一候補に挙がってきたのがAmazon Redshift

(19)
(20)

3. 何故Redshiftを使おうと思ったか ~企画側の考え~

2014年9月…マーケティング部は悩んでいた

マーケティング部 「○mazonみたいにレコメンドをもっと強化していきたい…。

でも今導入しているレコメンドシステムじゃ限界だ…」

• ユーザーの行動履歴を蓄積したい

• よりリアルタイムにレコメンドを更新したい

• でもオンプレで作るのは費用がかかる

• 外部サービスだと対応が遅く高コスト

• え、どうすんの…?

当時の問題点

( ゚д゚ ) ガタッ

.r

__|_|

/ ̄ ̄ ̄/_

\/

/

え?システムが「Redshift」導入するって?

それ使えば割と理想がかなうっぽいだって?

(21)

DynamoDBと組み合わせれば

リアルタイムな行動データの収集、更新が

出来る

らしい

理由①:リアルタイム性の実現

Redshiftならば

起こりがちなデータのサーバー圧迫を

気にしなくて良い

らしい

理由②:蓄積データの担保

ちょうどその頃

AWSを利用したよさげな

レコメンドサービス

の提案があった

理由③:互換性の高いレコメンドシステム

Amazon Redshiftを使うと理想がどうかなうか?

開発チームが

導入

意欲的

だったので

社内調整が楽

理由④:社内調整

3. 何故Redshiftを使おうと思ったか ~企画側の考え~

(22)

つまり

AWSサービスは

当時、社内で出ていた要望

ことごとく

マッチしていた

(23)

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

DWHの必要性と課題の解決方法

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

(24)

4. DWHの構築とパーソナライズ実装 DWHの必要性について①

システムの成長に伴い、様々なデータが多数のDBやログファイルに分散されていた。

アクセスログ DB②のデータ DB①のデータ テーブル テーブル テーブル

・正規化されたテーブルが数百存在

複雑なサブクエリのexplainに追われる日々

・特定テーブルのレコードが数千万を超えだす

・集計専用のslaveを用意したりテーブル分割をしたり…

・サービス成長に伴い、データソースも複数存在

・バッチを多数管理するが、実行順に複雑な関係が発生

・HadoopのM/Rによる集計を行ったりと四苦八苦

機能追加時による影響範囲考慮漏れ

同一DB上の集計の場合

異なるデータソースのものを合わせて集計

(25)

もしAmazon Redshiftに全てのデータを集約できた場合…

Redshiftのテーブルの事「だけ」を考えて転送すればOK!

各サービス側(業務用DB)

集計・分析・外部サービスとの連携側

Redshift

Redshift

Redshiftの事「だけ」知って抽出すればOK!

4. DWHの構築とパーソナライズ実装 DWHの必要性について②

(26)

redshiftはSQLによる大量

更新に向かない

ため、基本的

にS3上に更新ファイルを配置

してcopyで取り込む。

4. DWHの構築とパーソナライズ実装 ~DWHの構築~

アクセスログ

データソース

広告データ 配信履歴データ 商品データ CRMデータ 購買データ 行動データ 顧客データ キャンペーン情報

S3

Redshift

DWH

基本的には

サブジェクト単

位での非正規化

を行い、

できる限りjoinを行う必要

が無いように設計。

一時格納先

redshiftはSQLによる大量

更新に向かない

最も重視したことは「

とにかく短期間でRedshiftの構築をする

」ということ。

①テーブル単位で jsonファイルを作成 (20分割程度) ②manifestを コピーで取込み manifest Json ファイル Json ファイル …

(27)

4. パーソナライズ実装 ~課題~

DWHを構築できる見込みは立った。

AWS上で稼働するレコメンドエンジンの提案もあり、

DWHのデータと連携することで自社レコメンドも実現可能。

様々なデータがDWH上には集約される未来への期待が膨らんだ…。

が、サイト上でパーソナライズにあたり求められたものの1つが

「リアルタイム性」

「ユーザーが欲してる内容」を訴求するためにはできる限りタイムラグのないパーソナライズが必要。

しかし、そもそも

Redshiftは「オンラインには不向き」

そのため、リアルタイム性の担保については別サービスの利用を検討。

(28)

①ページ遷移時に ログを記録

Webサーバ群

大量のアクセスを記録す

るためには

多数のWeb

サーバーが必要

KVS

冗長性を保つためには少

なくとも

2台以上のKVS

が必要

②かなりのI/O数を 求められるため、DBではなく KVSに記録する事が一般的

リアルタイム

性を追求す

るほど

ログ

記録・保存

する

ためだけ

のサーバーが

複数台必要

になってしまう(アクセス数に比例)

4. パーソナライズ実装 リアルタイム更新① ~既存の処理~

(29)

①ajaxで足跡を記録

kinesis

1シャードで1000回/秒

の書込みが可能。

データソース

②KCLを利用した

バッチで転送

①のput側に関しては

負荷に対するケアを何も気にしなくていいに等しい(シャード数くらい)

②のget側に関してはクライアント用のライブラリ(KCL)もあるため2~3日で作成可能。

Kinesis

ユーザ行動履歴

DynamoDB

S3

Redshift

500回/秒程度なら

月額約43ドル

BIでの分析や

オフライン処理用

シャードの増減も容易!

4. パーソナライズ実装 リアルタイム更新② ~kinesisの場合~

(30)

データソース

ユーザ行動履歴

DynamoDB

Kinesisの転送先 レコメンドエンジン 書誌データSolr 購入履歴RDS 今回のスコープ外のサービス

パーソナライズ用API

様々なデータソースを利用し、パーソナライズ化された情報を返却するAPIを構築。

軸となる行動履歴はリアルタイムで更新されるため、

返却される内容もほぼリアルタイ

ムで変動している状態

専用のAPIをAWS上に

構築

①APIで利用

②パーソナライズ

情報を表示

4. パーソナライズ実装 パーソナライズ化された結果の表示

※BookLive!サイトの表示画像から掲載. 書籍に関する権利は各権利元に帰属します

(31)

4. DWHの構築とパーソナライズ実装 ~スケジュール~

Redshift

試験利用

テーブル

設計

Redshift

取込みバッチ開発

検証・

再定義

調査・

分析

要件定義

パーソナライズ用開発

(バッチ・API実装)

★サイト表示開始

自動配信システムでの

★メール配信開始

★DWH利用開始

(32)

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

DWHの必要性と課題の解決方法

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

最後に

(33)

5.プロジェクトを進めた結果 ~企画者側の視点から~

1. リアルタイムに変化するレコメンドが実現!

2. レコメンドを利用した他施策の実施も!

3. 蓄積したデータを利用した分析が可能に!

push通知でのレコメンド

メールでのレコメンド

(34)

5.プロジェクトを進めた結果 ~企画者側の視点から~

社内でシステム構築が実現している

汎用性・拡張性がともに高く、開発工数が抑えられている

ことにより

効果

高い

パーソナライズ施策を、

コスト

掛けず

に開発し、

収益

最大化

が出来るようになった

(35)

5.プロジェクトを進めた結果 ~開発側の視点から~

サービスの提供に注力できる

新しいマネージドサービスが次々に出てくる

DevOpsがやりやすい

モチベーションの向上

スケールアップ・アウトが非常に容易

AWSサービス同士の親和性が高い

本番と同じ構成の試験環境が作りやすい

保守や拡張がしやすい

数値が可視化されておりシミュレーションが容易

開発サーバーは営業時間外は落とすなど工夫可

オンデマンドとリザーブドの使い分けがしやすい

流動的なコスト削減

AWSがないと生きていけなくなる

(打倒したいのに…)

デメリット

(36)

5.プロジェクトを進めた結果

(37)

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

(38)

1

電子書籍の会社です

会社概要・自己紹介

2

利用全域と今日のお話の範囲

BookLiveにおけるAWSの利用範囲

3

導入の検討と経営層へのアピール

何故Redshiftを使おうと思ったか

4

DWHの必要性と課題の解決方法

DWHの構築とパーソナライズ実装

5

AWSへの印象や苦労したこと

プロジェクトを進めた結果

6

今後の展望

最後に

(39)

パーソナライズ(Redshift利用)領域はさらに拡大しています

push通知でのレコメンド

メールでのレコメンド

ユーザー作成リストでの

レコメンド

6.最後に ~今後の展開①~

ユーザーの購入傾向を元に

したレコメンド

(40)

新しいマネージドサービスもどんどん利用する予定です

6.最後に ~今後の展開②~

7月から利用開始予定 6月から利用開始予定

Amazon EMR

Amazon Inspector

Amazon Aurora

AWS Lambda

(41)

BookLiveでは

エンジニアの技術力向上の一環として

他社との技術交流会(勉強会)も行っています。

エンジニアの皆様、興味があればぜひご連絡ください!

6.最後に

(42)

ご清聴ありがとうございました

https://booklive.jp/

参照

関連したドキュメント

 その後、徐々に「均等範囲 (range of equivalents) 」という表現をクレーム解釈の 基準として使用する判例が現れるようになり

・会場の音響映像システムにはⒸの Zoom 配信用 PC で接続します。Ⓓの代表 者/Zoom オペレーター用持ち込み PC で

(出典)

サーバー費用は、Amazon Web Services, Inc.が提供しているAmazon Web Servicesのサーバー利用料とな

システムの許容範囲を超えた気海象 許容範囲内外の判定システム システムの不具合による自動運航の継続不可 システムの予備の搭載 船陸間通信の信頼性低下

利用している暖房機器について今冬の使用開始月と使用終了月(見込) 、今冬の使用日 数(見込)

理由:ボイラー MCR範囲内の 定格出力超過出 力は技術評価に て問題なしと確 認 済 み で あ る が、複数の火力

現状では、3次元CAD等を利用して機器配置設計・配 管設計を行い、床面のコンクリート打設時期までにファ