Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS...
Search
Recruit
PRO
December 10, 2024
Technology
3
420
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
2024/09/26に、AWS Innovate - Migrate. Modernize. Build.カンファレンスで発表した、青木の資料です。
Recruit
PRO
December 10, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
デザイン初め新年会2025_川端_PdM Days2025
recruitengineers
PRO
0
19
Azure Functions HTTPトリガーにおけるタイムアウトでハマったこと
recruitengineers
PRO
2
280
実務につなげる数理最適化
recruitengineers
PRO
7
880
うちにも入れたいDatadog
recruitengineers
PRO
2
1k
Splunk Enterpriseで S3のデータを直接検索してみた!
recruitengineers
PRO
2
220
Looker APIを使い倒す ユーザーフィードバックを基にした継続的改善サイクル
recruitengineers
PRO
3
72
Kaggleふりかえり会〜LLM 20 Questions & ISIC 2024
recruitengineers
PRO
2
280
Balancing Revenue Goals and Off-Policy Evaluation Performance in Coupon Allocation
recruitengineers
PRO
2
54
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
440
Other Decks in Technology
See All in Technology
The future we create with our own MVV
matsukurou
0
960
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
240
プロダクト組織で取り組むアドベントカレンダー/Advent Calendar in Product Teams
mixplace
0
640
クレカ・銀行連携機能における “状態”との向き合い方 / SmartBank Engineer LT Event
smartbank
3
130
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
820
20240513 - 框裡框外_文學院學生如何在AI世代安身立命 @ 淡江大學
dpys
0
600
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
560
信頼されるためにやったこと、 やらなかったこと。/What we did to be trusted, What we did not do.
bitkey
PRO
0
1.1k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
25
6.9k
NOT VALIDな検査制約 / check constraint that is not valid
yahonda
1
100
Storage Browser for Amazon S3
miu_crescent
1
340
Evolving Architecture
rainerhahnekamp
2
150
Featured
See All Featured
It's Worth the Effort
3n
183
28k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Gamification - CAS2011
davidbonilla
80
5.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Making the Leap to Tech Lead
cromwellryan
133
9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Building an army of robots
kneath
302
44k
Statistics for Hackers
jakevdp
796
220k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
850
Transcript
© Recruit Co., Ltd. All Rights Reserved リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える
AWS 活用とプラットフォームエンジニアリング 1 株式会社リクルート データ推進室 データプロダクトエンジニアリング2G 青木 悠 2024/09/26
© Recruit Co., Ltd. All Rights Reserved 自己紹介 2 -
所属 - 株式会社リクルート データ推進室 データプロダクトエンジニアリング2G データエンジニア - 経歴 - 2022.4 株式会社リクルート 新卒入社 入社以来、データ基盤 Crois の開発を担当 - 趣味 - バイク・写真・旅・サックス 青木 悠 Haruka AOKI
© Recruit Co., Ltd. All Rights Reserved アジェンダ 1. イントロダクション
1.1. リクルートについて 1.2. データ基盤 Crois とその成長 2. スケーラブルな AWS マネージドサービスの活用 3. プラットフォームエンジニアリングの実践 4. まとめ 3
© Recruit Co., Ltd. All Rights Reserved 株式会社リクルートについて 4 マッチング&ソリューションSBU
HRテクノロジーSBU 人材派遣SBU 国内派遣 海外派遣 選択・意思決定を支援する情報サービスを提供し、 「まだ、ここにない、出会い。より速く、シンプルに、もっと近くに。」を実現する
© Recruit Co., Ltd. All Rights Reserved リクルートのビジネスモデルについて 5 •
リクルートにはユーザーとクライアントという2つのお客様が存在 • 「企業と人(B to C)」 「企業と企業(B to B)」 「人と人(C to C)」のすべての間に立ち、双方にとって最適なマッチン グを図る「場」を提供 ユーザーとクライアントを新しい接点で結び、 「まだ、ここにない、出会い。より速く、シンプルに、もっと近くに。」の場を創造する リクルート マッチングプラットフォーム クライアントとユーザーを結びつける 対価としてクライアントからフィーを受領 ユーザー クライアント
© Recruit Co., Ltd. All Rights Reserved リクルートにおけるデータ活用事例 複数領域でデータ活用施策が実施されており、下記はその一例。 ユーザー向けの施策、クライアント向けの施策など、施策種別も多種多様。
6 機械学習モデル予測値を用いて、新ジャンルの予約数 と配信に伴う利用金額を予測。ギフト券配信の予算の 制約がある中、新ジャンルの利用者数を全てのジャンル において増やす、最適な配信を実現。 『Airレジ オーダー』から定常取得される業務データを 活用することで提供遅れ時間の最小化を実現し、調理 遅れの件数を削減。 プロダクト利用者の 57% が「旅行代理店のような接 客力を感じられた」と回答し、チャット接客の有用性を 実証。 [引用] データ推進室 事例紹介 | 株式会社リクルート キャリア採用特設ページ
© Recruit Co., Ltd. All Rights Reserved 各事業でのデータ利活用と 「横断データプロダクト」 7
各事業 事業 A データ組織 事業 B データ組織 横断データプロダクト Y … … 領 域 横 断 リクルートのデータ組織は、各事業領域に対応する 「領域データ組織」 と、事業や案件を横断 して活用可能なシステム (横断データプロダクト) を提供する 「横断データ組織」 で構成。 データ組織 各事業のデータ利活用へのコミットメント 横断データプロダクト
© Recruit Co., Ltd. All Rights Reserved 多くのデータ利活用施策でバッチ処理 (ML 学習・推論パイプライン、ETL
等) は不可欠 これらのインフラを 各領域データ組織 で構築するのは非効率的… 社外製品 ・ OSS だとカバーできない特殊要件がある… → プラットフォーム (横断データプロダクト) として内製開発 横断データプロダクト Crois とは 8 バッチ処理特化の ワークフローエンジン ・ ジョブスケジューラ Run SQL inference 1 inference 2 x 1000 x 1000 delivery 毎日2時に 実行したい 23時を過ぎたら 強制終了してほしい DB へ接続する ジョブは同時に4個 までにしたい
© Recruit Co., Ltd. All Rights Reserved Crois の主な機能 ⓪
用語紹介 9 ワークフロー タスクの依存関係や入出力、 パラメータなどを定義した テンプレート。 ジョブ ワークフローを実行した もの。 タスク 1つの処理単位で、 1つのコンテナに対応する。 このコンテナイメージは 「モジュール」 と呼ぶ。
© Recruit Co., Ltd. All Rights Reserved Crois の主な機能 ①
モジュール - ひとまとまりの処理を実装し コンテナイメージにしたもの - 汎用性の高い処理は Crois から 公式モジュールとして提供 - 例: データウェアハウスへの クエリや、データ転送 - 自作モジュールの登録も可能 10
© Recruit Co., Ltd. All Rights Reserved - ワークフロー定義は YAML
で記述 - タスク (コンテナ) のフロー制御 (直列、並列、ループ、条件分岐) - パラメータ・入出力ファイルの設定 - コンテナ実行環境のスペック指定 - Slack, Teams, メールでの通知設定 - ファイル添付 - スケジュール実行・オンデマンド実行の 双方に対応 Crois の主な機能 ② ワークフロー 11
© Recruit Co., Ltd. All Rights Reserved - ワークフローを実行したもの -
ダイアグラムで進捗を確認 - コンテナログ・メトリクス閲覧機能 Crois の主な機能 ③ ジョブ 12
© Recruit Co., Ltd. All Rights Reserved Crois がもたらす価値 13
Crois が プラットフォーム として - 汎用的なワークフローエンジン・ジョブスケジューラ機能 - よく使われる処理を再利用可能にした 「公式モジュール」 - スケーラビリティ・セキュリティの確保されたインフラ を提供することで、 各領域データ組織 のデータサイエンティスト・データエンジニア・プランナー がより創造性の高いタスクに注力できる 各事業 事業 A データ組織 事業 B データ組織 … 領 域 横 断 データ組織 横断データプロダクト 開発生産性をブースト
© Recruit Co., Ltd. All Rights Reserved Crois の 5
年間 14 2020 Q1 Q2 Q3 Q4 2021 Q1 Q2 Q3 Q4 2022 Q1 Q2 Q3 Q4 2023 Q1 Q2 Q3 Q4 Q1 2024 ジョブ実行数 重複する機能を持つ 社内基盤の統合・移行 各事業領域での データ利活用の拡大 2019 年にリリース。 多くのデータ利活用施策を支える基盤として、利用が増え続けている 平均 年3倍 会社統合
© Recruit Co., Ltd. All Rights Reserved Crois の運用規模 (2024年7月)
15 17,000+ ジョブ / 日 40,000+ コンテナ実行 / 日 (AWS 外での実行も含めると 70,000+) 700+ プロジェクト 20,000+ ワークフロー 300+ MAU 10+ Crois 開発・運用メンバー 30,000 CPU コアの並列実行 (ピーク時)
© Recruit Co., Ltd. All Rights Reserved Crois はプラットフォームとしてなぜスケールし続けられたのか? 16
プラットフォームの落とし穴 運用がパンク 技術的にスケール できない ユーザに使われなくなる スケーラブルな AWS マネージドサービスの活用 プラットフォームエンジニアリング の実践
© Recruit Co., Ltd. All Rights Reserved アジェンダ 1. イントロダクション
1.1. リクルートについて 1.2. データ基盤 Crois とその成長 2. スケーラブルな AWS マネージドサービスの活用 3. プラットフォームエンジニアリングの実践 4. まとめ 17
© Recruit Co., Ltd. All Rights Reserved 運用開始当初から社内横断で使われることを意識 マネージドサービスを中心に採用したアーキテクチャ 18
[引用] AWS 導入事例:株式会社リクルート 高いスケーラ ビリティ 低い 運用コスト スケーラブルな AWS マネージドサービスの採用
© Recruit Co., Ltd. All Rights Reserved ワークフロー実行: AWS Step
Functions ワークフローは AWS Step Functions の ステートマシンに変換され、実行を全て委譲。 入出力の受け渡し、エラーハンドリングなどの 独自処理をコンテナ実行の前後に付与している。 17,000 ジョブ / 日の実行をほぼ運用コスト なしに実現。 19 AWS Step Functions workflow tasks: - name: task-1 module: debug_sleep
© Recruit Co., Ltd. All Rights Reserved コンテナ実行基盤: AWS Batch,
Amazon ECS on AWS Fargate AWS Batch (on Amazon ECS, Amazon EC2) - 大きな計算資源 ・ GPU が必要なコンテナ実行 - ML の学習・推論など - m6i.8xlarge x 700台 のような大規模な実行も容易 20 Amazon ECS on AWS Fargate - 比較的軽量なコンテナ実行 - DB へのクエリ実行や外部 API コールなど - Amazon EC2 より起動が高速 インフラを管理する必要なく、 40,000 コンテナ / 日 を安定して処理 AWS Batch AWS Fargate
© Recruit Co., Ltd. All Rights Reserved ジョブ・タスクの状態管理: Amazon DynamoDB,
Amazon EventBridge, AWS Lambda ジョブ・タスクの状態は Amazon DynamoDB で管理している。 イベント駆動アーキテクチャは障害に強く、スケールも容易。 21 AWS Step Functions AWS Batch Amazon ECS Amazon EventBridge AWS Lambda Amazon DynamoDB status change event invoke update
© Recruit Co., Ltd. All Rights Reserved タスク並列度制御: AWS Step
Functions, Amazon DynamoDB, AWS Lambda 22 マネージドサービス単体では実現できない機能も組み合わせで実現。 AWS Step Functions workflow AWS Lambda Amazon DynamoDB invoke (sync.) check status & update runnable? AWS Step Functions から AWS Lambda 関数を呼び出し、Amazon DynamoDB にクエリして タスクが実行可能か判定する。実行不可能であれば一定時間待機し、もう一度 Lambda 関数を呼び出す。 複数ワークフローのタスク群に対し、同時に実行できるタスク数を制限する機能
© Recruit Co., Ltd. All Rights Reserved 4年間で マネージドサービスの強み 23
運用がパンク 技術的にスケール できない ユーザに使われなくなる スケーラブルな AWS マネージドサービスの活用 プラットフォームエンジニアリング の実践 高いスケーラビリティ 低い運用コスト 100倍 ジョブ数 2倍 Crois 開発・運用メンバー数
© Recruit Co., Ltd. All Rights Reserved アジェンダ 1. イントロダクション
1.1. リクルートについて 1.2. データ基盤 Crois とその成長 2. スケーラブルな AWS マネージドサービスの活用 3. プラットフォームエンジニアリングの実践 4. まとめ 24
© Recruit Co., Ltd. All Rights Reserved プラットフォームエンジニアリングの実践 25 各事業
事業 A データ組織 事業 B データ組織 横断データプロダクト Y … … 領 域 横 断 データ組織 横断データプロダクト リクルートのデータ組織における 「領域データ組織」 と 「横断データ組織」 の関係は、チーム トポロジーの 「ストリームアラインドチーム」 と 「プラットフォームチーム」 と言える関係性。 [参考] チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計 (マシュー・スケルトン 他) https://pub.jmam.co.jp/book/b593881.html
© Recruit Co., Ltd. All Rights Reserved プラットフォームエンジニアリングの実践 26 各事業
ストリームアラインドチーム ストリームアラインドチーム プラットフォームチーム … … 領 域 横 断 データ組織 プラットフォームチーム XaaS XaaS XaaS リクルートのデータ組織における 「領域データ組織」 と 「横断データ組織」 の関係は、チーム トポロジーの 「ストリームアラインドチーム」 と 「プラットフォームチーム」 と言える関係性。 プロダクトとして安定した能力・ サービスの提供 [参考] チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計 (マシュー・スケルトン 他) https://pub.jmam.co.jp/book/b593881.html
© Recruit Co., Ltd. All Rights Reserved XaaS モードを基本とした価値提供 -
XaaS (X-as-a-Service) モード - チーム間に明確な境界 (インタフェース) を置く - 共有するコンテキストが減るため、両チームにとって認知負荷が低い - ストリームアラインドチームは独立して高速にデリバリー可能 - プラットフォームチームは開発者体験がよいサービスの持続的提供に責任を持つ 27 ストリーム アラインド チーム プラット フォーム チーム 機能要望 問い合わせ ドキュメント 広報 API サービス利用 サービス提供 SLO
© Recruit Co., Ltd. All Rights Reserved XaaS モードを基本とした価値提供 -
XaaS (X-as-a-Service) モード - チーム間に明確な境界 (インタフェース) を置く - 共有するコンテキストが減るため、両チームにとって認知負荷が低い - ストリームアラインドチームは独立して高速にデリバリー可能 - プラットフォームチームは開発者体験がよいサービスの持続的提供に責任を持つ 28 ストリーム アラインド チーム プラット フォーム チーム 機能要望 問い合わせ ドキュメント 広報 API サービス利用 サービス提供 機能要望・問い合わせ フォーム ドキュメント 広報
© Recruit Co., Ltd. All Rights Reserved プラットフォームエンジニアリングの実践 プラットフォームとして XaaS
モードを中心とした能力提供を行ってきた中で、 特に意識してきたことは以下の2点。 29 セルフサービスな開発体験の徹底 動的に変化するインタラクションモード
© Recruit Co., Ltd. All Rights Reserved セルフサービスな開発体験の徹底 プラットフォームと利用者の関係で陥りがちなアンチパターン -
プラットフォームチームに “依頼” 例えば… - ワークフロー設定変更を依頼 - モジュールデプロイを依頼 → 利用増加に比例して運用コストが高まり、スケールしない ストリームアラインドチームの開発速度を阻害してしまう プラットフォームの改善に時間を使えず、価値提供ができなくなる 30 ストリーム アラインド チーム プラット フォーム チーム ストリーム アラインド チーム ストリーム アラインド チーム
© Recruit Co., Ltd. All Rights Reserved セルフサービスな開発体験の徹底 ① サービスへのインタフェース
31 ライトユーザーからコアユーザーまで 利用者のニーズに合ったセルフサービス機能 Web UI Web API IaC ツール 多くのユーザが使う基本機能 システムの一部として Crois を利用 したいユーザ向け Crois をラップして提供する他の プラットフォーム向け ワークフローの設定等をコードで 宣言的に管理したいユーザ向け
© Recruit Co., Ltd. All Rights Reserved セルフサービスな開発体験の徹底 ② モジュール
32 ライトユーザーからコアユーザーまで 利用者のニーズに合ったセルフサービス機能 公式モジュール 独自モジュール よく使われる処理は公式モジュールとして提供。 ユーザはコードを一から開発することなく、定義されたパラメータを 指定するだけで利用可能。 カスタマイズされた処理が必要な場合はユーザで 独自にモジュールを開発可能。 モジュールが実装すべき入出力仕様はドキュメン トで公開。
© Recruit Co., Ltd. All Rights Reserved セルフサービスな開発体験の徹底 ③ オブザーバビリティ
33 ライトユーザーからコアユーザーまで 利用者のニーズに合ったセルフサービス機能 ログ メトリクス コスト Amazon CloudWatch Logs と 連携し、コンテナログをユーザに提示。 Amazon CloudWatch Metrics と連携し、コンテナメトリクスをユーザ に提示。 AWS Cost Explorer と連携し、 プロジェクトごとのコストを可視化。
© Recruit Co., Ltd. All Rights Reserved セルフサービスで利用できることで、 - 利用増に対し運用コストが上がらない
- ストリームアラインドチームは独立して素早いデリバリーが可能 - プラットフォームチームはプラットフォームの改善に取り組める ただし、全てを最初からセルフサービスとして提供できていたわけではない (何が求められているか不明瞭な時点では、その必要もない) - ユーザのニーズ - プラットフォームチームの運用負荷 の変化を注視し、提供の仕方を都度見直している セルフサービスな開発体験の徹底 34
© Recruit Co., Ltd. All Rights Reserved プラットフォームエンジニアリングの実践 プラットフォームとして XaaS
モードを中心とした能力提供を行ってきた中で、 特に意識してきたことは以下の2点。 35 セルフサービスな開発体験の徹底 動的に変化するインタラクションモード
© Recruit Co., Ltd. All Rights Reserved 動的に変化するインタラクションモード XaaS モードの責任境界は認知負荷を下げるために重要。
しかし XaaS モードを続けていると、ユーザとの距離が離れすぎてしまい、 「ユーザを知らない」 「使われない機能を作ってしまう」 といった課題が生じる 36 ストリーム アラインド チーム プラット フォーム チーム
© Recruit Co., Ltd. All Rights Reserved 動的に変化するインタラクションモード ① 個別最適フェーズ:
コラボレーションモード によるニーズのキャッチアップ - 不確実性の高い案件フェーズ (例: 社内基盤の Crois への移行) - 大規模利用ユーザ といったケースでは特に密接なコラボレーションを行い、要望の解像度を上げる 37 個別最適と全体最適のループ ストリーム アラインド チーム プラット フォーム チーム 定期ミーティング 人材の兼務 プロトタイプ提供 フィードバック コードレビュー
© Recruit Co., Ltd. All Rights Reserved ② 全体最適フェーズ: 個別最適で培った能力を全体の当たり前水準へ
コラボレーションモードでキャッチアップしたニーズを 汎用化して プラットフォーム に実装。全ユーザにとって利益がある方法での能力提供を行う。 動的に変化するインタラクションモード 38 個別最適と全体最適のループ ストリームアラインド チーム プラットフォームチーム XaaS コラボ ストリームアラインド チーム ストリームアラインド チーム プラットフォームチーム XaaS ストリームアラインド チーム XaaS 全体最適 個別最適
© Recruit Co., Ltd. All Rights Reserved 特定ユーザのコスト削減ニーズに対応すべく開発。 最小限の実装を行ったのち、ユーザと Crois
チーム メンバーが共同でモジュールの ARM 対応を行い実 現可能性の検証に取り組んだ。 現在は汎用的に利用できるようにコンピューティン グ環境のラインナップを整備し、全ユーザに向け提 供している。 動的に変化するインタラクションモード 39 個別最適と全体最適のループ 例: AWS Graviton での実行機能の提供 例: ワークフローエンジンの大規模移行 ある社内データ基盤で利用していたワークフローエ ンジンの Crois 移行においては、5000 ワークフ ロー以上の移行と機能追加が必要に。 約2年に渡ってコラボレーションに取り組み、必要な 要件を洗い出し、サービス境界を定義。 ワークフロー制御機能・通知機能を中心に、汎用的な 機能として実装し、他領域でも広く使われている。 → 「使われなくなるプラットフォーム」 を回避し、 ユーザのニーズに合致した機能を継続的に提供
© Recruit Co., Ltd. All Rights Reserved 持続的な価値提供のために 40 何をプラットフォームに実装するか?
を都度議論することは大前提。 ニーズが明らかになった場合でも、それを実装すべきでないと判断される場合は - ストリームアラインドチーム側に要件の一部分を実装する - プラットフォームプロダクトを採用しない ことを提案することもある。 プラットフォームチームのミッションはプラットフォームを使ってもらうことではなく、 事業領域の生産性を最大化すること。
© Recruit Co., Ltd. All Rights Reserved Crois はプラットフォームとしてなぜスケールし続けられたのか? 41
運用がパンク 技術的にスケール できない ユーザに使われなくなる 高いスケーラビリティ 低い運用コスト セルフサービスな 開発経験の徹底 動的に変化する インタラクションモード スケーラブルな AWS マネージドサービスの活用 プラットフォームエンジニアリング の実践
© Recruit Co., Ltd. All Rights Reserved Crois はプラットフォームとしてなぜスケールし続けられたのか? 42
運用がパンク 技術的にスケール できない ユーザに使われなくなる 高いスケーラビリティ 低い運用コスト セルフサービスな 開発経験の徹底 動的に変化する インタラクションモード スケーラブルな AWS マネージドサービスの活用 プラットフォームエンジニアリング の実践 指数的成長 ・ 継続的価値提供
© Recruit Co., Ltd. All Rights Reserved アジェンダ 1. イントロダクション
1.1. リクルートについて 1.2. データ基盤 Crois とその成長 2. スケーラブルな AWS マネージドサービスの活用 3. プラットフォームエンジニアリングの実践 4. まとめ 43
© Recruit Co., Ltd. All Rights Reserved Crois がリクルートの大規模なデータ利活用を支える基盤としてスケールし続け、 事業領域データ組織の生産性向上に寄与できている要因は以下の2点。
まとめ 44 スケーラブルな AWS マネージドサービスの活用 プラットフォームエンジニアリング の実践 - 高いスケーラビリティ - 低い運用コスト - セルフサービスな開発経験の徹底 - 動的に変化するインタラクションモード - デバッガビリティを高めるためのインフラログ連携 - コスト状況のテーブル連携 など、今後も改善を計画