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
130
スケジュールジョブ(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
200
DVC を活用した機械学習パイプライン開発の高速化 / Using DVC to accelerate machine learning pipeline development
unblee
3
3k
自作 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.2k
Other Decks in Technology
See All in Technology
mrubyと micro-ROSが繋ぐロボットの世界
kishima
2
380
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
2
670
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
240
なぜ私はいま、ここにいるのか? #もがく中堅デザイナー #プロダクトデザイナー
bengo4com
0
1.2k
論文紹介:LLMDet (CVPR2025 Highlight)
tattaka
0
220
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
690
本が全く読めなかった過去の自分へ
genshun9
0
680
事業成長の裏側:エンジニア組織と開発生産性の進化 / 20250703 Rinto Ikenoue
shift_evolve
PRO
1
110
How Community Opened Global Doors
hiroramos4
PRO
1
130
Model Mondays S2E03: SLMs & Reasoning
nitya
0
230
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
1
180
Liquid Glass革新とSwiftUI/UIKit進化
fumiyasac0921
0
300
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
What's in a price? How to price your products and services
michaelherold
246
12k
Git: the NoSQL Database
bkeepers
PRO
430
65k
For a Future-Friendly Web
brad_frost
179
9.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Making Projects Easy
brettharned
116
6.3k
KATA
mclloyd
30
14k
4 Signs Your Business is Dying
shpigford
184
22k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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)
◦ 問題検知の早期化によって障害規模の拡大を防止したい ◦ 問題の顕在化によって改善をするためのリソース投下判断をやりやすくしたい • 計測可能な課題設定をする ◦ 計測出来ない=成果が明確でなければ組織として基盤を使い続ける価値・仕事をした自分の価値が説明できない • 基盤設計は組織設計に寄り添う ◦ 人に何かを伝える仕組みは人の移動によって簡単に壊れる • 作って終わりではなく啓蒙活動を含む運用・改善を継続的に回す ◦ 中途半端に価値があると良くないとわかっていても、慣れてしまうことで改善のモチベーションが生まれにくくなる 価値のある・説明できる基盤を作るためにはどうすればいいか