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
Takayuki Kasai
November 20, 2024
Technology
0
77
スケジュールジョブ(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
Tweet
Share
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
140
DVC を活用した機械学習パイプライン開発の高速化 / Using DVC to accelerate machine learning pipeline development
unblee
3
2.9k
自作 Controller による Secret の配布と収集 / Distributing and collecting secrets with self-made controller
unblee
4
2.1k
Kubernetes の API Client における キャッシュ設計 / Cache Design in Kubernetes API Client
unblee
6
4.1k
Other Decks in Technology
See All in Technology
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
230
AIエージェント元年@日本生成AIユーザ会
shukob
1
240
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.9k
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.5k
開発者のための FinOps/FinOps for Engineers
oracle4engineer
PRO
2
200
どちらかだけじゃもったいないかも? ECSとEKSを適材適所で併用するメリット、運用課題とそれらの対応について
tk3fftk
2
240
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.4k
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
1
200
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
200
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
780
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
150
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
4
6.5k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Done Done
chrislema
182
16k
The Invisible Side of Design
smashingmag
299
50k
Building Adaptive Systems
keathley
40
2.4k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.3k
We Have a Design System, Now What?
morganepeng
51
7.4k
RailsConf 2023
tenderlove
29
1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
BBQ
matthewcrist
87
9.5k
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)
◦ 問題検知の早期化によって障害規模の拡大を防止したい ◦ 問題の顕在化によって改善をするためのリソース投下判断をやりやすくしたい • 計測可能な課題設定をする ◦ 計測出来ない=成果が明確でなければ組織として基盤を使い続ける価値・仕事をした自分の価値が説明できない • 基盤設計は組織設計に寄り添う ◦ 人に何かを伝える仕組みは人の移動によって簡単に壊れる • 作って終わりではなく啓蒙活動を含む運用・改善を継続的に回す ◦ 中途半端に価値があると良くないとわかっていても、慣れてしまうことで改善のモチベーションが生まれにくくなる 価値のある・説明できる基盤を作るためにはどうすればいいか