[ バッチ名 ] - バッチ処理仕様書 ========================================== **最終更新**: [ 更新日を記載 ] .. contents:: 目次 :depth: 2 :local: 基本情報 -------- - **バッチ名**: [ バッチ名(例:ユーザー情報同期バッチ) ] - **処理ID**: [ 処理ID(例:BATCH_USER_SYNC) ] - **処理タイプ**: [ 処理タイプ(例:定期バッチ(cron)、手動実行、イベント駆動) ] - **実行タイミング**: [ 実行タイミング(例:毎日 03:00、週次、月次) ] - **実行方式**: [ 実行方式(例:シェル + Pythonスクリプト、Docker、Lambda) ] - **実行環境**: [ 実行環境(例:EC2、オンプレミス、クラウド) ] 処理概要 -------- [ バッチ処理の目的と概要を記載 ] [ 処理の流れや主要な機能を簡潔に説明 ] [ 例:外部システムとの連携、データ変換、レポート生成など ] 前提条件 -------- - [ 前提条件1(例:外部APIのアクセス権限が設定されていること) ] - [ 前提条件2(例:必要なネットワーク接続が確保されていること) ] - [ 前提条件3(例:処理対象データが準備されていること) ] - [ 前提条件4(例:実行環境のリソースが十分確保されていること) ] 関連ユーザーストーリー -------------------------------------------- * :doc:`../user_story/[ユーザーストーリーファイル名]` 入力情報 -------- - **データソース**: [ データソース(例:外部API、データベース、ファイル) ] - **データ形式**: [ データ形式(例:JSON、CSV、XML) ] - **認証方式**: [ 認証方式(例:Bearer Token、API Key、OAuth) ] - **フィルタ条件**: [ フィルタ条件(例:更新日時、ステータス、対象範囲) ] - **データ量想定**: [ データ量(例:1日あたり1万件、月次50万件) ] 出力情報 -------- - **出力先**: [ 出力先(例:データベース、ファイル、外部システム) ] - **出力形式**: [ 出力形式(例:テーブル更新、CSV出力、API送信) ] - **更新方式**: [ 更新方式(例:全件更新、差分更新、追記) ] - **ロギング**: [ ログ出力先(例:ファイル、CloudWatch、Syslog) ] - **通知方式**: [ 通知方式(例:メール、Slack、監視システム) ] 処理詳細フロー -------------- 1. [ 処理ステップ1(例:前回実行時刻を取得) ] 2. [ 処理ステップ2(例:外部システムからデータを取得) ] 3. [ 処理ステップ3(例:データの妥当性チェック) ] 4. [ 処理ステップ4(例:データ変換・加工処理) ] 5. [ 処理ステップ5(例:データベースへの書き込み) ] 6. [ 処理ステップ6(例:処理結果のログ出力) ] 7. [ 処理ステップ7(例:完了通知の送信) ] 処理シーケンス図 ---------------- .. mermaid:: sequenceDiagram participant Scheduler as スケジューラー participant Batch as バッチ処理 participant ExternalAPI as 外部システム participant Database as データベース participant Logger as ログ出力 participant Notifier as 通知システム Scheduler->>Batch: バッチ実行開始 Batch->>ExternalAPI: データ取得要求 ExternalAPI-->>Batch: データ応答 Batch->>Database: データ更新 Database-->>Batch: 更新結果 Batch->>Logger: 処理ログ出力 Batch->>Notifier: 完了通知 Batch-->>Scheduler: 処理完了 例外・エラー処理 ---------------- **通信エラー対応**: - [ エラーパターン1(例:API通信失敗) ] → [ 対応方法(例:リトライ3回、失敗時アラート送信) ] - [ エラーパターン2(例:タイムアウト発生) ] → [ 対応方法(例:処理継続可否判定、部分実行) ] **データエラー対応**: - [ エラーパターン3(例:データ形式不正) ] → [ 対応方法(例:該当レコードスキップ、ログ記録) ] - [ エラーパターン4(例:必須項目不足) ] → [ 対応方法(例:デフォルト値設定、エラー通知) ] **システムエラー対応**: - [ エラーパターン5(例:DB更新失敗) ] → [ 対応方法(例:ロールバック、復旧手順実行) ] - [ エラーパターン6(例:ディスク容量不足) ] → [ 対応方法(例:処理一時停止、運用担当者通知) ] パフォーマンス・リソース管理 ---------------------------- **処理時間目標**: - **標準実行時間**: [ 目標時間(例:30分以内) ] - **最大許容時間**: [ 上限時間(例:2時間) ] - **タイムアウト設定**: [ タイムアウト時間(例:3時間でプロセス強制終了) ] **リソース使用量**: - **メモリ使用量**: [ メモリ想定(例:最大2GB) ] - **CPU使用率**: [ CPU想定(例:平均50%以下) ] - **ディスク使用量**: [ ディスク想定(例:一時ファイル500MB) ] **並列処理**: - **並列度**: [ 並列処理数(例:4プロセス並列) ] - **分割単位**: [ 処理分割(例:1000件ずつ処理) ] スケジュール設定・運用 ---------------------- **cron設定例**: .. code-block:: bash # [ バッチ名 ] [ cron時刻設定 ] [ 実行スクリプトパス ] # 例:毎日午前3時実行 # 0 3 * * * /opt/batch/sample_batch.sh **実行制御**: - **排他制御**: [ 排他制御方法(例:ロックファイル、プロセス確認) ] - **実行間隔制限**: [ 実行間隔(例:前回実行完了後1時間以上空ける) ] - **手動実行**: [ 手動実行方法(例:管理画面、コマンドライン) ] **監視・アラート**: - **実行状況監視**: [ 監視方法(例:ログ監視、プロセス監視) ] - **異常検知**: [ 異常検知条件(例:3時間以上実行中、エラー率10%超過) ] - **通知先**: [ 通知先(例:運用チーム、開発チーム) ] テスト項目 ---------- **機能テスト**: - [ テスト項目1(例:正常データでの処理完了確認) ] - [ テスト項目2(例:異常データでのエラーハンドリング確認) ] - [ テスト項目3(例:大量データでの性能確認) ] **運用テスト**: - [ テスト項目4(例:スケジュール実行の動作確認) ] - [ テスト項目5(例:エラー時の通知機能確認) ] - [ テスト項目6(例:ログ出力内容の妥当性確認) ]