管理プロセス
Twelve-Factor App の原則で、DB マイグレーションなどの管理タスクをワンオフプロセスとして実行する
管理プロセスとは
管理プロセスは、Twelve-Factor App の第 12 原則で、DB マイグレーション、データ修正、レポート生成などの管理タスクをワンオフプロセスとして実行する考え方である。
核心は「管理タスクもアプリケーションと同じコードベース・同じ環境・同じ設定で実行する」という点にある。本番環境のデータを修正するスクリプトを、開発者のローカルマシンから異なる設定で実行すると、環境の差が事故の原因になりうる。管理タスクをアプリと同じデプロイパイプラインに載せると、この差を減らせる。
管理タスクの種類
| タスク | 説明 | AWS での実行例 |
|---|---|---|
| DB マイグレーション | スキーマ変更、カラム追加 | Lambda (手動実行) |
| データ修正 | 不整合データの修正、一括更新 | Lambda + DynamoDB |
| レポート生成 | 月次集計、分析レポート | Step Functions |
| キャッシュクリア | 古いデータの削除、キャッシュ無効化 | Lambda |
| ユーザー管理 | 管理者の追加、権限変更 | AWS CLI (cognito-idp) |
| シード投入 | 初期データの投入、マスタデータ更新 | Lambda + S3 |
管理タスクの 4 原則
1. 同一コードベース
管理スクリプトはアプリケーションと同じリポジトリに含める。別リポジトリに分離すると、アプリのモデル変更に管理スクリプトが追従できず、実行時エラーの原因になる。
2. 同一環境
本番の管理タスクは本番環境で実行する。ローカルから本番 DB に接続するのではなく、本番と同じ Lambda 関数として実行する。
# 本番環境の Lambda を手動実行
aws lambda invoke --function-name MigrationFunction \
--payload '{"version": "003"}' /dev/stdout
3. 冪等性の確保
同じタスクを 2 回実行しても安全な設計にする。ネットワーク障害やタイムアウトの後に、同じタスクを再実行することがある。
// 冪等なマイグレーション: 適用済みならスキップ
async function migrate(version: string): Promise<void> {
const applied = await getAppliedMigrations();
if (applied.includes(version)) {
console.log(`Migration ${version} already applied, skipping`);
return;
}
await runMigration(version);
await recordMigration(version);
}
4. 監査証跡
実行結果を CloudWatch Logs に記録し、誰が / いつ / 何を実行したかを追跡可能にする。手動の SQL 実行はこの記録に残らないので避ける。
Step Functions による複雑な管理タスク
複数ステップにまたがる管理タスクは、Step Functions でワークフローとして定義する。途中で失敗した実行は、成功したステップを繰り返さずに、失敗したステップから再開できる (直近 14 日以内に成功しなかった Standard ワークフローの実行 / 2026 年 10 月時点)。
開始 → データ検証 → バックアップ作成 → マイグレーション実行 → 検証 → 完了
↓ (失敗)
バックアップから復元
アンチパターン
| アンチパターン | 問題 | 正しいアプローチ |
|---|---|---|
| 本番 DB に直接 SQL を実行 | CloudWatch Logs の記録に残らない、元に戻しにくい | Lambda 経由で実行 |
| ローカルから本番 DB に接続 | セキュリティリスク、環境差異 | 本番環境の Lambda で実行 |
| 管理スクリプトを手動で実行 | 再現性がない、手順ミス | CI/CD パイプラインに組み込む |
| 管理タスクを別リポジトリで管理 | モデル変更に追従できない | アプリと同一リポジトリ |
| 冪等性のない一括更新 | 再実行で二重処理 | 処理済みフラグで冪等性を確保 |
詳しくは関連書籍を参照。
この記事は役に立ちましたか?
関連用語
Twelve-Factor App
クラウドネイティブなアプリケーションを構築するための 12 の設計原則
データベースマイグレーション戦略
本番環境のデータベーススキーマを安全に変更するための戦略とパターン
Step Functions
AWS のワークフローサービスで、処理の呼び出し順序 / 分岐 / 待機 / 再試行を状態遷移の定義として外に出し、その進行を AWS 側が管理する
Fargate
コンテナのためのサーバーレスコンピューティングエンジン
ShellScript
シェルのコマンドをまとめて自動実行するスクリプト。作業の自動化に使われる
ECS
AWS のマネージドコンテナオーケストレーションサービスで、Docker コンテナを実行 / 管理する