Comments
Description
Transcript
タウンワークにおける サーバーレスアーキテクチャデザイン
タウンワークにおける サーバーレスアーキテクチャデザイン 株式会社リクルートジョブズ 商品本部 デジタルマーケティング室 マーケティング部 データマネジメントグループ 木田 茂穂 作野 浩之 (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