スキル偏差値の計算を Cloud Run jobs を使って高速化
ファインディ株式会社 / hiracky16
チームリーダー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|
10名以下 | 2024年12月 | B to C |
ツールの利用規模 | 10名以下 |
---|---|
ツールの利用開始時期 | 2024年12月 |
事業形態 | B to C |
アーキテクチャ
.png?disposition=inline)
アーキテクチャの意図・工夫
餅は餅屋がテーマで、スキル偏差値の計算以外の機能はそれぞれ得意な製品に任せることにしました。 そうすることでスキル偏差値に使っている Cloud Run のインターフェースをシンプルに保つことができ、並列化が容易になります。 オーケストレートツールに Cloud Workflows を用いているので Cloud Run 以外の Google Cloud 製品も比較的呼び出しやすいです。
また言語追加が今後予定されていたので、追加されても使い回せるインフラにする必要がありました。 追加の際は Cloud Scheduler のジョブを追加するだけで済む構成にしており、ジョブ起動時に計算する言語の種別を Cloud Workflows に引数として渡す構成にしています。
導入の背景・解決したかった問題
導入背景
スキル偏差値のリニューアルに伴い、アーキテクチャの見直しも実施
スキル偏差値のリニューアルの経緯に関しては以下のブログをお読みください。
GitHubからエンジニアスキルを可視化する「スキル偏差値」を大幅リニューアルした話
Findy にご登録いただいている 10 万人を超えるユーザーのスキル偏差値を計算する際、既存の方法では数日を要し、時間的にもコスト的にも非効率であるという課題がありました。
どのような状態を目指していたか
最長でも 1 日以内に計算を完了させ、GitHub 上のアクティビティを即座にスキル偏差値に反映することで、ユーザーに納得感と信頼性を提供したいと考えていました。
比較検討したサービス
- Cloud Composer
- Cloud Functions(現 Cloud Run Functions)
- Vertex AI Pipeline
比較した軸
- 計算速度
- 1 日以内に計算時間を抑える必要がある
- 料金と運用にかかるコスト
- 計算リソースにかかる金額をなるべく抑えたい
- 運用にかかるコスト(例えばスキル偏差値の再計算時のオペレーションなど)を最小限にしたい
選定理由
- コスト効率の良さ
- 前提として計算時間は対象となるプログラミング言語やユーザーによって大きく変動
- 従量課金制はコスト効率の面で非常に魅力的
- インターフェースの柔軟さ
- Cloud Run jobs はエントリーポイントと引数を分けることができるため開発時の Docker のインターフェースを使用することが可能
- 後の説明に出てくる並列化のために引数を柔軟に調整できる
導入の成果
改善したかった課題はどれくらい解決されたか
目標としていた計算時間も 1 日未満に短縮することができた またコストも想定通りで、算出のために使ったサイトがわかりやすかった
https://cloud.google.com/products/calculator?hl=ja
どのような成果が得られたか
GitHub 上のアウトプットに対してスキル偏差値へ即時に反映することで納得感を得られることに成功 ユーザーごとに実行する形なのでエラーが起きた際のエラー対応を最小限に抑えることができた
導入時の苦労・悩み
Cloud Run jobs は起動するまでの時間(VM やコンテナ起動までの時間)を考慮していなかったため試算より時間がかかるという問題がありました。 またオーケストレートするツールとして Cloud Workflows を用いたが、同時最大実行ステップ数などの制約が未考慮でした。
https://cloud.google.com/workflows/quotas?hl=ja#parallel_steps
これらを考慮して、1 回の Cloud Run の実行で直列で計算したり、Workflows で同時実行する Cloud Run の数を調節し、それらを直列に実行することで最短で最適化しました。
導入に向けた社内への説明
上長・チームへの説明
計算時間が 1 日以内という制約以外は特にありませんでした。 事前に料金感は試算することでアーキテクチャや技術選定については納得してもらいました。
活用方法
定期的にバッチ実行しています。 エラーが起きたら関係者が必要に応じて GUI, CLI を用いて再実行できるようにしています。
よく使う機能
マニュアル実行はよく使います。 計算に失敗してしまった際にコンソール上から引数を上書きしてスポットで実行することでリカバリしています。
ツールの良い点
- 従量課金制でコスパがいい
- 前は引数が固定だったが今は上書きできるようになっため柔軟性が上がった
- Docker で開発している場合スムーズにデプロイできるので体験が良い
ツールの課題点
- 特になし
今後の展望
- コンテナ起動に時間がかかっているのでイメージのサイズを最適化したい
ファインディ株式会社 / hiracky16
チームリーダー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
よく見られているレビュー
ファインディ株式会社 / hiracky16
チームリーダー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法