タウンワークにおける サーバーレスアーキテクチャデザイン

タウンワークにおける
サーバーレスアーキテクチャデザイン
株式会社リクルートジョブズ
商品本部
デジタルマーケティング室
マーケティング部
データマネジメントグループ
木田 茂穂
作野 浩之
(C)Recruit Jobs Co., Ltd. All rights reserved
株式会社リクルートジョブズ
商品本部
デジタルマーケティング室マーケティング部
データマネジメントグループ
メーカー系Sierを経て
2011年 中途入社
顧客向けシステムのエンハンスを経て
2012年よりデータ関連に従事
木田 茂穂
(C)Recruit Jobs Co., Ltd. All rights reserved
1
Agenda
1. Introduction
2. About CTL and our project
3. Our sort system with AWS
4. Reduction of infrastructure management costs
5. Future work
(C)Recruit Jobs Co., Ltd. All rights reserved
2
Agenda
1. Introduction
2. About CTL and our project
3. Our sort system with AWS
4. Reduction of infrastructure management costs
5. Future work
(C)Recruit Jobs Co., Ltd. All rights reserved
3
About CTL
データサイエンス
エンジニアリング
インフラ
先進的なテクノロジーや理論をスピーディに事業装着するため
数理モデル作成、アプリ実装、インフラ実装までを
データサイエンティストが遂行するプロジェクト型組織
(C)Recruit Jobs Co., Ltd. All rights reserved
4
Real-timeなユーザの嗜好抽出を行う事でコールドスタート問題を解決
●事業特性
求人 :週次で入れ替わる
求職者:一度応募したら離脱
レーティング、CV情報を
使ったECなどで利用される
一般的な予測システム
回遊する度にユーザの
嗜好を抽出するリアルタイムな
予測システム
データが蓄積される事なく、
アイテムとユーザが
入れ替わるため、
満足な予測ができない
回遊する度に
特徴量が更新されるため、
アイテムとユーザが入れ替わる
前にデータが蓄積され、
満足な予測ができる
(C)Recruit Jobs Co., Ltd. All rights reserved
5
Real-time Personalized Sort の 枠組み
回遊時にカスタマーの行動を元にリアルタイムに嗜好を拾う。
検索時に嗜好を元に求人情報の並び替えを行う。
特徴量
keep数
PV数
回遊
・求人ごとに応募確率を予測
・並び替え
検索
求人A : 10%
求人B : 8%
求人C : 5%
(C)Recruit Jobs Co., Ltd. All rights reserved
6
リアルタイムな予測を実現するためのシステム要件は大量にあった
- 検索時にダウンタイムを発生させない予測基盤
- 時間帯によって大きく変動するアクティブユーザーを
考慮したスケーラビリティの担保
- 回遊時のログを損失なく取得するログ基盤
- ストリームデータをごく短時間で処理する予測基盤
- ストリームデータから逐次的な特徴の生成を可能にする
機械学習ロジックの作成
(C)Recruit Jobs Co., Ltd. All rights reserved
7
一方で、CTLのメンバー
6
data
scientists
(C)Recruit Jobs Co., Ltd. All rights reserved
8
このシステムを作る上で最も考慮したポイント
各種要件は満たしつつも、
可能な限りインフラの運用コストを下げて、
データサイエンティストが機械学習ロジックに集中できる環境
を作る事
(C)Recruit Jobs Co., Ltd. All rights reserved
9
運用コストを下げるために、積極的にフルマネージドサービスを活用
幅広い用途のサービスを提供し、
導入事例、文献が多いフルマネージドサービスを
展開しているAWSを採用した
(C)Recruit Jobs Co., Ltd. All rights reserved
10
株式会社リクルートジョブズ
商品本部
デジタルマーケティング室マーケティング部
データマネジメントグループ
2015年 新卒入社
入社以降、一貫してサイト内検索の改善に従事。
バックグラウンド:データサイエンス
今回のプロジェクトでは、インフラの設計、構築
を担当。
さくの
ひろゆき
作野 浩之
(C)Recruit Jobs Co., Ltd. All rights reserved
11
Agenda
1. Introduction
2. About CTL and our project
3. Our sort system with AWS
4. Reduction of infrastructure management costs
5. Future work
(C)Recruit Jobs Co., Ltd. All rights reserved
12
リアルタイムな予測を実現するためのシステム要件
- ログ基盤の整備
- 特徴量更新、予測の高速な処理
(C)Recruit Jobs Co., Ltd. All rights reserved
13
リアルタイムな予測を実現するためのシステム要件
- ログ基盤の整備
- 特徴量更新、予測の高速な処理
(C)Recruit Jobs Co., Ltd. All rights reserved
14
ログ基盤の整備
●ログ基盤に求められる要件
- ログを損失なく溜める
- ログを多用途に使用できる
Log data
Stream data processing
回遊時に特徴量を更新
f (x)
keep数
PV数
Batch data processing
溜まったログから予測モデル作成
(C)Recruit Jobs Co., Ltd. All rights reserved
15
KinesisとLambdaを使用して、ログ基盤を構築
Amazon Kinesis
AWS Lambda
(C)Recruit Jobs Co., Ltd. All rights reserved
16
ログ基盤の構成
Stream data processing
回遊時に特徴量を更新
Log data
Api Gateway
Lambda
Kinesis
Lambda
ELB
特徴量計算
サーバ
keep数
PV数
Batch data processing
溜まったログから予測モデル作成
Lambda
●要件
- ログを損失なく溜める
- ログを多用途に使用できる
S3
EMR
ユーザー毎に
分割したログ
モデリング
サーバ
Kinesisを使用し、耐障害性の高い
ログ収集パイプラインを構築し実現
ログ処理タイミング別にLambdaを
使用し実現
(C)Recruit Jobs Co., Ltd. All rights reserved
17
リアルタイムな予測を実現するためのシステム要件
- ログ基盤の整備
- 特徴量更新、予測の高速な処理
(C)Recruit Jobs Co., Ltd. All rights reserved
18
特徴量の更新、予測の高速な処理の鍵を握るのはDBの選定
DBの要件:
・高速な読み書きに対応
・特徴量の変更に柔軟である
・AWSの他サービスとの親和性が高い
・管理コストを抑えられる
Amazon
RedShift
Amazon
RDS
Amazon
DynamoDB
Amazon
ElastiCache
(C)Recruit
Jobs
Co.,
Ltd.All
Allrights
rights reserved
(C)Recruit
Jobs
Co.,
Ltd.
reserved
19
特徴量の更新、予測の高速な処理の鍵を握るのはDBの選定
DBの要件:
・高速な読み書きに対応
・特徴量の変更に柔軟である
・AWSの他サービスとの親和性が高い
・管理コストを抑えられる
Amazon
RedShift
Amazon
RDS
Amazon
DynamoDB
Amazon
ElastiCache
(C)Recruit
Jobs
Co.,
Ltd.All
Allrights
rights reserved
(C)Recruit
Jobs
Co.,
Ltd.
reserved
20
NoSQLサーバを自前で運用していくか?
自前で運用する場合
- データ量が増加する場面でハードウェア負荷や検索性能劣化の問題に直面しがち
- サーバの監視の仕組みを考える、障害発生時の対応に追われる、シャーディングを考える
など本質的ではない事に時間をかけなければならない
(C)Recruit
Jobs
Co.,
Ltd.All
Allrights
rights reserved
(C)Recruit
Jobs
Co.,
Ltd.
reserved
21
最終的に DynamoDB, ElastiCache を選定
Amazon
DynamoDB
Amazon
ElastiCache
・分散KVSのため高速なスループットを実現
・スキーマの定義が不要(特徴量の変更に対して柔軟)
・AWSの他サービスとの親和性が高い
・(そして何より)フルマネージドサービス
(C)Recruit
Jobs
Co.,
Ltd.All
Allrights
rights reserved
(C)Recruit
Jobs
Co.,
Ltd.
reserved
22
最終的に出来上がったシステム構成
検索
TownWork API
特徴量計算&予測
Result list
Read &
Write
回遊
ElastiCache
ECS instance
Read &
Write
ELB
Feature Store
ECS instance
DynamoDB
ECS instance
Logger
Batch jobs
Auto Scaling group
Data pipeline
API gateway
Lambda
Kinesis
Log Store
Lambda
EC2 Container
Service
Lambda
S3
Lambda
(C)Recruit Jobs Co., Ltd. All rights reserved
23
Agenda
1. Introduction
2. About CTL and our project
3. Our sort system with AWS
4. Reduction of infrastructure management costs
5. Future work
(C)Recruit Jobs Co., Ltd. All rights reserved
24
管理コスト削減の為のサービス選定
AWS CloudFormation
(C)Recruit Jobs Co., Ltd. All rights reserved
AWS Lambda
25
管理コスト削減の為のサービス選定
AWS CloudFormation
(C)Recruit Jobs Co., Ltd. All rights reserved
AWS Lambda
26
今回のプロジェクトにおいて、特徴量の追加は重要だが...
今回使用した機械学習の手法の性質:特徴量を大量に追加し予測精度を上げる
新特徴量
特徴量
userid
PV数
Keep数
1
25
3
特徴量計算&予測
Result list
Feature Store
訪問回
数
特徴量
ElastiCache
ECS instance
ECS instance
userid
PV数
Keep数
1
25
3
DynamoDB
ECS instance
Auto Scaling group
特徴量の不整合が発生
=> エラー
(C)Recruit Jobs Co., Ltd. All rights reserved
27
特徴の更新は様々なリソースが影響を受ける(アプリケーションとDBが密に結合)
Customer
検索
TownWork API
特徴計算&予測
Result list
Read &
Write
回遊
ElastiCache
ECS instance
Read &
Write
ELB
影響リソース
ECS instance
DynamoDB
ECS instance
Logger
Feature Store
Batch jobs
Auto Scaling group
Data pipeline
API gateway
Lambda
Kinesis
Lambda
Log Store
EC2 Container
Service
Lambda
S3
Lambda
(C)Recruit Jobs Co., Ltd. All rights reserved
28
Blue-Green Deploymentに着目
Blue-Green Deployment
新環境
旧環境
- サーバの状態を変更しない事でダウンタイムのないデプロイを実現する
- 新環境で問題が発生した時は旧環境へロールバックできる
今回の場合、DBも含めた大量のリソースの作成が必要
(C)Recruit Jobs Co., Ltd. All rights reserved
29
オーケストレーションサービスのCloudFormationを導入
(C)Recruit Jobs Co., Ltd. All rights reserved
30
CloudFormationの特徴
CloudFormation : オーケストレーションサービス
・jsonでAWSのリソースを管理 => Infrastructure as a Code
・テンプレートを使ったリソース作成 => 容易にインフラのコピーを作成できる
・ロールバック機能が優秀 => リソース作成失敗時にゴミが残らない
(C)Recruit Jobs Co., Ltd. All rights reserved
31
CloudFormationをラップするスクリプトを作成してデプロイを自動化
S3
json
1, Create stack
特徴量計算&予測
CloudFormation
ECS instance
Result list
ElastiCache
Feature Store
ECS instance
Scrip
t
2, Swap
Auto Scaling Group
DynamoDB
ECS instance
Auto Scaling group
新環境
Elastic Load
Balancing
(C)Recruit Jobs Co., Ltd. All rights reserved
旧環境
32
管理コスト削減の為のサービス選定
AWS CloudFormation
(C)Recruit Jobs Co., Ltd. All rights reserved
AWS Lambda
33
Lambdaの特徴
Lambda : イベントドリブン型アプリ実行基盤
・サーバレス => 運用が圧倒的に楽
・勝手にスケールしてくれる => 運用が圧倒的に楽
・イベントドリブンな実行環境 => サービス間の連携が容易
・Scheduled eventに対応 => 細々としたバッチを実装できる
(C)Recruit Jobs Co., Ltd. All rights reserved
34
今回のプロジェクトでは積極的にLambdaを利用
Lambdaがなかったら
この規模のシステムをごく短期間でリリースする事は
不可能だったと言える
(C)Recruit Jobs Co., Ltd. All rights reserved
35
CTLにおけるLambdaの利用例
Case1, ストリームデータ処理
Case2, バッチジョブ
Case3, インテグレーション
(C)Recruit Jobs Co., Ltd. All rights reserved
36
Case1, ストリームデータ処理
Kinesis to ELB
Kinesisに新しくログデータが
溜まった際に、
すぐに特徴計算サーバへ送る
API Gateway to Kinesis
API Gatewayの
エンドポイントへ飛んできた
ログデータをKinesisに保存
Stream data
processing
Log data
Api Gateway
Lambda
Kinesis
Lambda
ELB
Batch data
processing
Kinesis to S3
ログデータの永続化は
1ログ毎に行う必要はないので、
ある程度Kinesisにデータが
溜まったタイミングで実行
Lambda
(C)Recruit Jobs Co., Ltd. All rights reserved
S3
特徴計算
サーバ
EMR
37
Case2, バッチジョブ
DynamoDBは日付を指定してパージする事ができない
=>データが溜まり過ぎる事を防ぐために、
ユーザの特徴を格納するテーブルを週ごとに作成
最低capacityで
create table
drop table
capacity
下げる
capacity
上げる
2016/5/1
(来週使用するテーブル)
2016/4/24
(今週使用するテーブル)
2016/4/17
(先週使用したテーブル)
2016/4/10
(過去のテーブル)
わざわざcronでやるか?といった細々とした
バッチジョブをscheduled eventで実行
(C)Recruit Jobs Co., Ltd. All rights reserved
38
Case3, インテグレーション
異常発生時の通知先 : Eメールアドレス
Slack
他のコミュニケーションに紛れる
可能性が高い
他のコミュニケーションに紛れる
可能性が低い
Lambda + Slack
通知は全てSlackに飛ばす
=>メンバー全員が異常検知ができる状態に
(C)Recruit Jobs Co., Ltd. All rights reserved
39
Case3, インテグレーション
Lambda + Slack 連携
異常検知
モニタリング対象
サービス
Email
Kinesis
CloudWatch
DynamoDB
監視
Lambda
SNS
異常が発生したら
SNSトピック発行
Event Sourcesに
該当の
SNSトピックを指定
Slack
Slackの
指定チャンネルに
通知を送る
異常検知のスピードを早める事で、
何か問題が発生した時に即座に対応できる
(C)Recruit Jobs Co., Ltd. All rights reserved
40
Case3, インテグレーション
Lambda + Slack 連携
使用料金がバーストする事を防ぐ
Lambda
Scheduled event
請求レポートから
今月の使用料金を計算
Slack
Slackの
指定チャンネルに
通知を送る
使用料金が異常な動きを見せた場合、
即座に対応する事で使用料金がバーストする事を防ぐ
(C)Recruit Jobs Co., Ltd. All rights reserved
41
管理コスト削減の為のサービス選定
AWS CloudFormation
(C)Recruit Jobs Co., Ltd. All rights reserved
AWS Lambda
42
Summary of this session
インフラ管理経験がないデータサイエンティスト6名が
設計から3ヶ月程度でリアルタイム予測基盤を作って
リリースする事ができた。
AWSのフルマネージドサービスをうまく適材適所で
使ったからこそ実現できた。
フルマネージドサービスを積極的に活用する事で、
本当に大事な部分、ユーザにとっての検索体験の向上
に注力する事ができた。
(C)Recruit Jobs Co., Ltd. All rights reserved
43
Agenda
1. Introduction
2. About CTL and our project
3. Our sort system with AWS
4. Reduction of infrastructure management costs
5. Future work
(C)Recruit Jobs Co., Ltd. All rights reserved
44
About CTL
データサイエンス
エンジニアリング
インフラ
先進的なテクノロジーや理論をスピーディに事業装着するため
数理モデル作成、アプリ実装、インフラ実装までを
データサイエンティストが遂行するプロジェクト型組織
(C)Recruit Jobs Co., Ltd. All rights reserved
45
CTLではSortに閉じない様々なデータを活用した施策を実施する
Hit of search
Recommend
Data Analytics
Cost optimization
Natural language
processing
Data visualization
(C)Recruit Jobs Co., Ltd. All rights reserved
46
CTLでの働き方
- 使えるデータは大量にあり、データを使える環境がある
- 新しいサービスを使える
データサイエンティスト & エンジニア
双方が働きやすい環境
(C)Recruit Jobs Co., Ltd. All rights reserved
47
共に働く仲間を募集しています!
(C)Recruit Jobs Co., Ltd. All rights reserved
ご清聴ありがとうございました
(C)Recruit Jobs Co., Ltd. All rights reserved
49