Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
1
220
リクルートのデータ基盤 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
Splunk Enterpriseで S3のデータを直接検索してみた!
recruitengineers
PRO
0
13
Looker APIを使い倒す ユーザーフィードバックを基にした継続的改善サイクル
recruitengineers
PRO
3
47
Kaggleふりかえり会〜LLM 20 Questions & ISIC 2024
recruitengineers
PRO
2
190
Balancing Revenue Goals and Off-Policy Evaluation Performance in Coupon Allocation
recruitengineers
PRO
1
44
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
300
VPC Traffic Mirroring とOSS を利⽤した ネットワークフォレンジック基盤の構築・運⽤
recruitengineers
PRO
2
90
スタサプ ForSCHOOLアプリのシンプルな設計
recruitengineers
PRO
3
1.1k
リクルート流データ基盤塾~鶴谷と学ぶ~
recruitengineers
PRO
5
320
『SUUMO』 スマホサイト デザインリニューアルへの挑戦
recruitengineers
PRO
5
370
Other Decks in Technology
See All in Technology
職能を超えたモブプログラミングが品質に与えた良い影響
tonionagauzzi
1
190
多様なロール経験が導いたエンジニアキャリアのナビゲーション
coconala_engineer
1
160
A/Aテストにおけるサンプルサイズ/japanr2024
nikkei_engineer_recruiting
1
610
ソフトウェアエンジニアとしてキャリアの螺旋を駆け上がる方法 - 経験と出会いが人生を変える / Career-Anchor-Drive
soudai
13
2.9k
How is Cilium Tested?
yutarohayakawa
5
300
アジャイルテストの4象限で考える プロダクト開発の品質への向き合い方
nagano
1
890
コーポレートデータマスター構築への道
kworkdev
PRO
0
130
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
pizzacat83
0
400
My Generation 年配者がこの先生きのこるには (Developers CAREER Boost 2024 Edition)/My Generation How elder engineers can survive
kwappa
3
370
Raspberry Pi 秋の新製品をチェックしてみよう / 20231202-rpi-jam-tokyo
akkiesoft
0
460
プロダクトマネージャーは 事業責任者の夢をみるのか pmconf2024
gimupop
2
8.9k
Amazon Bedrock Multi-Agent Collaboration Workshop の紹介 - ワークショップでAIエージェントを学ぼう
nasuvitz
3
300
Featured
See All Featured
Become a Pro
speakerdeck
PRO
25
5k
Docker and Python
trallard
41
3.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
RailsConf 2023
tenderlove
29
920
KATA
mclloyd
29
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
110
49k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
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 マネージドサービスの活用 プラットフォームエンジニアリング の実践 - 高いスケーラビリティ - 低い運用コスト - セルフサービスな開発経験の徹底 - 動的に変化するインタラクションモード - デバッガビリティを高めるためのインフラログ連携 - コスト状況のテーブル連携 など、今後も改善を計画