Cloudflare WorkersのCron Triggersでリリース当番通知botを構築した事例
株式会社ベースマキナ / syumai
メンバー / フロントエンドエンジニア
| 利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|---|---|
Freeプラン | Cloudflare WorkersのCron Triggers | 10名以下 | 2024年2月 | B to B |
| 利用プラン | Freeプラン |
|---|---|
| 利用機能 | Cloudflare WorkersのCron Triggers |
| ツールの利用規模 | 10名以下 |
| ツールの利用開始時期 | 2024年2月 |
| 事業形態 | B to B |
アーキテクチャ

アーキテクチャの意図・工夫
なるべく登場する要素を少なくし、Cloudflare Workersの部分にロジックを集中させました。
- 素のfetchでSlack Webhook URLにリクエストを送るCloudflare Workersのサーバーレス関数を、定期的にCron Triggersから呼ぶだけ
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
- プロダクトのリリース担当が決まっておらず、「直近で機能開発を行ったメンバー」が自主的に行っていた
- その結果、タスクのアサイン状況によってリリース担当が暗黙的に決まる状態となり、不均衡が発生していた
リリース担当が固定化されることによる課題
- 業務時間内で、リリース作業にかかる時間の割合の均等性が失われていた
- リリース作業に対する理解度の均等性が失われていた
- よくリリース作業を行っているメンバーの不在時に、緊急時のHotfix対応が必要になった場合に作業がうまく行えないリスクがあった
どのような状態を目指していたか
- リリース作業の機会を均等化するため、リリース当番を輪番制で自動的に割り当て、チームメンバー全員が確認しやすい形で通知する形を目指した
比較検討したサービス
- 元々Cloudflare WorkersとCron Triggersを知っていたので、比較は十分には行っていなかった
- 強いて言うのであれば、以下のサービスが比較対象になりうる
- GitHub Actions (スケジュール実行)
- Google CloudのCloud Scheduler & Cloud Run functions
- Zapier
- Make
選定理由
- TypeScriptで記述できる
- 当番割り当てのロジックが簡単に書ける
- 外部ライブラリを自由に使える
- 祝日の判定 (holiday_jp)
- 通知メッセージの組み立て (jsx-slack)
- 公式CLIツールのWranglerが使いやすい
- 自前でWebpackの設定などを組む必要がない
- TypeScriptのトランスパイルは自動
- バンドルも自動
- デプロイがコマンド一発で簡単
- 自前でWebpackの設定などを組む必要がない
- 定期実行の設定が簡単
- Wranglerの設定ファイルにCronスケジュールを記述するだけ
導入の成果
改善したかった課題はどれくらい解決されたか
- もともと感じていた課題は完全に解消された
どのような成果が得られたか
- リリース作業の頻度が均等になった
- 「あとでリリースしないと」という意識を持たなくても自然とリリースが行われるようになり、心理的負荷が減った
導入に向けた社内への説明
上長・チームへの説明
無料だったこと、そしてそのメリットに十分理解が得られていたので、すんなり導入が決まりました。
- 今回はサービス本体ではなく、開発チームの日常業務に関わるもので、クリティカルな部分ではなかった
活用方法
月曜から木曜の朝10時(日本時間)に自動実行され、その日のリリース担当者にSlackでメンションを送っている。
Cron Triggersのスケジュールは wrangler.toml に crons = ["0 1 * * MON-THU"] と設定し、金・土・日を除外しています。さらに、実行時に祝日かどうか、翌日が祝日かどうかをチェックし、該当する場合は通知をスキップしています。
当番の割り当ては、日付をメンバー数で割った余りを使う単純なロジックで決定しており、自動的に輪番で担当者が割り当てられています。
よく使う機能
- Wrangler
- Cloudflare Workersの開発サーバー起動、デプロイなど
- 環境変数管理
wrangler.tomlでの環境変数設定- メンバー管理の環境変数
- Slack WebhookのURL
- Cron Triggers
- Cronスケジュールによる定期実行機能
ツールの良い点
- 開発ツールが充実しており、使い方が簡単で、学習コストが低い
- 無料プランで十分に機能が使えている
- デプロイが高速
ツールの課題点
- 無料プランだと、Cron Triggersを5つまでしか作成できない
- タイムゾーンがUTC固定なので、日本時間での設定に計算が必要
ツールを検討されている方へ
Cloudflare Workersは、CDNエッジでの利用の印象が強いですが、今回のような運用オペレーションでの活用にも向いています。 単に、TypeScriptのコードを定期実行したいといった、ライトなユースケースでもぜひ選択肢として検討してみてください。
今後の展望
非常にシンプルな仕組みなので、リリース作業のリマインダー以外にも同じ仕組みを活用できると考えられます。 このリリースリマインダー自体のソースコードの公開も行っています。他の便利な使い方などがあれば、同様に知見を公開していきたいです。 https://github.com/basemachina/release-reminder-worker
株式会社ベースマキナ / syumai
メンバー / フロントエンドエンジニア
よく見られているレビュー
株式会社ベースマキナ / syumai
メンバー / フロントエンドエンジニア
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法

