横断/運用基盤 / バッチ運用
横断/運用基盤 / バッチ運用
概要
fincs サービスの定期処理(バッチ)の全体像をまとめた運用基盤ページ。サブスク自動決済・配信実行・ファイル管理・整合性チェック・統計集計など、合計 16 種の定期処理を扱う。
主な定期処理:
- 月次決済: サブスク契約の自動更新・決済
- 銀行振込期限切れキャンセル: 期限超過の振込待ち契約を失効
- 契約日数の更新: 契約残日数の集計
- 顧客情報 CSV 出力: 金商法対応の月次出力
- 一斉配信送信: 予約された一斉配信のバッチ実行
- ステップ配信送信: ステップ配信シナリオのバッチ実行
- 記事公開通知: 公開予定記事の到来検知 + プッシュ通知
- ライブ強制終了: 長時間継続している配信の自動停止
- バッジ判定・付与: バッジ獲得条件のチェックと自動付与
- 会員数集計: 講座ごとの会員数を集計
- コンテンツ受講数集計: コンテンツ単位の受講数集計
- 論理削除済みコンテンツファイル削除: ファイル本体の物理削除
- 助言会社向けファイルコピー: コンテンツファイルとトーク内容のエクスポート
- トークファイルコピー: ストレージ間でのファイル移送
- アーカイブ作成: ライブ配信終了後のアーカイブ動画生成
- ストレージ整合性チェック: ファイル不整合の検出 + 通知
主な利用想定は、運用担当者・SRE による定期処理の運用監視、障害対応時の手動再実行、運営アドミンによる緊急停止対応。
実行スケジュールはコードリポ外で管理: バッチ自体は Spring Boot CLI コマンドとして起動するが、実行時刻・実行頻度・引数は外部スケジューラ(k8s CronJob / Cloud Scheduler 等)側で管理されており、本コードリポからは確認できない。スケジュール変更や障害発生時の確認は、インフラ運用側のスケジューラ設定を参照する運用となる。
緊急停止スイッチは別途提供: 一斉配信・ステップ配信については、運営アドミン経路から緊急停止ロックの取得・解除が可能(運営にお問い合わせください 参照)。配信誤爆・運用停止が必要なときに利用する。
バッチ手動実行・実行履歴閲覧は専用 UI 未提供: 運営アドミンによる「特定バッチを手動で再実行する」「実行履歴を画面で確認する」UI は現時点では提供しておらず、外部スケジューラ側のログ確認・運用担当による手動再実行が運用となる。
利用シナリオ
シナリオ 1: 月次決済の実行
サブスク契約の自動更新タイミングに合わせて、外部スケジューラがバッチを起動。対象契約の決済を実行し、契約期間を延長または失敗時の対応(会員本人による再決済を促す等)に進む。
シナリオ 2: 配信バッチの短サイクル実行
一斉配信・ステップ配信は短いサイクルで動作するバッチで、配信予定時刻に到達した配信を逐次送信。配信誤爆を検知した場合は運営アドミン経路の緊急停止ロックでバッチ実行を一時停止できる。
シナリオ 3: 銀行振込の期限切れキャンセル
日次バッチで銀行振込待ちの契約のうち、期限を過ぎても入金確認が取れない契約を自動的にキャンセル状態へ遷移。
シナリオ 4: ライブ強制終了
短サイクルで長時間継続している配信を検知し、自動的に配信終了状態へ遷移。配信ホストが操作を忘れた場合の補修。
シナリオ 5: アーカイブ作成
ライブ配信終了後、バッチがファイルを検出し次第アーカイブ動画として昇格。会員が後日アーカイブ受講できるようにする。
シナリオ 6: 障害対応での手動再実行
特定バッチが失敗した場合、運用担当者が外部スケジューラから手動で再実行。実行日付を引数指定することでバックフィル対応が可能(決済・銀行振込キャンセル・契約日数更新等で利用)。
よくある失敗ケース
- 外部スケジューラ障害: スケジューラ自体が動かないと全バッチが止まる。インフラ運用側の監視が重要
- バッチ二重起動: 外部スケジューラ側で同時実行禁止が設定されていない場合のリスク。スケジューラ側で制御
- 長時間ロック残存: 配信系のロックが何らかの理由で長時間残った場合の運用対応(運営にお問い合わせください 参照)
- 実行日付の誤指定: 手動再実行時に日付を誤って指定すると、想定外の対象に処理が走る
利用可否(権限別)
バッチは運用基盤のため、ユーザー権限軸での直接の操作は無い。運営アドミンによる緊急停止・ロック解除は 運営にお問い合わせください 参照。
機能詳細(ふるまい)
バッチ起動方式
- 各バッチは Spring Boot ベースの CLI コマンドとして起動
- 起動時の引数で「どのバッチを起動するか」を指定する仕組み
- 1 回の起動で 1 つのバッチのみが有効化される
- 外部スケジューラ(インフラ運用側で管理)が指定時刻にコマンド起動を行う運用
- 実行日付を引数で指定することで、過去日付のバックフィル実行も可能
バッチ一覧(運用観点での頻度)
| カテゴリ | バッチ | 想定頻度 |
|---|---|---|
| 決済 | 月次決済 | 日次(契約更新日に動く) |
| 決済 | 銀行振込期限切れキャンセル | 日次 |
| 決済 | 契約日数更新 | 日次 |
| 決済・運用 | 顧客情報 CSV 出力 | 月次 |
| 配信 | 一斉配信送信 | 短サイクル(数分〜十数分間隔) |
| 配信 | ステップ配信送信 | 短サイクル |
| 配信 | 記事公開通知 | 短サイクル |
| 配信 | ライブ強制終了 | 短サイクル |
| 統計 | バッジ判定・付与 | 日次 |
| 統計 | 会員数集計 | 日次 |
| 統計 | コンテンツ受講数集計 | 日次 |
| ファイル | 論理削除済コンテンツのファイル削除 | 日次 |
| ファイル | 助言会社向けファイルコピー | 臨時 / 月次 |
| ファイル | トークファイルコピー | 日次 |
| ファイル | アーカイブ作成 | 日次 / オンデマンド |
| 監視 | ストレージ整合性チェック | 日次 |
| 監視 | 決済整合性チェック(v2.33.4 追加) | 日次 |
実際の頻度・時刻はインフラ運用側のスケジューラ設定が真実。
二重起動防止
- バッチ層自体に共通の二重起動制御機構はない
- 配信系(一斉・ステップ)のみ、内部的にロック機構で重複実行を防止
- それ以外のバッチは、外部スケジューラ側の「同時実行禁止」設定に依存して制御
失敗時の通知
- バッチ層に横断的な失敗通知機構はない
- 例: ストレージ整合性チェックで不整合検出時の通知、助言会社向けコピーでの失敗通知
緊急停止スイッチ(運営アドミン経路)
- 一斉配信・ステップ配信については、運営アドミンが緊急停止ロックを取得することで以降のバッチ実行をスキップ可能
- 詳細は 運営にお問い合わせください 参照
手動再実行
- 障害対応での手動再実行は外部スケジューラ画面・運用担当者の CLI 操作で実施
- 多くのバッチは実行日付を引数で受け付けるため、過去日付のバックフィルが可能
関連ドキュメント
- 関連 PSD:
- 横断/運用基盤 / メール配信エンジン — メール配信エンジン
- 横断/運用基盤 / メディアパイプライン — メディアパイプライン
- 運営にお問い合わせください — 運営アドミンシステム運用(緊急停止)