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
100
スケジュールジョブ(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
180
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.2k
Other Decks in Technology
See All in Technology
Running JavaScript within Ruby
hmsk
3
370
クラウド開発環境Cloud Workstationsの紹介
yunosukey
0
190
白金鉱業Meetup_Vol.18_生成AIはデータサイエンティストを代替するのか?
brainpadpr
3
150
Winning at PHP in Production in 2025
beberlei
1
150
Стильный код: натуральный поиск редких атрибутов по картинке. Юлия Антохина, Data Scientist, Lamoda Tech
lamodatech
0
790
watsonx.data上のベクトル・データベース Milvusを見てみよう/20250418-milvus-dojo
mayumihirano
0
120
Writing Ruby Scripts with TypeProf
mame
0
360
Dynamic Reteaming And Self Organization
miholovesq
3
640
ビジネスとデザインとエンジニアリングを繋ぐために 一人のエンジニアは何ができるか / What can a single engineer do to connect business, design, and engineering?
kaminashi
2
370
白金鉱業Meetup_Vol.18_AIエージェント時代のUI/UX設計
brainpadpr
1
200
2025-04-24 "Manga AI Understanding & Localization" Furukawa Arata (CyberAgent, Inc)
ornew
2
270
彩の国で始めよう。おっさんエンジニアから共有したい、当たり前のことを当たり前にする技術
otsuki
0
160
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Into the Great Unknown - MozCon
thekraken
38
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.7k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
560
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Designing for humans not robots
tammielis
252
25k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
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)
◦ 問題検知の早期化によって障害規模の拡大を防止したい ◦ 問題の顕在化によって改善をするためのリソース投下判断をやりやすくしたい • 計測可能な課題設定をする ◦ 計測出来ない=成果が明確でなければ組織として基盤を使い続ける価値・仕事をした自分の価値が説明できない • 基盤設計は組織設計に寄り添う ◦ 人に何かを伝える仕組みは人の移動によって簡単に壊れる • 作って終わりではなく啓蒙活動を含む運用・改善を継続的に回す ◦ 中途半端に価値があると良くないとわかっていても、慣れてしまうことで改善のモチベーションが生まれにくくなる 価値のある・説明できる基盤を作るためにはどうすればいいか