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
スケジュールジョブ(CronJob)の実行失敗通知基盤における成功と失敗 / Success ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takayuki Kasai
November 20, 2024
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スケジュールジョブ(CronJob)の実行失敗通知基盤における成功と失敗 / Success and failure in scheduled job execution failure notification infrastructure
Wantedly Tech Night 〜サービスを支えるインフラ/SRE技術〜
https://wantedly.connpass.com/event/332164/
Takayuki Kasai
November 20, 2024
More Decks by Takayuki Kasai
See All by Takayuki Kasai
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
310
DVC を活用した機械学習パイプライン開発の高速化 / Using DVC to accelerate machine learning pipeline development
unblee
3
3.2k
自作 Controller による Secret の配布と収集 / Distributing and collecting secrets with self-made controller
unblee
4
2.2k
Kubernetes の API Client における キャッシュ設計 / Cache Design in Kubernetes API Client
unblee
6
4.3k
Other Decks in Technology
See All in Technology
やさしいA2A入門
minorun365
PRO
12
1.7k
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
610
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
4
1.5k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
250
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
820
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
490
地球に⽣きるAI —GeoAIと「中間領域」— / AI Living on Earth — GeoAI and the “Intermediate Layer” —
ykiyota
0
280
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
130
Claude Codeをどのように キャッチアップしているか
oikon48
6
4.1k
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
100
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
0
250
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
250
Speed Design
sergeychernyshev
33
1.8k
4 Signs Your Business is Dying
shpigford
187
22k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
210
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Marketing to machines
jonoalderson
1
5.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Transcript
© 2024 Wantedly, Inc. スケジュールジョブ(CronJob)の 実行失敗通知基盤における成功と失敗 Nov. 20 2024 -
Takayuki Kasai @unblee Wantedly Tech Night 〜サービスを支えるインフラ /SRE技術〜
© 2024 Wantedly, Inc. 持ち帰って欲しいこと 価値のある・説明できる基盤 を作るために 「独りよがりのプラットフォーム」 を読もう! https://speakerdeck.com/toricls/for-whom-that-platform-runs
Tori Hara, CloudNative Days Tokyo 2020
© 2024 Wantedly, Inc. 話すこと 1. 2. 3. 4. 背景
課題 やったこと 結果どうなったか 得られた学び・まとめ 5.
© 2024 Wantedly, Inc. 背景 何に困っていたか 1. 2. 3. 4.
背景 課題 やったこと 結果どうなったか 得られた学び・まとめ 5.
© 2024 Wantedly, Inc. 背景 • このスライドにおけるスケジュールジョブ の定義 ◦ ⇒
特定の時間帯や時刻に自動的に実行される処理 • ウォンテッドリーでの事例 ◦ Kubernetes の CronJob で実行している ◦ キャッシュの暖気 ◦ 会計処理 ◦ 不要なリソースの削除 ◦ etc...
© 2024 Wantedly, Inc. 課題 何を解決したかったか 1. 2. 3. 4.
背景 課題 やったこと 結果どうなったか 得られた学び・まとめ 5.
© 2024 Wantedly, Inc. 課題 • スケジュールジョブが実行途中で失敗・中断 されたり スケジュール通りに実行されない ケースはとても多い...
◦ BigQuery の内部エラーでクエリが実行できない ◦ ひとつ前のスケジュールジョブが次のスケジュールまで長時間実行された ▪ 意図せず同時実行されてしまったり、実行されなかったり ◦ 時間経過によって扱うデータ量が増加したことに気付かずメモリ不足で OOMKiller • 完璧に実行するのはとても難しい
© 2024 Wantedly, Inc. 課題 • そもそもスケジュール通り実行されなかったことに 気づけなかった ◦ 問題検知が遅れることで障害の規模が広がる
◦ 問題が潜在化し対処する判断ができない • スケジュール通りに実行されなかったときに 気づける仕組み が必要だった ◦ もちろん自動的に再実行できる・それで問題無いならそれが最善(全てそれで解決したい...!) ◦ べき等かがわからないスケジュールジョブがとても多かったので全てを自動的に再実行できなかった
© 2024 Wantedly, Inc. やったこと どうやって解決したか 1. 2. 3. 4.
背景 課題 やったこと 結果どうなったか 得られた学び・まとめ 5.
© 2024 Wantedly, Inc. やったこと スケジュールジョブがスケジュール通り実行されなかったことを検 知してSlack に通知してくれる仕組みを作った 1. スケジュール通り実行はしたが失敗したケース
2. 実行がスケジュール通り行われなかったケース
© 2024 Wantedly, Inc. やったこと スケジュール通り実行はしたが失敗したケース CronJob Job Pod schedule:
0 19 * * * 実行失敗 (exit!=0) Custom Controller Slack 監視 通知
© 2024 Wantedly, Inc. Honeybadger Check-Ins やったこと 実行がスケジュール通り行われなかったケース Honeybadger Check-Ins
とは 指定したスケジュール時刻から n分以内に HTTP リクエストが届かないと Webhook を発行するサービス Honeybadger Check-Ins とは Report Period: 0 19 * * * Grace Period: 10minutes 19:01 HTTP GET 19:11 HTTP GET 何もしない 任意の エンドポイント Webhook 発行
© 2024 Wantedly, Inc. やったこと 実行がスケジュール通り行われなかったケース CronJob Costom Controller CronJob
の Pod Template の initContainer に Honeybadger Check-Ins のエンドポイントを curl で叩く処理を差し込む initContainers: - command: - sh - -c - curl -v https://api.honeybadger.io/v1/check_in/XXX || (echo 'retry after sleep 10s';sleep 10 && curl -v https://api.honeybadger.io/v1/check_in/XXX) || (echo 'retry after sleep 30s';sleep 30 && curl -v https://api.honeybadger.io/v1/check_in/XXX) || true Honeybadger Check-Ins とは 指定したスケジュール時刻から n分以内に HTTP リクエストが届かないと Webhook を発行するサービス CronJob 実行前の仕込み
© 2024 Wantedly, Inc. やったこと 実行がスケジュール通り行われなかったケース スケジュール通り実行される場合 CronJob Job Pod
Honeybadger Check-Ins 19:02 curl 実行 schedule: 0 19 * * * Report Period: 0 19 * * * Grace Period: 10minutes 19:00-19:10 以内に リクエストを受け付けたので 何もしない
© 2024 Wantedly, Inc. やったこと 実行がスケジュール通り行われなかったケース スケジュール通り実行さ れない場合 CronJob ?
Honeybadger Check-Ins schedule: 0 19 * * * Grace Period を超えても リクエストが来ない 通知サーバー Webhook 発行 Slack 通知
© 2024 Wantedly, Inc. 結果どうなったか どういう成功、失敗があったか 1. 2. 3. 4.
背景 課題 やったこと 結果どうなったか 得られた学び・まとめ 5.
© 2024 Wantedly, Inc. 結果どうなったか • 課題感である「問題に気付く」ことはできるようになった ◦ 問題検知が遅れることで障害の規模が広がる ◦
問題が潜在化し対処する判断ができない • 新たな課題が発生した ◦ 組織設計に合わせた通知設計 ◦ 通知後のアクションがしやすい仕組み・取り組み
© 2024 Wantedly, Inc. 結果どうなったか 成果について 結果的に内部品質の向上に貢献 できた 👏 •
問題検知の早期化によって障害規模の拡大を防止する • 通知頻度による問題の顕在化によって改善サイクルが回る スケジュールジョブが期待したスケジュール通りに 実行されていなかったことに気づくことができるようになった 1. スケジュール通り実行はしたが失敗したケース 2. 実行がスケジュール通り行われなかったケース
© 2024 Wantedly, Inc. 結果どうなったか 運用したことでわかったこと • 組織設計に合わせた通知設計が必要 ◦ 退職者やチーム構成の変化等で誰が受け取って対応するのかうやむやになりがち
▪ 責務が良くも悪くも流動的な組織設計に起因する問題 • 通知後のアクションがしやすい仕組み・取り組みが必要 ◦ 誰も知識を持っていない・引き継がれずに触れなくなったものが多数ある ◦ べき等かどうかわからなくて再実行していいかどうか判断できない ◦ どのくらいの緊急度・重要度でいつまでに対応するべき問題なのかがわからない ▪ incident response における Severity のようなものが無い ▪ 数が多すぎて Severity の判断にリソースを割きづらい
© 2024 Wantedly, Inc. 得られた学び・まとめ 1. 2. 3. 4. 背景
課題 やったこと 結果どうなったか 得られた学び・まとめ 5. 1. 2. 3. 4. 背景 課題 やったこと 結果どうなったか 得られた学び・まとめ 5.
© 2024 Wantedly, Inc. 得られた学び‧まとめ • ペインポイントは何かを捉える ◦ スケジュールジョブの失敗に気付きたい(これはただの How)
◦ 問題検知の早期化によって障害規模の拡大を防止したい ◦ 問題の顕在化によって改善をするためのリソース投下判断をやりやすくしたい • 計測可能な課題設定をする ◦ 計測出来ない=成果が明確でなければ組織として基盤を使い続ける価値・仕事をした自分の価値が説明できない • 基盤設計は組織設計に寄り添う ◦ 人に何かを伝える仕組みは人の移動によって簡単に壊れる • 作って終わりではなく啓蒙活動を含む運用・改善を継続的に回す ◦ 中途半端に価値があると良くないとわかっていても、慣れてしまうことで改善のモチベーションが生まれにくくなる 価値のある・説明できる基盤を作るためにはどうすればいいか
© 2024 Wantedly, Inc. 持ち帰って欲しいこと 価値のある・説明できる基盤 を作るために 「独りよがりのプラットフォーム」 を読もう! https://speakerdeck.com/toricls/for-whom-that-platform-runs
Tori Hara, CloudNative Days Tokyo 2020
© 2024 Wantedly, Inc. ⾃⼰紹介 名前 笠井 貴之(かさい たかゆき) アカウント名
GitHub, X @unblee 所属 Infra Squad 入社 2019年新卒(6年目)
© 2024 Wantedly, Inc. (再)得られた学び‧まとめ • ペインポイントは何かを捉える ◦ スケジュールジョブの失敗に気付きたい(これはただの How)
◦ 問題検知の早期化によって障害規模の拡大を防止したい ◦ 問題の顕在化によって改善をするためのリソース投下判断をやりやすくしたい • 計測可能な課題設定をする ◦ 計測出来ない=成果が明確でなければ組織として基盤を使い続ける価値・仕事をした自分の価値が説明できない • 基盤設計は組織設計に寄り添う ◦ 人に何かを伝える仕組みは人の移動によって簡単に壊れる • 作って終わりではなく啓蒙活動を含む運用・改善を継続的に回す ◦ 中途半端に価値があると良くないとわかっていても、慣れてしまうことで改善のモチベーションが生まれにくくなる 価値のある・説明できる基盤を作るためにはどうすればいいか