やってみること
AIエージェント+MCPでどこまでいい感じに要件定義、基本設計、詳細設計を作成してくれるかどのような点を気をつけたら良いか考えてみました。
なお、今回は、どこまでいい感じに動いてくれるかを目的としていますので、中身を詳しく精査しておりません。
今回はウォーターフォールを想定しての開発ですが、IaCで管理している場合などは、要件定義、基本設計後、先に開発し、IaCで管理しているものを詳細設計とすることもできると思います。
先に感想
- モデルの選択やMCPも重要だが、最終的にはどう指示するかがやはり重要(今回はそのままプロンプトを投げていますが、実際はMarkdown形式にし、しっかりとした指示書を記載すべし)
- 作成された成果物に対して、各担当ごとに設計書を修正させれば良いので記載の仕方やフォーマットに大きなズレは生じないはず
- Gitなどリポジトリで管理すればプルリクし、変更箇所などを管理者がレビューしやすく、進捗も管理しやすい
最終的に完成されるもの
.
├── .amazonq/mcp.json
├── 1_要件定義
│ ├── AWS非機能要件定義書.md
│ └── AWS非機能要件定義書テンプレート.md
├── 2_基本設計
│ ├── 基本設計書.md
│ └── 基本設計書_テンプレート.md
└── 3_詳細設計
├── 00_目次.md
├── 01_ネットワーク設計
│ ├── 01_VPC設計.md
│ ├── 01_VPC設計_パラメータ.csv
│ ├── 02_サブネット設計.md
│ └── 02_サブネット設計_パラメータ.csv
├── 02_アプリケーション設計
│ ├── 01_マイクロサービス構成.md
│ └── 01_マイクロサービス構成_パラメータ.csv
├── 03_データベース設計
│ ├── 01_論理データモデル.md
│ └── 01_論理データモデル_パラメータ.csv
├── 04_インフラストラクチャ設計
│ ├── 01_ALB設計.md
│ └── 01_ALB設計_パラメータ.csv
├── 05_セキュリティ設計
│ ├── 01_IAM設計.md
│ └── 01_IAM設計_パラメータ.csv
├── 06_可用性・継続性設計
├── 07_運用・監視設計
├── 08_CI_CD・デプロイ設計
├── 09_テスト設計
└── 10_移行設計
MCP
ワークスペースのルートに.amazonq/mcp.json
を保存し、プロジェクトで共有するようにしておきます。
今回は以下のMCPを利用します。
- awslabsaws_documentation_mcp_server
.amazonq/mcp.json
{
"mcpServers": {
"awslabs.aws-documentation-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-documentation-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_DOCUMENTATION_PARTITION": "aws"
},
"disabled": false,
"autoApprove": []
}
}
}
要件定義
AWS非機能要件定義書テンプレート
まず、AWS非機能要件定義書を作成するために土台となるAWS非機能要件定義書テンプレートの作成を指示してみました。
IPAの非機能要求グレード + AWS Well-Architected Framework を組み合わせた観点からAWSの非機能要件の要件定義書のフォーマットをMarkdownで作成して下さい。
1_要件定義/AWS非機能要件定義書テンプレート.md
# AWS非機能要件定義書
## 文書情報
| 項目 | 内容 |
|------|------|
| 文書名 | AWS非機能要件定義書 |
| 作成日 | YYYY/MM/DD |
| 最終更新日 | YYYY/MM/DD |
| バージョン | 0.1 |
| 作成者 | |
| 承認者 | |
## 1. はじめに
### 1.1 目的
本書は、[システム名]の非機能要件を定義するものである。AWS Well-Architected FrameworkとIPAの非機能要求グレードを組み合わせた観点から、システムが満たすべき非機能要件を明確にする。
### 1.2 対象範囲
本書が対象とするシステムの範囲は以下の通りである。
- [対象システム/サブシステムの記載]
- [対象外となるシステム/サブシステムの記載]
### 1.3 前提条件
- [前提条件1]
- [前提条件2]
### 1.4 関連文書
- [関連文書1]
- [関連文書2]
## 2. システム概要
### 2.1 システム構成図
[システム構成図を挿入]
### 2.2 主要コンポーネント
- [コンポーネント1]: [説明]
- [コンポーネント2]: [説明]
## 3. 信頼性要件(Reliability)
### 3.1 可用性要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| サービス稼働率 | REL-01 | システム全体の稼働率 | 例:99.99%(年間ダウンタイム約52分以内) | 例:マルチAZ構成、Auto Scaling | |
| 計画停止 | REL-02 | 定期メンテナンス時間 | 例:月1回、深夜2時〜4時 | 例:Blue/Greenデプロイメント | |
| 障害復旧時間(RTO) | REL-03 | 障害発生から復旧までの目標時間 | 例:重大障害時 2時間以内 | 例:DR戦略、バックアップ/リストア手順 | |
| 目標復旧時点(RPO) | REL-04 | データ損失の許容範囲 | 例:5分以内のデータ損失まで許容 | 例:定期的なスナップショット、クロスリージョンレプリケーション | |
### 3.2 耐障害性要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 単一障害点の排除 | REL-05 | 単一障害点となる要素の特定と対策 | 例:単一障害点の排除 | 例:冗長構成、マルチAZ配置 | |
| 障害検知 | REL-06 | システム障害の検知方法 | 例:1分以内に障害を検知 | 例:Amazon CloudWatch、ヘルスチェック | |
| 自動復旧 | REL-07 | 障害時の自動復旧機能 | 例:特定の障害パターンに対する自動復旧 | 例:Auto Scaling、AWS Lambda | |
### 3.3 災害対策要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 災害復旧計画 | REL-08 | 大規模災害時の復旧計画 | 例:リージョン障害時の復旧手順策定 | 例:クロスリージョン構成、Route 53フェイルオーバー | |
| バックアップ | REL-09 | データバックアップの方針 | 例:日次バックアップ、30日保持 | 例:AWS Backup、S3ライフサイクル | |
## 4. パフォーマンス効率要件(Performance Efficiency)
### 4.1 処理性能要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| レスポンス時間 | PERF-01 | ユーザー操作に対するレスポンス時間 | 例:画面表示 1秒以内、検索処理 3秒以内 | 例:CloudFront、ElastiCache | |
| スループット | PERF-02 | 単位時間あたりの処理件数 | 例:1秒あたり1000リクエスト処理 | 例:適切なインスタンスタイプ選定、負荷分散 | |
| バッチ処理時間 | PERF-03 | バッチ処理の完了時間 | 例:日次バッチ処理を3時間以内に完了 | 例:並列処理、Step Functions | |
### 4.2 拡張性要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| スケーラビリティ | PERF-04 | 負荷増加時の対応 | 例:負荷に応じて自動的にリソースを増減 | 例:Auto Scaling、サーバーレスアーキテクチャ | |
| 将来の成長対応 | PERF-05 | 将来的なユーザー/データ増加への対応 | 例:年間20%の成長に対応可能な設計 | 例:スケーラブルなデータベース設計、シャーディング | |
### 4.3 リソース最適化
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| リソース選定 | PERF-06 | 適切なAWSリソースの選定 | 例:ワークロードに最適なインスタンスタイプの選定 | 例:ベンチマークテスト、AWS Compute Optimizer | |
| キャッシュ戦略 | PERF-07 | キャッシュの活用方針 | 例:頻繁にアクセスされるデータのキャッシュ化 | 例:ElastiCache、CloudFront | |
## 5. セキュリティ要件(Security)
### 5.1 認証・認可要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ユーザー認証 | SEC-01 | ユーザー認証方式 | 例:多要素認証の実装 | 例:Amazon Cognito、IAM | |
| アクセス制御 | SEC-02 | リソースへのアクセス制御 | 例:最小権限の原則に基づくアクセス制御 | 例:IAMポリシー、リソースポリシー | |
| APIセキュリティ | SEC-03 | API呼び出しの保護 | 例:認証されたAPIアクセスのみ許可 | 例:API Gateway、JWT認証 | |
### 5.2 データ保護要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 保存データ暗号化 | SEC-04 | 保存データの暗号化方針 | 例:すべての保存データを暗号化 | 例:S3暗号化、EBS暗号化、KMS | |
| 転送データ暗号化 | SEC-05 | 転送中データの暗号化方針 | 例:すべての通信をTLS 1.2以上で暗号化 | 例:HTTPS、TLS | |
| 個人情報保護 | SEC-06 | 個人情報の取り扱い | 例:個人情報の匿名化、最小限の収集 | 例:データマスキング、アクセス制限 | |
### 5.3 インフラストラクチャ保護
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ネットワークセキュリティ | SEC-07 | ネットワーク保護方針 | 例:不要なポートの遮断、トラフィックフィルタリング | 例:セキュリティグループ、NACLs、WAF | |
| 脆弱性管理 | SEC-08 | 脆弱性の検出と対応 | 例:定期的な脆弱性スキャンと修正 | 例:Amazon Inspector、AWS Security Hub | |
| DDoS対策 | SEC-09 | DDoS攻撃への対策 | 例:DDoS攻撃からの保護 | 例:AWS Shield、CloudFront | |
### 5.4 検出と対応
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ログ管理 | SEC-10 | セキュリティログの収集と分析 | 例:すべてのセキュリティイベントの記録と分析 | 例:CloudTrail、CloudWatch Logs、Amazon OpenSearch | |
| インシデント対応 | SEC-11 | セキュリティインシデント対応計画 | 例:インシデント対応手順の策定 | 例:AWS Security Incident Response Guide | |
## 6. コスト最適化要件(Cost Optimization)
### 6.1 コスト管理
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| コスト見積もり | COST-01 | 初期および運用コストの見積もり | 例:月間運用コストの予測と管理 | 例:AWS Pricing Calculator、AWS Budgets | |
| コスト配分 | COST-02 | コストの部門/プロジェクト別配分 | 例:タグベースのコスト配分 | 例:コストタグ、Cost Explorer | |
### 6.2 リソース最適化
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| リソースサイジング | COST-03 | 適切なリソースサイズの選定 | 例:ワークロードに最適なインスタンスタイプの選定 | 例:AWS Compute Optimizer、右サイジング | |
| 自動スケーリング | COST-04 | 需要に応じたリソース調整 | 例:負荷に応じたリソースの自動調整 | 例:Auto Scaling、予約インスタンス | |
### 6.3 料金モデル最適化
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 購入オプション | COST-05 | 最適な料金モデルの選定 | 例:長期利用リソースの予約購入 | 例:Savings Plans、リザーブドインスタンス | |
| ライフサイクル管理 | COST-06 | 不要リソースの特定と削除 | 例:未使用リソースの定期的な特定と削除 | 例:AWS Trusted Advisor、タグベースの自動化 | |
## 7. 運用上の優秀性要件(Operational Excellence)
### 7.1 運用設計
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 運用モデル | OPS-01 | 運用体制と役割分担 | 例:24時間365日の運用体制確立 | 例:運用手順書、オンコール体制 | |
| 自動化 | OPS-02 | 運用作業の自動化範囲 | 例:デプロイ、スケーリング、バックアップの自動化 | 例:AWS Systems Manager、CloudFormation | |
### 7.2 監視・運用管理
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| モニタリング | OPS-03 | システム監視の方針 | 例:主要メトリクスの定義と監視 | 例:CloudWatch、X-Ray | |
| アラート | OPS-04 | アラート通知の基準と方法 | 例:重要度別のアラート定義と通知先 | 例:CloudWatch Alarms、SNS | |
| ログ管理 | OPS-05 | ログ収集・分析・保存方針 | 例:集中ログ管理、30日間の保存 | 例:CloudWatch Logs、S3 | |
### 7.3 変更管理
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| デプロイ戦略 | OPS-06 | アプリケーションデプロイ方法 | 例:ゼロダウンタイムデプロイの実現 | 例:Blue/Green、カナリアデプロイ | |
| 構成管理 | OPS-07 | インフラストラクチャの構成管理 | 例:IaC(Infrastructure as Code)の採用 | 例:CloudFormation、CDK | |
| テスト戦略 | OPS-08 | 本番環境変更前のテスト方針 | 例:自動テスト、負荷テストの実施 | 例:テスト環境、CI/CD | |
## 8. 持続可能性要件(Sustainability)
### 8.1 環境負荷低減
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| エネルギー効率 | SUS-01 | エネルギー効率の最適化 | 例:リソース使用率の最適化 | 例:効率的なインスタンスタイプ選定、自動スケーリング | |
| カーボンフットプリント | SUS-02 | CO2排出量の削減目標 | 例:前年比10%削減 | 例:AWS Carbon Footprint Tool | |
### 8.2 リソース効率
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ハードウェア効率 | SUS-03 | ハードウェアリソースの効率的利用 | 例:リソース使用率の最適化 | 例:サーバーレスアーキテクチャ、コンテナ化 | |
| データ管理 | SUS-04 | データライフサイクル管理 | 例:不要データの定期的な削除 | 例:S3ライフサイクルポリシー | |
## 9. 移行性要件(IPA非機能要求グレード)
### 9.1 移行計画
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 移行戦略 | MIG-01 | 既存システムからの移行方法 | 例:段階的移行、カットオーバー | 例:AWS Migration Hub、AWS DMS | |
| データ移行 | MIG-02 | データ移行の方法と検証 | 例:データ整合性の確保 | 例:AWS Snowball、AWS DMS | |
### 9.2 互換性
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 外部システム連携 | MIG-03 | 外部システムとの互換性確保 | 例:既存APIとの互換性維持 | 例:API Gateway、変換レイヤー | |
| クライアント互換性 | MIG-04 | クライアントアプリケーションとの互換性 | 例:既存クライアントの動作保証 | 例:互換性テスト、段階的移行 | |
## 10. 法令・規制要件
### 10.1 コンプライアンス
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 法令遵守 | COMP-01 | 適用される法令・規制の特定と遵守 | 例:個人情報保護法、GDPR対応 | 例:AWS Artifact、コンプライアンスチェックリスト | |
| 監査対応 | COMP-02 | 監査証跡の確保 | 例:アクセスログの保存と監査対応 | 例:CloudTrail、Config | |
### 10.2 地域固有要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| データ所在地 | COMP-03 | データ保存地域の制約 | 例:特定地域内でのデータ保持 | 例:リージョン選定、データレジデンシー | |
| 多言語対応 | COMP-04 | 多言語・多通貨対応 | 例:日英中3言語対応 | 例:i18n対応、Unicode | |
## 11. 非機能要件の優先度とトレードオフ
| 要件カテゴリ | 優先度 | トレードオフの考慮事項 |
|------------|--------|----------------------|
| 信頼性 | [高/中/低] | [記載] |
| パフォーマンス効率 | [高/中/低] | [記載] |
| セキュリティ | [高/中/低] | [記載] |
| コスト最適化 | [高/中/低] | [記載] |
| 運用上の優秀性 | [高/中/低] | [記載] |
| 持続可能性 | [高/中/低] | [記載] |
| 移行性 | [高/中/低] | [記載] |
| 法令・規制 | [高/中/低] | [記載] |
## 12. 非機能要件検証計画
| 要件ID | 検証方法 | 検証環境 | 検証基準 | 検証時期 |
|--------|----------|----------|----------|----------|
| REL-01 | [記載] | [記載] | [記載] | [記載] |
| PERF-01 | [記載] | [記載] | [記載] | [記載] |
| SEC-01 | [記載] | [記載] | [記載] | [記載] |
| ... | ... | ... | ... | ... |
## 13. 付録
### 13.1 用語集
- [用語1]: [説明]
- [用語2]: [説明]
### 13.2 参考資料
- AWS Well-Architected Framework: https://aws.amazon.com/architecture/well-architected/
- IPA非機能要求グレード: https://www.ipa.go.jp/sec/softwareengineering/std/ent03-b.html
- [その他参考資料]
AWS非機能要件定義書
あえて細かく指定せず必要最小限の指示を投げ、AWS非機能要件定義書テンプレートをベースにAWS非機能要件定義書を作成させてみました。
1_要件定義/AWS非機能要件定義書テンプレート.mdを元に、
1_要件定義/AWS非機能要件定義書.mdを作成してください。
- 365日24時間停止を許さないミッションクリティカルな環境を日本国内に構築
- ネットワークはオンプレ又は複数アカウントのシステムからのアクセスがありDirectConnect、TansitGatewayを経由した閉域網の環境
- システムはALB、Fargate、Aurora(PostgreSQL)をメインとした構成
- コストは可能な範囲で抑える
- セキュリティの考慮面はAWSのベストプラクティスに沿って提案してください
1_要件定義/AWS非機能要件定義書.md
# AWS非機能要件定義書
## 文書情報
| 項目 | 内容 |
|------|------|
| 文書名 | AWS非機能要件定義書 |
| 作成日 | 2025/06/23 |
| 最終更新日 | 2025/06/23 |
| バージョン | 1.0 |
| 作成者 | AWS設計チーム |
| 承認者 | プロジェクト管理者 |
## 1. はじめに
### 1.1 目的
本書は、ミッションクリティカルシステムの非機能要件を定義するものである。AWS Well-Architected FrameworkとIPAの非機能要求グレードを組み合わせた観点から、システムが満たすべき非機能要件を明確にする。
### 1.2 対象範囲
本書が対象とするシステムの範囲は以下の通りである。
- ALB、Fargate、Aurora(PostgreSQL)を中心としたミッションクリティカルシステム
- DirectConnect、TransitGatewayを経由した閉域網環境
- 日本国内に構築するAWSリソース全般
### 1.3 前提条件
- 365日24時間の稼働が求められるミッションクリティカルなシステムである
- オンプレミスまたは複数アカウントのシステムからのアクセスがある
- DirectConnect、TransitGatewayを経由した閉域網環境である
- コストは可能な範囲で抑えつつ、高可用性と信頼性を確保する
### 1.4 関連文書
- システム要件定義書
- AWS Well-Architected Framework
- AWS セキュリティベストプラクティス
- IPA非機能要求グレード
## 2. システム概要
### 2.1 システム構成図
[オンプレミス/他アカウント] --- [DirectConnect] --- [TransitGateway] --- [VPC]
|
|--- [ALB(マルチAZ)]
| |
| |--- [Fargate(マルチAZ)]
| |
|--- [Aurora PostgreSQL(マルチAZ)]
### 2.2 主要コンポーネント
- **Application Load Balancer (ALB)**: フロントエンドのロードバランサー、複数のアベイラビリティゾーンにデプロイ
- **AWS Fargate**: コンテナ化されたアプリケーションを実行するサーバーレスコンピューティングエンジン
- **Amazon Aurora PostgreSQL**: 高可用性と耐久性を備えたマネージドリレーショナルデータベース
- **AWS Direct Connect**: オンプレミス環境とAWS間の専用ネットワーク接続
- **AWS Transit Gateway**: 複数のVPCとオンプレミスネットワークを接続するハブ
## 3. 信頼性要件(Reliability)
### 3.1 可用性要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| サービス稼働率 | REL-01 | システム全体の稼働率 | 99.99%(年間ダウンタイム約52分以内) | マルチAZ構成、Auto Scaling、Aurora Multi-AZ | ミッションクリティカルシステムのため高可用性が必須 |
| 計画停止 | REL-02 | 定期メンテナンス時間 | ゼロダウンタイムメンテナンス | Blue/Greenデプロイメント、ローリングアップデート | 計画停止を伴わないメンテナンス手法の採用 |
| 障害復旧時間(RTO) | REL-03 | 障害発生から復旧までの目標時間 | 重大障害時 15分以内 | 自動フェイルオーバー、Aurora自動復旧、Fargateタスク自動再起動 | 自動復旧メカニズムの活用 |
| 目標復旧時点(RPO) | REL-04 | データ損失の許容範囲 | 1分以内のデータ損失まで許容 | Aurora連続バックアップ、トランザクションログのレプリケーション | データ整合性の確保 |
### 3.2 耐障害性要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 単一障害点の排除 | REL-05 | 単一障害点となる要素の特定と対策 | すべての単一障害点の排除 | マルチAZ構成、ALBの冗長化、Aurora Multi-AZ | インフラストラクチャレベルでの冗長性確保 |
| 障害検知 | REL-06 | システム障害の検知方法 | 30秒以内に障害を検知 | CloudWatch詳細モニタリング、ヘルスチェック、Route 53ヘルスチェック | 早期障害検知による迅速な対応 |
| 自動復旧 | REL-07 | 障害時の自動復旧機能 | インフラ障害の自動復旧 | Auto Scaling、Fargateタスク自動再起動、Aurora自動フェイルオーバー | 人的介入なしでの復旧メカニズム |
### 3.3 災害対策要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 災害復旧計画 | REL-08 | 大規模災害時の復旧計画 | リージョン障害時の復旧手順策定 | Pilot Light DR戦略、東京/大阪リージョン間のレプリケーション | 日本国内の地理的冗長性 |
| バックアップ | REL-09 | データバックアップの方針 | 日次バックアップ、35日保持、ポイントインタイムリカバリ | AWS Backup、Aurora自動バックアップ、S3クロスリージョンレプリケーション | データ復旧能力の確保 |
## 4. パフォーマンス効率要件(Performance Efficiency)
### 4.1 処理性能要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| レスポンス時間 | PERF-01 | ユーザー操作に対するレスポンス時間 | 画面表示 1秒以内、検索処理 2秒以内 | Aurora読み取りレプリカ、ElastiCache、効率的なクエリ設計 | ユーザー体験の最適化 |
| スループット | PERF-02 | 単位時間あたりの処理件数 | 1秒あたり2000リクエスト処理 | ALBのスケーリング、Fargateタスク数の自動調整 | 負荷変動への対応 |
| バッチ処理時間 | PERF-03 | バッチ処理の完了時間 | 日次バッチ処理を2時間以内に完了 | 並列処理、Step Functions、Fargateタスクの最適化 | 業務処理の時間内完了 |
### 4.2 拡張性要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| スケーラビリティ | PERF-04 | 負荷増加時の対応 | 負荷に応じて自動的にリソースを増減 | Fargateタスクの自動スケーリング、Aurora Auto Scaling | リソースの効率的な利用 |
| 将来の成長対応 | PERF-05 | 将来的なユーザー/データ増加への対応 | 年間30%の成長に対応可能な設計 | Aurora Global Database、水平スケーリング設計 | 長期的な成長への対応 |
### 4.3 リソース最適化
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| リソース選定 | PERF-06 | 適切なAWSリソースの選定 | ワークロードに最適なFargateリソース設定 | 負荷テストに基づくリソース設定、AWS Compute Optimizer | コスト効率と性能のバランス |
| キャッシュ戦略 | PERF-07 | キャッシュの活用方針 | 頻繁にアクセスされるデータのキャッシュ化 | ElastiCache for Redis、Aurora読み取りレプリカ | 読み取り性能の向上 |
## 5. セキュリティ要件(Security)
### 5.1 認証・認可要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ユーザー認証 | SEC-01 | ユーザー認証方式 | 多要素認証の実装、SSO対応 | Amazon Cognito、AWS IAM Identity Center | セキュアなアクセス制御 |
| アクセス制御 | SEC-02 | リソースへのアクセス制御 | 最小権限の原則に基づくアクセス制御 | IAMロール、リソースポリシー、タグベースのアクセス制御 | 権限の最小化 |
| APIセキュリティ | SEC-03 | API呼び出しの保護 | 認証されたAPIアクセスのみ許可 | IAM認証、JWT認証、APIリクエスト制限 | 不正アクセスの防止 |
### 5.2 データ保護要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 保存データ暗号化 | SEC-04 | 保存データの暗号化方針 | すべての保存データを暗号化 | Aurora暗号化、EFSの暗号化、KMS | データ保護の強化 |
| 転送データ暗号化 | SEC-05 | 転送中データの暗号化方針 | すべての通信をTLS 1.2以上で暗号化 | HTTPS、TLS 1.3、AWS PrivateLink | 通信の保護 |
| 個人情報保護 | SEC-06 | 個人情報の取り扱い | 個人情報の匿名化、最小限の収集 | データマスキング、アクセス制限、監査ログ | プライバシー保護 |
### 5.3 インフラストラクチャ保護
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ネットワークセキュリティ | SEC-07 | ネットワーク保護方針 | 不要なポートの遮断、トラフィックフィルタリング | セキュリティグループ、NACLs、VPCエンドポイント | 境界防御の強化 |
| 脆弱性管理 | SEC-08 | 脆弱性の検出と対応 | 定期的な脆弱性スキャンと修正 | Amazon Inspector、ECRイメージスキャン、AWS Security Hub | 脆弱性の早期発見 |
| DDoS対策 | SEC-09 | DDoS攻撃への対策 | DDoS攻撃からの保護 | AWS Shield Standard、セキュリティグループ制限 | サービス可用性の確保 |
### 5.4 検出と対応
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ログ管理 | SEC-10 | セキュリティログの収集と分析 | すべてのセキュリティイベントの記録と分析 | CloudTrail、CloudWatch Logs、Amazon OpenSearch | 監査証跡の確保 |
| インシデント対応 | SEC-11 | セキュリティインシデント対応計画 | インシデント対応手順の策定と定期的な訓練 | AWS Security Incident Response Guide、定期的な訓練 | 迅速な対応体制 |
## 6. コスト最適化要件(Cost Optimization)
### 6.1 コスト管理
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| コスト見積もり | COST-01 | 初期および運用コストの見積もり | 月間運用コストの予測と管理 | AWS Pricing Calculator、AWS Budgets、コスト異常検出 | 予算管理の徹底 |
| コスト配分 | COST-02 | コストの部門/プロジェクト別配分 | タグベースのコスト配分 | コストタグ、Cost Explorer、コスト配分レポート | コスト可視化 |
### 6.2 リソース最適化
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| リソースサイジング | COST-03 | 適切なリソースサイズの選定 | ワークロードに最適なFargateリソース設定 | AWS Compute Optimizer、使用率モニタリング | 過剰なプロビジョニング回避 |
| 自動スケーリング | COST-04 | 需要に応じたリソース調整 | 負荷に応じたリソースの自動調整 | Fargateタスクの自動スケーリング、Aurora Auto Scaling | 効率的なリソース利用 |
### 6.3 料金モデル最適化
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 購入オプション | COST-05 | 最適な料金モデルの選定 | 長期利用リソースの予約購入 | Savings Plans、Aurora予約インスタンス | 長期コミットメントによる割引 |
| ライフサイクル管理 | COST-06 | 不要リソースの特定と削除 | 未使用リソースの定期的な特定と削除 | AWS Trusted Advisor、タグベースの自動化、定期的なリソース監査 | 無駄の排除 |
## 7. 運用上の優秀性要件(Operational Excellence)
### 7.1 運用設計
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 運用モデル | OPS-01 | 運用体制と役割分担 | 24時間365日の運用体制確立 | オンコール体制、エスカレーションプロセス、運用手順書 | 継続的な運用体制 |
| 自動化 | OPS-02 | 運用作業の自動化範囲 | デプロイ、スケーリング、バックアップの自動化 | AWS Systems Manager、CloudFormation、EventBridge | 人的ミス削減 |
### 7.2 監視・運用管理
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| モニタリング | OPS-03 | システム監視の方針 | 主要メトリクスの定義と監視 | CloudWatch、X-Ray、合成モニタリング | 異常の早期検出 |
| アラート | OPS-04 | アラート通知の基準と方法 | 重要度別のアラート定義と通知先 | CloudWatch Alarms、SNS、OpsCenter | 適切な通知設計 |
| ログ管理 | OPS-05 | ログ収集・分析・保存方針 | 集中ログ管理、90日間の保存 | CloudWatch Logs、S3、Athena | 問題分析の迅速化 |
### 7.3 変更管理
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| デプロイ戦略 | OPS-06 | アプリケーションデプロイ方法 | ゼロダウンタイムデプロイの実現 | Blue/Green、カナリアデプロイ、ECS Rolling Update | サービス継続性の確保 |
| 構成管理 | OPS-07 | インフラストラクチャの構成管理 | IaC(Infrastructure as Code)の採用 | CloudFormation、CDK、AWS Config | 構成の一貫性確保 |
| テスト戦略 | OPS-08 | 本番環境変更前のテスト方針 | 自動テスト、負荷テストの実施 | テスト環境、CI/CD、カオスエンジニアリング | 変更リスクの低減 |
## 8. 持続可能性要件(Sustainability)
### 8.1 環境負荷低減
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| エネルギー効率 | SUS-01 | エネルギー効率の最適化 | リソース使用率の最適化 | Fargateの効率的な設定、自動スケーリング | 環境負荷の低減 |
| カーボンフットプリント | SUS-02 | CO2排出量の削減目標 | 前年比5%削減 | AWS Carbon Footprint Tool、リソース効率化 | 環境への配慮 |
### 8.2 リソース効率
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| ハードウェア効率 | SUS-03 | ハードウェアリソースの効率的利用 | リソース使用率の最適化 | Fargateのコンテナ化、リソース使用率モニタリング | 効率的なリソース利用 |
| データ管理 | SUS-04 | データライフサイクル管理 | 不要データの定期的な削除 | Aurora自動バックアップ保持期間設定、S3ライフサイクルポリシー | ストレージ効率化 |
## 9. 移行性要件(IPA非機能要求グレード)
### 9.1 移行計画
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 移行戦略 | MIG-01 | 既存システムからの移行方法 | 段階的移行、最小ダウンタイム | AWS Migration Hub、AWS DMS、段階的カットオーバー | サービス継続性の確保 |
| データ移行 | MIG-02 | データ移行の方法と検証 | データ整合性の確保、検証プロセスの確立 | AWS DMS、データ検証スクリプト、並行運用期間の設定 | データ品質の確保 |
### 9.2 互換性
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 外部システム連携 | MIG-03 | 外部システムとの互換性確保 | 既存APIとの互換性維持 | API Gateway、変換レイヤー、互換性テスト | 連携システムへの影響最小化 |
| クライアント互換性 | MIG-04 | クライアントアプリケーションとの互換性 | 既存クライアントの動作保証 | 互換性テスト、段階的移行、フォールバック計画 | エンドユーザー影響の最小化 |
## 10. 法令・規制要件
### 10.1 コンプライアンス
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| 法令遵守 | COMP-01 | 適用される法令・規制の特定と遵守 | 個人情報保護法、業界規制への対応 | AWS Artifact、コンプライアンスチェックリスト、定期的な監査 | 法的リスクの回避 |
| 監査対応 | COMP-02 | 監査証跡の確保 | アクセスログの保存と監査対応 | CloudTrail、Config、証跡の長期保存 | 説明責任の確保 |
### 10.2 地域固有要件
| 項目 | 要件ID | 要件内容 | 達成目標 | 実現方法 | 備考 |
|------|--------|----------|----------|----------|------|
| データ所在地 | COMP-03 | データ保存地域の制約 | 日本国内でのデータ保持 | 東京リージョン利用、データレジデンシー管理 | 法令遵守 |
| 多言語対応 | COMP-04 | 多言語対応 | 日本語・英語対応 | i18n対応、Unicode、地域設定 | グローバル対応 |
## 11. 非機能要件の優先度とトレードオフ
| 要件カテゴリ | 優先度 | トレードオフの考慮事項 |
|------------|--------|----------------------|
| 信頼性 | 高 | コスト最適化とのバランス:高可用性を確保しつつ、過剰な冗長性は避ける |
| パフォーマンス効率 | 中 | コストとのバランス:必要十分なパフォーマンスを確保しつつ、過剰なリソース割り当ては避ける |
| セキュリティ | 高 | 利便性とのバランス:セキュリティを確保しつつ、運用の複雑さを最小限に抑える |
| コスト最適化 | 中 | 信頼性とのバランス:コスト削減を図りつつ、必要な冗長性と性能は確保する |
| 運用上の優秀性 | 高 | 初期開発コストとのバランス:自動化による運用効率化を図りつつ、開発期間とコストを考慮する |
| 持続可能性 | 低 | コストとのバランス:環境負荷低減を図りつつ、システム要件を満たすことを優先する |
| 移行性 | 中 | 開発スピードとのバランス:移行の容易さを確保しつつ、開発効率も考慮する |
| 法令・規制 | 高 | コストとのバランス:法令遵守は必須としつつ、過剰な対応は避ける |
## 12. 非機能要件検証計画
| 要件ID | 検証方法 | 検証環境 | 検証基準 | 検証時期 |
|--------|----------|----------|----------|----------|
| REL-01 | 負荷テスト、フェイルオーバーテスト | ステージング環境 | 99.99%の可用性確認 | 本番リリース前、四半期ごと |
| REL-03 | 障害注入テスト | ステージング環境 | 15分以内の自動復旧確認 | 本番リリース前、半年ごと |
| PERF-01 | 負荷テスト、パフォーマンステスト | ステージング環境 | レスポンス時間1秒以内 | 本番リリース前、機能追加時 |
| SEC-04 | セキュリティ監査、暗号化検証 | 全環境 | すべてのデータが暗号化されていることを確認 | 本番リリース前、設定変更時 |
| SEC-07 | ペネトレーションテスト | ステージング環境 | 脆弱性なし | 本番リリース前、年次 |
| COST-03 | リソース使用率分析 | 本番環境 | リソース使用率の最適化 | 四半期ごと |
| OPS-03 | モニタリング検証 | 全環境 | すべての主要メトリクスが監視されていることを確認 | 本番リリース前、設定変更時 |
## 13. 付録
### 13.1 用語集
- **ALB**: Application Load Balancer
- **Fargate**: AWSのサーバーレスコンテナ実行環境
- **Aurora**: AWSのマネージドリレーショナルデータベースサービス
- **DirectConnect**: AWSへの専用ネットワーク接続
- **TransitGateway**: 複数のVPCとオンプレミスネットワークを接続するサービス
- **マルチAZ**: 複数のアベイラビリティゾーンにわたるデプロイメント
- **RPO**: Recovery Point Objective(目標復旧時点)
- **RTO**: Recovery Time Objective(目標復旧時間)
### 13.2 参考資料
- AWS Well-Architected Framework: https://aws.amazon.com/architecture/well-architected/
- IPA非機能要求グレード: https://www.ipa.go.jp/sec/softwareengineering/std/ent03-b.html
- AWS セキュリティのベストプラクティス: https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html
- AWS 高可用性アーキテクチャ設計: https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html
基本設計
基本設計書_テンプレート
基本設計書へ起こす前に目次を作成しておきます。
基本設計書を作成する前に目次を作成して下さい。
なお、AWSに限った目次ではなく、一般的な基本設計書の目次にして下さい。
2_基本設計書/基本設計書_テンプレート.md
# 基本設計書 目次
## 1. はじめに
### 1.1 目的
### 1.2 対象範囲
### 1.3 前提条件
### 1.4 関連文書
### 1.5 用語定義
## 2. システム概要
### 2.1 システム全体像
### 2.2 業務要件
### 2.3 システム要件
### 2.4 システム構成図
### 2.5 主要コンポーネント
## 3. 全体アーキテクチャ設計
### 3.1 アーキテクチャ概要
### 3.2 システム階層構造
### 3.3 コンポーネント間連携
### 3.4 可用性設計方針
### 3.5 拡張性設計方針
### 3.6 セキュリティ設計方針
### 3.7 運用設計方針
## 4. ネットワーク設計
### 4.1 ネットワーク構成概要
### 4.2 ネットワークトポロジ
### 4.3 サブネット設計
### 4.4 ネットワーク冗長化設計
### 4.5 閉域網接続設計
### 4.6 負荷分散設計
### 4.7 DNS設計
### 4.8 ネットワークセキュリティ設計
### 4.9 ネットワーク監視設計
## 5. アプリケーション設計
### 5.1 アプリケーション構成
### 5.2 機能コンポーネント設計
### 5.3 画面設計
### 5.4 API設計
### 5.5 コンテナ化設計
### 5.6 マイクロサービス設計
### 5.7 アプリケーションセキュリティ設計
### 5.8 認証・認可設計
### 5.9 セッション管理設計
### 5.10 エラー処理設計
## 6. データベース設計
### 6.1 データベース構成
### 6.2 論理データモデル
### 6.3 物理データモデル
### 6.4 テーブル定義
### 6.5 インデックス設計
### 6.6 トランザクション設計
### 6.7 データベース冗長化設計
### 6.8 データベースセキュリティ設計
### 6.9 データバックアップ設計
### 6.10 データベース性能最適化設計
## 7. インフラストラクチャ設計
### 7.1 インフラストラクチャ構成
### 7.2 コンピューティングリソース設計
### 7.3 ストレージ設計
### 7.4 クラウドサービス利用設計
### 7.5 オンプレミス連携設計
### 7.6 スケーリング設計
### 7.7 リソース管理設計
### 7.8 インフラストラクチャセキュリティ設計
## 8. セキュリティ設計
### 8.1 セキュリティ基本方針
### 8.2 多層防御設計
### 8.3 アクセス制御設計
### 8.4 暗号化設計
### 8.5 脆弱性対策設計
### 8.6 ログ管理・監査設計
### 8.7 セキュリティ監視設計
### 8.8 インシデント対応計画
### 8.9 コンプライアンス対応設計
## 9. 可用性・継続性設計
### 9.1 可用性要件
### 9.2 単一障害点の排除設計
### 9.3 冗長化設計
### 9.4 災害対策(DR)設計
### 9.5 バックアップ・リストア設計
### 9.6 障害検知設計
### 9.7 自動復旧設計
### 9.8 業務継続計画(BCP)
## 10. 性能・拡張性設計
### 10.1 性能要件
### 10.2 キャパシティ計画
### 10.3 スケーラビリティ設計
### 10.4 キャッシュ設計
### 10.5 非同期処理設計
### 10.6 バッチ処理設計
### 10.7 性能監視設計
### 10.8 性能チューニング方針
## 11. 運用・保守設計
### 11.1 運用体制
### 11.2 監視設計
### 11.3 アラート設計
### 11.4 ログ管理設計
### 11.5 バックアップ運用設計
### 11.6 障害対応手順
### 11.7 変更管理プロセス
### 11.8 リリース管理設計
### 11.9 構成管理設計
### 11.10 パッチ管理設計
### 11.11 キャパシティ管理
## 12. 開発・テスト環境設計
### 12.1 環境構成
### 12.2 開発環境設計
### 12.3 テスト環境設計
### 12.4 ステージング環境設計
### 12.5 CI/CD設計
### 12.6 テスト自動化設計
### 12.7 環境間データ連携設計
## 13. 移行計画
### 13.1 移行戦略
### 13.2 移行フェーズ
### 13.3 データ移行設計
### 13.4 カットオーバー計画
### 13.5 ロールバック計画
### 13.6 移行リスク対策
## 14. テスト計画
### 14.1 テスト戦略
### 14.2 テスト種別と範囲
### 14.3 テスト環境
### 14.4 テストデータ設計
### 14.5 テスト自動化方針
### 14.6 非機能テスト計画
### 14.7 受入テスト基準
## 15. コスト最適化設計
### 15.1 コスト要件
### 15.2 コスト見積もり
### 15.3 リソース最適化戦略
### 15.4 コスト監視設計
### 15.5 コスト配分設計
## 付録
### A. 設計決定事項一覧
### B. 技術的制約事項
### C. 参考資料
### D. 変更履歴
基本設計書
要件定義を元に基本設計を作成させてみます。
1_要件定義/AWS非機能要件定義書.mdを元に、
2_基本設計/基本設計書_テンプレート.mdを使って、
2_基本設計/基本設計書.mdを作成して下さい。
QiitaもMarkdownを利用されており、その都合上結果は一番最後に記載します。
詳細設計
詳細設計書と後で単体試験をできるようにパラメータを外出しにして作成しておきます。
2_基本設計/基本設計書.mdを元に、
3_詳細設計に詳細設計書を作成します。
- 後で単体試験を行いやすいようにに、各機能ごとにファイルを分割します
- 各機能の説明は、Markdown形式で記載します
- パラメータはParameter,Expected,Actual,Result,Remarksのカラムとし、csv形式で記載し外出しで管理します。ParameterはCloudFormationのパラメータの記載にして下さい
詳細設計書の項目が多いため、一部の記載のみにしますが、作成されたものは以下の通りです。
3_詳細設計/01_ネットワーク設計/01_VPC設計_パラメータ.csv
Parameter,Expected,Actual,Result,Remarks
Vpc.Tags[?Key==`Name`].Value[0],mission-critical-vpc,,,命名規則に準拠
Vpc.CidrBlock,10.0.0.0/16,,,65,536 IPアドレス
Vpc.AvailabilityZone,ap-northeast-1,,,プライマリリージョン(東京)
Vpc.InstanceTenancy,default,,,専有ハードウェアは不要
Vpc.EnableDnsHostnames,true,,,VPC内のリソースにDNSホスト名を自動割り当て
Vpc.EnableDnsSupport,true,,,VPC内のDNS解決を有効化
DrVpc.Tags[?Key==`Name`].Value[0],mission-critical-vpc-dr,,,命名規則に準拠
DrVpc.CidrBlock,10.1.0.0/16,,,65,536 IPアドレス
DrVpc.AvailabilityZone,ap-northeast-3,,,DRリージョン(大阪)
InternetGateway.Tags[?Key==`Name`].Value[0],mission-critical-igw,,,命名規則に準拠
NatGateway1a.Tags[?Key==`Name`].Value[0],mission-critical-natgw-1a,,,命名規則に準拠(AZ-1a)
NatGateway1c.Tags[?Key==`Name`].Value[0],mission-critical-natgw-1c,,,命名規則に準拠(AZ-1c)
FlowLog.Tags[?Key==`Name`].Value[0],mission-critical-vpc-flowlog,,,命名規則に準拠
FlowLog.LogRetention,90,,,セキュリティ要件に基づく保持期間
VpcEndpoint[?ServiceName==`com.amazonaws.ap-northeast-1.s3`].VpcEndpointType,Gateway,,,S3アクセス用
VpcEndpoint[?ServiceName==`com.amazonaws.ap-northeast-1.dynamodb`].VpcEndpointType,Gateway,,,DynamoDBアクセス用
VpcEndpoint[?ServiceName==`com.amazonaws.ap-northeast-1.ecr.api`].VpcEndpointType,Interface,,,ECR APIアクセス用
VpcEndpoint[?ServiceName==`com.amazonaws.ap-northeast-1.ecr.dkr`].VpcEndpointType,Interface,,,ECR Dockerアクセス用
VpcEndpoint[?ServiceName==`com.amazonaws.ap-northeast-1.logs`].VpcEndpointType,Interface,,,CloudWatch Logsアクセス用
VpcEndpoint[?ServiceName==`com.amazonaws.ap-northeast-1.ssm`].VpcEndpointType,Interface,,,Systems Managerアクセス用
Vpc.Tags[?Key==`Environment`].Value[0],production,,,環境識別用
Vpc.Tags[?Key==`Project`].Value[0],MissionCriticalSystem,,,プロジェクト識別用
Vpc.Tags[?Key==`CostCenter`].Value[0],IT-Infrastructure,,,コスト配分用
Vpc.Tags[?Key==`Owner`].Value[0],InfraTeam,,,管理責任者
3_詳細設計/01_ネットワーク設計/01_VPC設計.md
# VPC設計
## 1. 概要
本設計書では、ミッションクリティカルシステムのVPC(Virtual Private Cloud)設計について詳細を定義する。VPCは、AWS上に構築される仮想ネットワークであり、システムの基盤となるネットワークインフラストラクチャを提供する。
## 2. 設計方針
- 高可用性と耐障害性を確保するためのマルチAZ構成
- セキュリティを考慮したネットワークセグメンテーション
- 将来の拡張性を考慮したCIDRブロック設計
- DirectConnectとTransitGatewayを活用した閉域網接続
- 最小権限の原則に基づくネットワークアクセス制御
## 3. VPC構成
### 3.1 VPC基本情報
本システムでは、プライマリリージョン(東京)とDRリージョン(大阪)にそれぞれVPCを構築する。プライマリVPCは「mission-critical-vpc」という名前で、CIDRブロックは10.0.0.0/16を使用する。DR用VPCは「mission-critical-vpc-dr」という名前で、CIDRブロックは10.1.0.0/16を使用する。
両VPCともに、DNSホスト名とDNSサポートを有効化し、テナンシーはデフォルト(共有ハードウェア)を使用する。
## 4. VPCコンポーネント
### 4.1 インターネットゲートウェイ
プライマリVPCには「mission-critical-igw」という名前のインターネットゲートウェイを接続し、パブリックサブネットからのインターネット接続を可能にする。
### 4.2 NATゲートウェイ
プライベートサブネットからのアウトバウンド通信を可能にするため、各アベイラビリティゾーンのパブリックサブネットにNATゲートウェイを配置する。AZ-1aには「mission-critical-natgw-1a」、AZ-1cには「mission-critical-natgw-1c」という名前のNATゲートウェイを配置し、それぞれにElastic IPを割り当てる。
### 4.3 VPCエンドポイント
AWS サービスへのプライベート接続を提供するため、以下のVPCエンドポイントを設定する:
- S3: Gatewayタイプ
- DynamoDB: Gatewayタイプ
- ECR API: Interfaceタイプ(プライベートアプリケーションサブネットに配置)
- ECR Docker: Interfaceタイプ(プライベートアプリケーションサブネットに配置)
- CloudWatch Logs: Interfaceタイプ(プライベートアプリケーションサブネットに配置)
- Systems Manager: Interfaceタイプ(プライベートアプリケーションサブネットに配置)
### 4.4 VPCフローログ
ネットワークトラフィックの監視と分析のため、「mission-critical-vpc-flowlog」という名前のVPCフローログを設定する。ログはCloudWatch Logsに送信し、保持期間は90日とする。すべてのトラフィック(許可・拒否)を記録し、AWS Flow Log 形式バージョン2を使用する。
## 5. VPCピアリング
本システムでは、TransitGatewayを使用して複数VPC間の接続を行うため、VPCピアリングは使用しない。
## 6. VPCタグ
リソース管理とコスト配分のため、以下のタグを設定する:
- Name: mission-critical-vpc
- Environment: production
- Project: MissionCriticalSystem
- CostCenter: IT-Infrastructure
- Owner: InfraTeam
## 7. 設定パラメータ
設定パラメータは別ファイル「01_VPC設計_パラメータ.csv」に定義しています。
## 8. 関連ドキュメント
- AWS VPC ドキュメント: https://docs.aws.amazon.com/vpc/
- AWS Well-Architected Framework - セキュリティの柱: https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html
- AWS ネットワーキングベストプラクティス: https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/welcome.html
文書情報
項目 | 内容 |
---|---|
文書名 | 基本設計書 |
作成日 | 2025/06/24 |
最終更新日 | 2025/06/24 |
バージョン | 1.0 |
作成者 | システム設計チーム |
承認者 | プロジェクト管理者 |
1. はじめに
1.1 目的
本書は、365日24時間停止を許さないミッションクリティカルなシステムの基本設計を定義するものである。システムの全体アーキテクチャ、各コンポーネントの設計方針、および非機能要件を満たすための設計について記述する。
1.2 対象範囲
本書が対象とするシステムの範囲は以下の通りである。
- ALB、Fargate、Aurora(PostgreSQL)を中心としたミッションクリティカルシステム
- DirectConnect、TransitGatewayを経由した閉域網環境
- 日本国内に構築するAWSリソース全般
1.3 前提条件
- 365日24時間の稼働が求められるミッションクリティカルなシステムである
- オンプレミスまたは複数アカウントのシステムからのアクセスがある
- DirectConnect、TransitGatewayを経由した閉域網環境である
- コストは可能な範囲で抑えつつ、高可用性と信頼性を確保する
1.4 関連文書
- AWS非機能要件定義書
- システム要件定義書
- AWS Well-Architected Framework
- AWS セキュリティベストプラクティス
1.5 用語定義
- ALB: Application Load Balancer
- Fargate: AWSのサーバーレスコンテナ実行環境
- Aurora: AWSのマネージドリレーショナルデータベースサービス
- DirectConnect: AWSへの専用ネットワーク接続
- TransitGateway: 複数のVPCとオンプレミスネットワークを接続するサービス
- マルチAZ: 複数のアベイラビリティゾーンにわたるデプロイメント
- RPO: Recovery Point Objective(目標復旧時点)
- RTO: Recovery Time Objective(目標復旧時間)
2. システム概要
2.1 システム全体像
本システムは、高可用性と耐障害性を備えたミッションクリティカルなシステムである。オンプレミス環境や他のAWSアカウントからの安全なアクセスを実現するため、DirectConnectとTransitGatewayを活用した閉域網環境を構築する。アプリケーション層はコンテナ化されFargateで実行され、データ層はAurora PostgreSQLで構成される。
2.2 業務要件
- 365日24時間の安定稼働
- 障害発生時の迅速な復旧(RTO: 15分以内)
- データ損失の最小化(RPO: 1分以内)
- セキュアなデータ管理
- 将来的な成長に対応可能なスケーラビリティ
2.3 システム要件
- サービス稼働率: 99.99%(年間ダウンタイム約52分以内)
- レスポンス時間: 画面表示1秒以内、検索処理2秒以内
- スループット: 1秒あたり2000リクエスト処理
- データ保護: すべての保存データと転送データの暗号化
- 監視: 30秒以内の障害検知
2.4 システム構成図
┌─────────────────┐ ┌───────────────┐ ┌───────────────────┐
│ │ │ │ │ │
│ オンプレミス/ │ │ │ │ │
│ 他アカウント ├─────┤ DirectConnect ├─────┤ TransitGateway │
│ │ │ │ │ │
└─────────────────┘ └───────────────┘ └─────────┬─────────┘
│
▼
┌───────────────────┐
│ │
│ VPC │
│ │
└─────────┬─────────┘
│
┌───────────────────────────────┼───────────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│ │ │ │ │ │
│ ALB (マルチAZ) │ │ ALB (マルチAZ) │ │ Aurora PostgreSQL │
│ │ │ │ │ (マルチAZ) │
└─────────┬─────────┘ └─────────┬─────────┘ └───────────────────┘
│ │ ▲
▼ ▼ │
┌───────────────────┐ ┌───────────────────┐ │
│ │ │ │ │
│ Fargate (AZ-1) │ │ Fargate (AZ-2) │ │
│ ├─────────┼───────────────────┼───────────────────┘
└───────────────────┘ └───────────────────┘
2.5 主要コンポーネント
- ネットワーク層: DirectConnect、TransitGateway、VPC、サブネット、セキュリティグループ
- アプリケーション層: ALB、Fargate、コンテナ化アプリケーション
- データ層: Aurora PostgreSQL(マルチAZ構成)
- 運用管理層: CloudWatch、AWS Backup、Systems Manager
3. 全体アーキテクチャ設計
3.1 アーキテクチャ概要
本システムは、マイクロサービスアーキテクチャを採用し、コンテナ技術を活用して柔軟性と拡張性を確保する。データベースはマルチAZ構成のAurora PostgreSQLを採用し、高可用性と耐障害性を実現する。ネットワークはDirectConnectとTransitGatewayを活用した閉域網環境を構築し、セキュリティを確保する。
3.2 システム階層構造
システムは以下の階層で構成される:
-
プレゼンテーション層
- ALBによるロードバランシング
- WAFによるWebアプリケーション保護
-
アプリケーション層
- Fargateで実行されるコンテナ化アプリケーション
- マイクロサービスアーキテクチャ
-
データアクセス層
- データアクセスロジック
- キャッシュ機構(ElastiCache)
-
データ層
- Aurora PostgreSQL(マルチAZ構成)
- S3(バックアップ、ログ保存)
-
運用管理層
- 監視(CloudWatch)
- バックアップ(AWS Backup)
- 構成管理(AWS Config)
3.3 コンポーネント間連携
コンポーネント間の主な連携は以下の通り:
-
クライアント → ALB
- HTTPS通信(TLS 1.2以上)
- WAFによるフィルタリング
-
ALB → Fargateコンテナ
- ヘルスチェックによる正常性確認
- ロードバランシングによる負荷分散
-
Fargateコンテナ → Aurora PostgreSQL
- コネクションプーリングによる効率的な接続管理
- 読み取り/書き込み分離
-
Fargateコンテナ → ElastiCache
- 頻繁にアクセスされるデータのキャッシュ
- セッション情報の保存
3.4 可用性設計方針
可用性を確保するための主な設計方針は以下の通り:
-
マルチAZ構成
- ALB、Fargate、Aurora PostgreSQLをマルチAZにデプロイ
- 単一障害点の排除
-
自動フェイルオーバー
- Aurora PostgreSQLの自動フェイルオーバー
- ALBによる異常インスタンスの自動検出と切り離し
-
自動スケーリング
- Fargateタスクの自動スケーリング
- Aurora Auto Scaling
-
ゼロダウンタイムデプロイ
- Blue/Greenデプロイメント
- ローリングアップデート
-
障害検知と自動復旧
- CloudWatch詳細モニタリング
- 自動復旧メカニズム
3.5 拡張性設計方針
拡張性を確保するための主な設計方針は以下の通り:
-
水平スケーリング
- Fargateタスク数の自動調整
- Aurora読み取りレプリカの追加
-
マイクロサービスアーキテクチャ
- サービスの独立したスケーリング
- 疎結合な設計
-
キャッシュ戦略
- ElastiCacheによるデータキャッシュ
- 読み取り負荷の分散
-
非同期処理
- SQSを活用した非同期処理
- バッチ処理の並列化
-
データベース最適化
- シャーディング対応設計
- 効率的なインデックス設計
3.6 セキュリティ設計方針
セキュリティを確保するための主な設計方針は以下の通り:
-
多層防御
- ネットワークセキュリティ(セキュリティグループ、NACL)
- アプリケーションセキュリティ(WAF、入力検証)
- データセキュリティ(暗号化、アクセス制御)
-
最小権限の原則
- IAMロールとポリシーによる権限の最小化
- タスク実行ロールの適切な設定
-
データ保護
- 保存データの暗号化(Aurora暗号化、S3暗号化)
- 転送データの暗号化(TLS 1.2以上)
-
認証と認可
- 多要素認証
- ロールベースのアクセス制御
-
監査とモニタリング
- CloudTrailによる監査ログ
- CloudWatch Logsによるログ集中管理
3.7 運用設計方針
効率的な運用を実現するための主な設計方針は以下の通り:
-
自動化
- インフラストラクチャのコード化(IaC)
- CI/CDパイプラインの構築
- 自動バックアップと復元
-
監視とアラート
- リアルタイムモニタリング
- 異常検知と自動通知
- ダッシュボードによる可視化
-
ログ管理
- 集中ログ管理
- ログの長期保存と分析
-
変更管理
- 変更の追跡と承認プロセス
- ロールバック計画
-
障害対応
- インシデント対応手順の整備
- 定期的な障害訓練
4. ネットワーク設計
4.1 ネットワーク構成概要
本システムのネットワークは、オンプレミス環境や他のAWSアカウントからの安全なアクセスを実現するため、DirectConnectとTransitGatewayを活用した閉域網環境を構築する。VPC内は複数のサブネットに分割し、セキュリティとアベイラビリティを確保する。
4.2 ネットワークトポロジ
┌─────────────────────┐ ┌───────────────────┐ ┌───────────────────────┐
│ │ │ │ │ │
│ オンプレミス環境 │ │ │ │ │
│ ├─────┤ DirectConnect ├─────┤ TransitGateway │
│ │ │ │ │ │
└─────────────────────┘ └───────────────────┘ └───────────┬───────────┘
│
┌─────────────────────┐ │
│ │ │
│ 他AWSアカウント ├───────────────────────────────────────────┘
│ │
└─────────────────────┘
│
▼
┌───────────────────────┐
│ │
│ VPC │
│ │
└───────────────────────┘
│
┌───────────────────────────────────┼───────────────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│ │ │ │ │ │
│ パブリックサブネット │ │ プライベートサブネット │ │ データベースサブネット │
│ (ALB配置) │ │ (Fargate配置) │ │ (Aurora配置) │
│ │ │ │ │ │
└───────────────────┘ └───────────────────┘ └───────────────────┘
4.3 サブネット設計
VPC内のサブネットは以下のように設計する:
-
パブリックサブネット
- ALBの配置
- NAT Gatewayの配置
- 各AZに配置
-
プライベートサブネット(アプリケーション層)
- Fargateタスクの配置
- 各AZに配置
- インターネットへの直接アクセスなし
-
プライベートサブネット(データベース層)
- Aurora PostgreSQLの配置
- 各AZに配置
- アプリケーション層からのみアクセス可能
サブネット名 | CIDR | 用途 | AZ |
---|---|---|---|
public-subnet-1a | 10.0.0.0/24 | ALB、NAT Gateway | ap-northeast-1a |
public-subnet-1c | 10.0.1.0/24 | ALB、NAT Gateway | ap-northeast-1c |
private-app-subnet-1a | 10.0.2.0/24 | Fargateタスク | ap-northeast-1a |
private-app-subnet-1c | 10.0.3.0/24 | Fargateタスク | ap-northeast-1c |
private-db-subnet-1a | 10.0.4.0/24 | Aurora PostgreSQL | ap-northeast-1a |
private-db-subnet-1c | 10.0.5.0/24 | Aurora PostgreSQL | ap-northeast-1c |
4.4 ネットワーク冗長化設計
ネットワークの冗長性を確保するための設計は以下の通り:
-
マルチAZ構成
- 最低2つのアベイラビリティゾーンを使用
- 各AZに同一構成のリソースを配置
-
DirectConnect冗長化
- 複数のDirectConnect接続
- 異なる場所からの接続
-
NAT Gateway冗長化
- 各AZにNAT Gatewayを配置
- AZ障害時の自動フェイルオーバー
-
TransitGateway冗長化
- マルチAZデプロイメント
- 自動フェイルオーバー機能
4.5 閉域網接続設計
オンプレミス環境や他のAWSアカウントとの閉域網接続は以下のように設計する:
-
DirectConnect接続
- 専用線による高速・安定した接続
- 暗号化されたVPN接続のバックアップ
-
TransitGateway設定
- 複数VPCの集中管理
- ルートテーブルによるトラフィック制御
- VPC間通信の制御
-
VPCエンドポイント
- AWS サービスへのプライベート接続
- S3、DynamoDB、ECR等へのエンドポイント設定
-
PrivateLink
- 他のAWSアカウントのサービスへのプライベート接続
- インターネットを経由しない安全な接続
4.6 負荷分散設計
負荷分散は以下のように設計する:
-
ALB設定
- マルチAZ配置
- ターゲットグループによるFargateタスクへの負荷分散
- ヘルスチェックによる異常検知
-
リスナー設定
- HTTPS(ポート443)のみ許可
- TLS 1.2以上の暗号化
-
ルーティング設定
- パスベースルーティング
- ホストベースルーティング
- 優先度設定
-
セッション維持
- アプリケーションベースのセッション管理
- ElastiCacheを活用したセッション共有
4.7 DNS設計
DNSは以下のように設計する:
-
Route 53設定
- プライベートホストゾーン
- ALBへのエイリアスレコード
-
ヘルスチェック連携
- Route 53ヘルスチェック
- フェイルオーバールーティング
-
内部DNS解決
- VPC内DNSサーバー
- オンプレミスDNSとの連携
4.8 ネットワークセキュリティ設計
ネットワークセキュリティは以下のように設計する:
-
セキュリティグループ設計
- 最小権限の原則に基づく設定
- 必要なポートのみ開放
- タグベースの管理
-
NACL設計
- サブネットレベルのアクセス制御
- ステートレスフィルタリング
- 不正アクセスのブロック
-
WAF設定
- SQLインジェクション対策
- クロスサイトスクリプティング対策
- レートリミット
-
トラフィック暗号化
- TLS 1.2以上の暗号化
- 証明書管理(ACM)
4.9 ネットワーク監視設計
ネットワーク監視は以下のように設計する:
-
トラフィック監視
- VPCフローログ
- CloudWatch メトリクス
-
異常検知
- GuardDuty
- CloudWatch アラーム
-
ログ分析
- CloudWatch Logs Insights
- Athena によるクエリ
-
可視化
- CloudWatch ダッシュボード
- サードパーティ監視ツールとの連携
5. アプリケーション設計
5.1 アプリケーション構成
本システムのアプリケーションは、マイクロサービスアーキテクチャを採用し、コンテナ化されたサービスとして実装する。各サービスは独立して開発・デプロイ・スケーリングが可能であり、APIを通じて連携する。
┌─────────────────────────────────────────────────────────────────────┐
│ Application Load Balancer │
└───────────────────────────────────┬─────────────────────────────────┘
│
┌───────────────────────────────┼───────────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ │ │ │ │ │
│ 認証サービス │ │ コアサービス │ │ 管理サービス │
│ │ │ │ │ │
└─────┬───────┘ └─────┬───────┘ └─────┬───────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ │ │ │ │ │
│ ElastiCache │ │ Aurora │ │ S3 │
│ │ │ PostgreSQL │ │ │
└─────────────┘ └─────────────┘ └─────────────┘
5.2 機能コンポーネント設計
アプリケーションは以下の主要コンポーネントで構成される:
-
認証サービス
- ユーザー認証・認可
- セッション管理
- アクセス制御
-
コアサービス
- 業務ロジック
- データ処理
- 外部システム連携
-
管理サービス
- システム設定
- ユーザー管理
- 監査ログ管理
-
共通コンポーネント
- ログ管理
- エラーハンドリング
- キャッシュ管理
5.3 画面設計
画面設計の基本方針は以下の通り:
-
レスポンシブデザイン
- 様々なデバイスに対応
- モバイルファースト設計
-
ユーザビリティ
- 直感的な操作性
- アクセシビリティ対応
- 一貫性のあるUI
-
パフォーマンス
- 高速表示
- 非同期読み込み
- プログレッシブエンハンスメント
5.4 API設計
APIは以下の設計方針に基づいて実装する:
-
RESTful API設計
- リソース指向
- 適切なHTTPメソッド使用
- ステータスコードの標準化
-
API仕様
- OpenAPI(Swagger)による定義
- バージョニング
- 適切なエラーハンドリング
-
セキュリティ
- JWT認証
- レート制限
- 入力バリデーション
-
パフォーマンス
- キャッシュ制御
- ページネーション
- 部分レスポンス
5.5 コンテナ化設計
アプリケーションのコンテナ化は以下の方針で実施する:
-
コンテナイメージ設計
- 軽量ベースイメージの使用
- マルチステージビルド
- イミュータブルデザイン
-
Fargate設定
- 適切なCPU/メモリ割り当て
- オートスケーリング設定
- ヘルスチェック設定
-
コンテナオーケストレーション
- ECSサービス定義
- タスク定義
- デプロイ戦略
-
コンテナセキュリティ
- イメージスキャン
- 最小権限の原則
- シークレット管理
5.6 マイクロサービス設計
マイクロサービスアーキテクチャは以下の方針で設計する:
-
サービス分割
- ビジネスドメインに基づく分割
- 単一責任の原則
- 適切な粒度
-
サービス間通信
- 同期通信(REST API)
- 非同期通信(イベント駆動)
- サーキットブレーカー
-
データ管理
- サービスごとのデータ所有
- データ整合性の確保
- 分散トランザクション
-
サービスディスカバリ
- サービス登録と検出
- ロードバランシング
- ヘルスチェック
5.7 アプリケーションセキュリティ設計
アプリケーションセキュリティは以下の方針で設計する:
-
入力検証
- すべてのユーザー入力の検証
- SQLインジェクション対策
- XSS対策
-
認証・認可
- 多要素認証
- ロールベースアクセス制御
- セッション管理
-
データ保護
- 機密データの暗号化
- PII(個人識別情報)の保護
- データマスキング
-
セキュアコーディング
- セキュアコーディングガイドライン
- コードレビュー
- 脆弱性スキャン
5.8 認証・認可設計
認証・認可は以下の方針で設計する:
-
認証方式
- ユーザー名/パスワード認証
- 多要素認証
- SSO連携
-
認可方式
- ロールベースアクセス制御(RBAC)
- 属性ベースアクセス制御(ABAC)
- リソースレベルの権限管理
-
トークン管理
- JWTトークン
- トークンの有効期限
- トークンの更新
-
外部認証連携
- SAML連携
- OAuth/OIDC連携
- ディレクトリサービス連携
5.9 セッション管理設計
セッション管理は以下の方針で設計する:
-
セッションストア
- ElastiCacheによる分散セッション管理
- セッションの永続化
- セッションレプリケーション
-
セッションセキュリティ
- セッションタイムアウト
- セッションハイジャック対策
- セキュアクッキー設定
-
スケーラビリティ
- ステートレスアプリケーション設計
- セッションアフィニティの最小化
- 効率的なセッションデータ構造
5.10 エラー処理設計
エラー処理は以下の方針で設計する:
-
エラー検出
- 例外処理
- バリデーションエラー
- システムエラー
-
エラーレスポンス
- 標準化されたエラーフォーマット
- 適切なHTTPステータスコード
- エラーメッセージの多言語対応
-
エラーログ
- 構造化ログ
- エラーコンテキスト情報
- トレーサビリティ
-
フォールバック
- グレースフルデグラデーション
- リトライメカニズム
- サーキットブレーカー
6. データベース設計
6.1 データベース構成
本システムのデータベースは、高可用性と耐障害性を備えたAurora PostgreSQLを採用する。マルチAZ構成により、AZ障害時の自動フェイルオーバーを実現する。
┌─────────────────────────────────────────────────────────────────────┐
│ Aurora クラスター │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │
│ │ プライマリインスタンス │ ◄─── レプリケーション ───► │ レプリカインスタンス │ │
│ │ (書き込み/読み取り) │ │ (読み取り) │ │
│ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
│ AZ-1 AZ-2 │
│ │
└─────────────────────────────────────────────────────────────────────┘
6.2 論理データモデル
論理データモデルは、業務要件に基づいて以下のエンティティで構成する:
-
ユーザー管理
- ユーザー
- ロール
- 権限
-
業務データ
- 顧客
- 注文
- 商品
- 在庫
-
システム管理
- 設定
- 監査ログ
- マスタデータ
6.3 物理データモデル
物理データモデルは、パフォーマンスと拡張性を考慮して以下の方針で設計する:
-
テーブル設計
- 正規化(3NF)を基本とする
- 必要に応じて非正規化を検討
- パーティショニング戦略
-
データ型
- 適切なデータ型の選択
- JSON型の活用
- 配列型の活用
-
命名規則
- 一貫性のある命名規則
- スネークケース(snake_case)の使用
- プレフィックス/サフィックスの統一
6.4 テーブル定義
主要テーブルの定義例:
users テーブル
CREATE TABLE users (
user_id UUID PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
first_name VARCHAR(50),
last_name VARCHAR(50),
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
roles テーブル
CREATE TABLE roles (
role_id UUID PRIMARY KEY,
role_name VARCHAR(50) NOT NULL UNIQUE,
description TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
user_roles テーブル
CREATE TABLE user_roles (
user_id UUID REFERENCES users(user_id),
role_id UUID REFERENCES roles(role_id),
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, role_id)
);
6.5 インデックス設計
インデックスは以下の方針で設計する:
-
プライマリキー
- すべてのテーブルにプライマリキーを設定
- 可能な限りUUIDを使用
-
外部キー
- 参照整合性の確保
- カスケード削除/更新の適切な設定
-
検索用インデックス
- 頻繁に検索される列にインデックス作成
- 複合インデックスの活用
- 部分インデックスの活用
-
インデックス最適化
- インデックスの過剰作成を避ける
- 定期的なインデックス分析と最適化
- 不要なインデックスの削除
6.6 トランザクション設計
トランザクション管理は以下の方針で設計する:
-
ACID特性の確保
- 原子性(Atomicity)
- 一貫性(Consistency)
- 独立性(Isolation)
- 永続性(Durability)
-
分離レベル
- READ COMMITTED をデフォルトとする
- 必要に応じて SERIALIZABLE を使用
-
デッドロック対策
- トランザクションの短時間化
- 一貫したロック取得順序
- デッドロック検出と対応
-
分散トランザクション
- サガパターンの活用
- 補償トランザクション
- イベント駆動アーキテクチャ
6.7 データベース冗長化設計
データベースの冗長性を確保するための設計は以下の通り:
-
マルチAZ構成
- プライマリインスタンスとレプリカインスタンスを異なるAZに配置
- 自動フェイルオーバー設定
-
読み取りスケーリング
- 読み取り専用レプリカの追加
- 読み取りトラフィックの分散
-
バックアップ戦略
- 自動バックアップ(日次)
- 継続的バックアップ(ポイントインタイムリカバリ)
- クロスリージョンバックアップ
-
災害対策
- グローバルデータベース(リージョン間レプリケーション)
- 定期的なリストアテスト
6.8 データベースセキュリティ設計
データベースセキュリティは以下の方針で設計する:
-
アクセス制御
- 最小権限の原則
- ロールベースのアクセス制御
- アプリケーションレベルでの接続プーリング
-
データ暗号化
- 保存データの暗号化
- 転送中データの暗号化
- 列レベルの暗号化
-
監査
- データベース監査ログの有効化
- 重要操作の記録
- 異常アクセスの検知
-
ネットワークセキュリティ
- セキュリティグループによるアクセス制限
- プライベートサブネットへの配置
- VPCエンドポイントの活用
6.9 データバックアップ設計
データバックアップは以下の方針で設計する:
-
バックアップ種類
- 自動バックアップ(日次)
- 手動スナップショット(変更前)
- 継続的バックアップ(5分間隔)
-
保持期間
- 自動バックアップ:35日間
- 手動スナップショット:必要に応じて(最低90日)
- 長期保存:S3への定期エクスポート
-
リストア手順
- ポイントインタイムリカバリ
- スナップショットからのリストア
- テーブルレベルのリストア
-
バックアップ検証
- 定期的なリストアテスト
- バックアップ整合性チェック
- リカバリ訓練
6.10 データベース性能最適化設計
データベース性能を最適化するための設計は以下の通り:
-
インスタンスサイジング
- ワークロードに適したインスタンスクラスの選定
- メモリ最適化インスタンスの使用
- 定期的な使用率モニタリングと調整
-
クエリ最適化
- クエリプラン分析
- インデックス最適化
- 効率的なSQLの記述
-
接続管理
- コネクションプーリング
- 適切な最大接続数設定
- 接続タイムアウト設定
-
キャッシュ戦略
- クエリキャッシュの活用
- 結果セットキャッシュ
- アプリケーションレベルのキャッシュ
7. インフラストラクチャ設計
7.1 インフラストラクチャ構成
本システムのインフラストラクチャは、AWS上に構築し、高可用性、耐障害性、セキュリティを確保する。主要コンポーネントとして、ALB、Fargate、Aurora PostgreSQLを採用する。
┌─────────────────────────────────────────────────────────────────────┐
│ AWS クラウド │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │ │ │
│ │ ALB (マルチAZ) │────►│ Fargate (マルチAZ) │────►│ Aurora (マルチAZ) │ │
│ │ │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │ │ │
│ │ CloudWatch │ │ ElastiCache │ │ S3 │ │
│ │ │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
7.2 コンピューティングリソース設計
コンピューティングリソースは以下の方針で設計する:
-
Fargateタスク設計
- CPU/メモリ割り当て:2vCPU/4GB(初期値、負荷テストにより調整)
- タスク数:最小2、最大10(自動スケーリング)
- マルチAZ配置
-
コンテナ設計
- アプリケーションコンテナ
- サイドカーコンテナ(ログ収集、メトリクス収集)
- ヘルスチェック設定
-
自動スケーリング設計
- CPU使用率ベース(閾値:70%)
- リクエスト数ベース
- スケジュールベース(予測可能な負荷変動時)
-
デプロイ戦略
- ローリングアップデート
- Blue/Greenデプロイメント
- カナリアデプロイメント
7.3 ストレージ設計
ストレージは以下の方針で設計する:
-
データベースストレージ
- Aurora PostgreSQL:初期100GB、自動拡張設定
- ストレージタイプ:SSD
- IOPS:プロビジョンドIOPS(必要に応じて)
-
オブジェクトストレージ(S3)
- バックアップ保存
- ログアーカイブ
- 静的コンテンツ
- ライフサイクルポリシー設定
-
一時ストレージ
- Fargateエフェメラルストレージ
- コンテナ間共有が必要な場合はEFS
-
キャッシュストレージ
- ElastiCache for Redis
- インメモリデータストア
7.4 クラウドサービス利用設計
AWSサービスは以下の方針で利用する:
-
コンピューティング
- AWS Fargate:コンテナ実行環境
- AWS Lambda:イベント処理、バックグラウンド処理
-
ネットワーキング
- ALB:ロードバランシング
- DirectConnect:オンプレミス接続
- TransitGateway:ネットワークハブ
-
データベース
- Aurora PostgreSQL:リレーショナルデータベース
- ElastiCache:キャッシュ、セッション管理
-
ストレージ
- S3:オブジェクトストレージ
- EFS:必要に応じてファイルストレージ
-
監視・運用
- CloudWatch:モニタリング、ログ管理
- AWS Backup:バックアップ管理
- Systems Manager:運用管理
7.5 オンプレミス連携設計
オンプレミス環境との連携は以下の方針で設計する:
-
ネットワーク連携
- DirectConnect:専用線接続
- VPN:バックアップ接続
- TransitGateway:ルーティング管理
-
認証連携
- Active Directory連携
- SAML連携
- IAM Identity Center
-
データ連携
- データ移行:AWS DMS
- ファイル転送:AWS Transfer Family
- API連携:API Gateway
-
監視連携
- CloudWatch:統合監視
- AWS CloudTrail:監査ログ
- サードパーティ監視ツール連携
7.6 スケーリング設計
スケーリングは以下の方針で設計する:
-
水平スケーリング
- Fargateタスク数の自動調整
- Aurora読み取りレプリカの追加
- ALBキャパシティユニットの自動調整
-
垂直スケーリング
- Fargateタスクのリソース割り当て調整
- Auroraインスタンスクラスのアップグレード
-
スケーリングトリガー
- CPU使用率
- メモリ使用率
- リクエスト数/レイテンシ
- カスタムメトリクス
-
スケーリングポリシー
- ターゲット追跡スケーリング
- ステップスケーリング
- スケジュールスケーリング
7.7 リソース管理設計
リソース管理は以下の方針で設計する:
-
リソースプロビジョニング
- Infrastructure as Code(IaC)
- CloudFormation/CDK
- 環境ごとのパラメータ化
-
リソースタグ付け
- 一貫したタグ付け戦略
- コスト配分タグ
- 自動化タグ
-
リソース監視
- リソース使用率モニタリング
- コスト最適化レコメンデーション
- 異常検知
-
リソースライフサイクル管理
- 不要リソースの特定と削除
- 定期的なリソース監査
- 自動化による一時リソースの管理
7.8 インフラストラクチャセキュリティ設計
インフラストラクチャセキュリティは以下の方針で設計する:
-
アクセス制御
- IAMポリシーとロール
- 最小権限の原則
- 多要素認証
-
ネットワークセキュリティ
- セキュリティグループ
- NACLs
- VPCエンドポイント
-
データ保護
- 保存データの暗号化
- 転送中データの暗号化
- キー管理(KMS)
-
コンプライアンス
- AWS Config
- Security Hub
- 自動化されたコンプライアンスチェック
8. セキュリティ設計
8.1 セキュリティ基本方針
セキュリティの基本方針は以下の通り:
-
多層防御
- 複数のセキュリティレイヤーによる防御
- 単一障害点の排除
- 深層防御アプローチ
-
最小権限の原則
- 必要最小限の権限付与
- 定期的な権限レビュー
- 特権アクセス管理
-
セキュリティバイデザイン
- 設計段階からのセキュリティ考慮
- セキュリティ要件の明確化
- 脅威モデリング
-
継続的なセキュリティ評価
- 定期的な脆弱性スキャン
- ペネトレーションテスト
- セキュリティ監査
8.2 多層防御設計
多層防御は以下の層で構成する:
-
ネットワーク層
- 境界防御(セキュリティグループ、NACL)
- トラフィックフィルタリング
- DDoS対策
-
アプリケーション層
- WAF
- 入力検証
- APIセキュリティ
-
データ層
- データ暗号化
- アクセス制御
- データ漏洩防止
-
エンドポイント層
- コンテナセキュリティ
- ホストセキュリティ
- マルウェア対策
-
ユーザー層
- 認証・認可
- セッション管理
- 特権アクセス管理
8.3 アクセス制御設計
アクセス制御は以下の方針で設計する:
-
認証設計
- 多要素認証
- パスワードポリシー
- シングルサインオン
-
認可設計
- ロールベースアクセス制御(RBAC)
- 属性ベースアクセス制御(ABAC)
- 最小権限の原則
-
IAM設計
- サービスロール
- タスク実行ロール
- クロスアカウントロール
-
特権アクセス管理
- 特権アカウントの厳格な管理
- Just-In-Time アクセス
- セッション記録
8.4 暗号化設計
暗号化は以下の方針で設計する:
-
保存データ暗号化
- Aurora暗号化
- S3暗号化
- EFS暗号化
- KMSによる鍵管理
-
転送データ暗号化
- TLS 1.2以上
- 証明書管理(ACM)
- 安全な暗号スイート
-
アプリケーションレベル暗号化
- 機密データの暗号化
- エンドツーエンド暗号化
- トークン化
-
鍵管理
- KMSによる鍵管理
- 鍵のローテーション
- 鍵アクセス制御
8.5 脆弱性対策設計
脆弱性対策は以下の方針で設計する:
-
脆弱性管理
- 定期的な脆弱性スキャン
- パッチ管理
- 脆弱性の優先順位付けと対応
-
セキュアコーディング
- セキュアコーディングガイドライン
- コードレビュー
- 静的コード分析
-
コンテナセキュリティ
- イメージスキャン
- イミュータブルインフラストラクチャ
- 最小限のベースイメージ
-
サプライチェーンセキュリティ
- 依存関係の脆弱性チェック
- サードパーティコンポーネントの評価
- ソフトウェア部品表(SBOM)管理
8.6 ログ管理・監査設計
ログ管理と監査は以下の方針で設計する:
-
ログ収集
- 集中ログ管理
- 構造化ログ
- 重要イベントの確実な記録
-
ログ保存
- 長期保存(最低1年間)
- 改ざん防止
- 暗号化
-
ログ分析
- リアルタイム分析
- 異常検知
- セキュリティ情報イベント管理(SIEM)
-
監査証跡
- 管理操作の記録
- アクセス履歴
- 変更履歴
8.7 セキュリティ監視設計
セキュリティ監視は以下の方針で設計する:
-
リアルタイム監視
- セキュリティイベントの検知
- 異常行動の検知
- 自動アラート
-
脅威検知
- GuardDuty
- 侵入検知
- マルウェア検知
-
コンプライアンス監視
- 設定変更の監視
- コンプライアンス違反の検知
- 自動修復
-
セキュリティダッシュボード
- セキュリティ状態の可視化
- リスクスコアリング
- トレンド分析
8.8 インシデント対応計画
インシデント対応は以下の方針で設計する:
-
インシデント検知
- 自動検知
- 手動報告
- エスカレーションプロセス
-
インシデント分類
- 重大度評価
- 影響範囲の特定
- 優先順位付け
-
インシデント対応手順
- 初動対応
- 封じ込め
- 根本原因分析
- 復旧
-
事後分析
- 教訓の文書化
- プロセス改善
- 再発防止策
8.9 コンプライアンス対応設計
コンプライアンス対応は以下の方針で設計する:
-
規制要件の特定
- 適用される法令・規制の特定
- 業界標準の特定
- 要件の文書化
-
コンプライアンス管理
- コンプライアンスチェックリスト
- 定期的な評価
- 証跡の保存
-
プライバシー対応
- 個人情報保護
- データ主体の権利対応
- プライバシーバイデザイン
-
監査対応
- 内部監査
- 外部監査
- 監査証跡の維持
9. 可用性・継続性設計
9.1 可用性要件
本システムの可用性要件は以下の通り:
-
サービス稼働率
- 目標:99.99%(年間ダウンタイム約52分以内)
- 計画停止を含まない稼働率
-
計画停止
- ゼロダウンタイムメンテナンス
- 計画停止を伴わないデプロイ手法の採用
-
障害復旧時間(RTO)
- 重大障害時:15分以内
- 軽微な障害:5分以内
-
目標復旧時点(RPO)
- 1分以内のデータ損失まで許容
9.2 単一障害点の排除設計
単一障害点を排除するための設計は以下の通り:
-
マルチAZ構成
- ALB、Fargate、Aurora PostgreSQLをマルチAZにデプロイ
- 最低2つのアベイラビリティゾーンを使用
-
冗長コンポーネント
- ALB:複数のロードバランサーノード
- Fargate:複数のタスク
- Aurora:プライマリとレプリカ
-
ネットワーク冗長性
- 複数のDirectConnect接続
- 各AZにNAT Gateway配置
- 複数のルートテーブル
-
障害分離
- 障害ドメインの分離
- サービス間の疎結合
- サーキットブレーカーパターン
9.3 冗長化設計
システムの冗長性を確保するための設計は以下の通り:
┌─────────────────────────────────────────────────────────────────────┐
│ 冗長化アーキテクチャ │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │
│ │ ALB │◄────────────────────►│ ALB │ │
│ │ (アクティブ) │ │ (アクティブ) │ │
│ │ │ │ │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │
│ │ Fargate │ │ Fargate │ │
│ │ タスク群 (AZ-1) │ │ タスク群 (AZ-2) │ │
│ │ │ │ │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └─────────────────┬─────────────────────┬─┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │
│ │ Aurora プライマリ │◄─►│ Aurora レプリカ │ │
│ │ (AZ-1) │ │ (AZ-2) │ │
│ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-
コンピューティング冗長化
- 複数のFargateタスク
- 自動スケーリング
- マルチAZ配置
-
データベース冗長化
- Aurora マルチAZ構成
- 自動フェイルオーバー
- 読み取りレプリカ
-
ストレージ冗長化
- S3:クロスリージョンレプリケーション
- EFS:マルチAZ設計
- Aurora:6つのデータコピー
-
ネットワーク冗長化
- 複数のDirectConnect接続
- 複数のインターネットゲートウェイ
- 複数のNAT Gateway
9.4 災害対策(DR)設計
災害対策は以下の方針で設計する:
-
DR戦略
- Pilot Light DR戦略
- 東京/大阪リージョン間のレプリケーション
- 定期的なDR訓練
-
リージョン間レプリケーション
- Aurora Global Database
- S3クロスリージョンレプリケーション
- バックアップの複製
-
フェイルオーバー計画
- 手動フェイルオーバー手順
- フェイルオーバー判断基準
- フェイルオーバー訓練
-
フェイルバック計画
- データ同期方法
- フェイルバックタイミング
- フェイルバック手順
9.5 バックアップ・リストア設計
バックアップとリストアは以下の方針で設計する:
-
バックアップ戦略
- 自動バックアップ(日次)
- 継続的バックアップ(ポイントインタイムリカバリ)
- 手動バックアップ(変更前)
-
バックアップ保持期間
- 自動バックアップ:35日間
- 手動バックアップ:90日間
- アーカイブバックアップ:1年間
-
リストア手順
- データベースリストア手順
- アプリケーション設定リストア手順
- 整合性検証手順
-
バックアップ検証
- 定期的なリストアテスト
- バックアップ整合性チェック
- リカバリ訓練
9.6 障害検知設計
障害検知は以下の方針で設計する:
-
ヘルスチェック
- ALBヘルスチェック
- Route 53ヘルスチェック
- アプリケーションヘルスエンドポイント
-
メトリクス監視
- CloudWatch詳細モニタリング
- カスタムメトリクス
- 異常検知
-
ログ分析
- リアルタイムログ分析
- エラーパターン検出
- 相関分析
-
合成モニタリング
- ユーザーエクスペリエンス監視
- トランザクション監視
- エンドツーエンドテスト
9.7 自動復旧設計
自動復旧は以下の方針で設計する:
-
インフラストラクチャ自動復旧
- Fargateタスク自動再起動
- Aurora自動フェイルオーバー
- Auto Scaling
-
アプリケーション自動復旧
- サーキットブレーカー
- リトライメカニズム
- グレースフルデグラデーション
-
自己修復メカニズム
- ヘルスチェックに基づく自動修復
- 定期的な状態チェックと修復
- イベント駆動型の修復
-
復旧検証
- 復旧後の整合性チェック
- 復旧完了通知
- 復旧レポート
9.8 業務継続計画(BCP)
業務継続計画は以下の方針で設計する:
-
BCP策定
- 重要業務の特定
- 復旧優先順位の設定
- 目標復旧時間の設定
-
BCP体制
- 緊急時の指揮系統
- 役割と責任の明確化
- 連絡体制
-
BCP訓練
- 定期的な訓練
- シナリオベースの訓練
- 訓練結果の評価と改善
-
BCP文書化
- 手順書の整備
- チェックリストの作成
- 定期的な見直し
10. 性能・拡張性設計
10.1 性能要件
本システムの性能要件は以下の通り:
-
レスポンス時間
- 画面表示:1秒以内
- 検索処理:2秒以内
- バッチ処理:指定時間内に完了
-
スループット
- 1秒あたり2000リクエスト処理
- ピーク時3000リクエスト/秒に対応
-
同時接続数
- 通常時:500接続
- ピーク時:1000接続
-
データ処理量
- 日次データ処理:100GB
- 月次データ増加:500GB
10.2 キャパシティ計画
キャパシティ計画は以下の方針で設計する:
-
現在の需要予測
- 平均負荷:CPU 30%、メモリ 40%
- ピーク負荷:CPU 60%、メモリ 70%
- ストレージ:初期100GB、年間30%増加
-
将来の成長予測
- ユーザー数:年間20%増加
- トランザクション量:年間30%増加
- データ量:年間40%増加
-
リソース計画
- Fargateタスク:初期4タスク、最大10タスク
- Auroraインスタンス:db.r6g.xlarge、将来的にスケールアップ
- ストレージ:初期設定100GB、自動拡張設定
-
キャパシティ監視
- 使用率の定期的なレビュー
- 成長トレンド分析
- 予測モデルの更新
10.3 スケーラビリティ設計
スケーラビリティは以下の方針で設計する:
-
水平スケーリング
- Fargateタスク数の自動調整
- Aurora読み取りレプリカの追加
- マイクロサービスの独立したスケーリング
-
垂直スケーリング
- Fargateタスクのリソース割り当て調整
- Auroraインスタンスクラスのアップグレード
- メモリ最適化インスタンスの使用
-
スケーリングトリガー
- CPU使用率:閾値70%
- メモリ使用率:閾値80%
- リクエスト数:1タスクあたり500リクエスト/秒
-
スケーリング制限
- 最小インスタンス数:2(可用性確保)
- 最大インスタンス数:10(コスト制御)
- スケールイン保護:新規デプロイ後15分間
10.4 キャッシュ設計
キャッシュは以下の方針で設計する:
-
キャッシュ層
- アプリケーションキャッシュ:メモリ内
- 分散キャッシュ:ElastiCache for Redis
- CDN:静的コンテンツ
-
キャッシュ戦略
- 読み取り頻度の高いデータ
- 計算コストの高い結果
- セッション情報
-
キャッシュ無効化
- TTL(Time to Live)ベース
- イベント駆動型無効化
- バージョニング
-
キャッシュ監視
- ヒット率
- メモリ使用率
- レイテンシ
10.5 非同期処理設計
非同期処理は以下の方針で設計する:
-
メッセージングシステム
- SQS:タスクキュー
- SNS:イベント通知
- EventBridge:イベント駆動アーキテクチャ
-
バックグラウンド処理
- 長時間実行タスク
- バッチ処理
- レポート生成
-
非同期API
- 非同期リクエスト/レスポンスパターン
- ポーリングメカニズム
- WebHook
-
エラー処理
- デッドレターキュー
- リトライ戦略
- 障害通知
10.6 バッチ処理設計
バッチ処理は以下の方針で設計する:
-
バッチジョブ設計
- 日次バッチ処理
- 週次バッチ処理
- 月次バッチ処理
-
バッチ処理最適化
- 並列処理
- チャンク処理
- インクリメンタル処理
-
バッチスケジューリング
- EventBridgeスケジューラー
- 依存関係管理
- 優先順位付け
-
バッチ監視
- 進捗監視
- 完了通知
- エラー処理
10.7 性能監視設計
性能監視は以下の方針で設計する:
-
メトリクス収集
- インフラストラクチャメトリクス
- アプリケーションメトリクス
- ビジネスメトリクス
-
パフォーマンス分析
- レイテンシ分析
- スループット分析
- リソース使用率分析
-
アラート設定
- パフォーマンス閾値アラート
- 異常検知アラート
- トレンドベースアラート
-
パフォーマンスダッシュボード
- リアルタイムモニタリング
- 履歴トレンド
- サービスレベル目標(SLO)追跡
10.8 性能チューニング方針
性能チューニングは以下の方針で実施する:
-
アプリケーションチューニング
- コードプロファイリング
- アルゴリズム最適化
- メモリ管理最適化
-
データベースチューニング
- クエリ最適化
- インデックス最適化
- 接続プーリング最適化
-
インフラストラクチャチューニング
- リソースサイジング
- ネットワーク最適化
- キャッシュ戦略最適化
-
継続的最適化
- パフォーマンステスト
- ボトルネック分析
- 定期的なレビューと改善
11. 運用・保守設計
11.1 運用体制
運用体制は以下の方針で設計する:
-
組織体制
- 運用チーム:24時間365日体制
- 開発チーム:機能開発、不具合対応
- セキュリティチーム:セキュリティ監視、対応
-
役割と責任
- システム管理者:インフラストラクチャ管理
- アプリケーション管理者:アプリケーション管理
- データベース管理者:データベース管理
- セキュリティ管理者:セキュリティ管理
-
オンコール体制
- 一次対応:運用チーム
- 二次対応:専門チーム
- エスカレーションプロセス
-
コミュニケーション計画
- 定例会議
- インシデント報告
- ステークホルダーコミュニケーション
11.2 監視設計
監視は以下の方針で設計する:
-
監視対象
- インフラストラクチャ:CPU、メモリ、ディスク、ネットワーク
- アプリケーション:レスポンス時間、エラー率、スループット
- データベース:クエリパフォーマンス、接続数、ロック
- セキュリティ:不正アクセス、異常行動
-
監視ツール
- CloudWatch:メトリクス、ログ、アラーム
- X-Ray:分散トレーシング
- サードパーティ監視ツール:統合監視
-
監視レベル
- 基本監視:主要メトリクス
- 詳細監視:詳細メトリクス、カスタムメトリクス
- 高度監視:相関分析、異常検知
-
監視ダッシュボード
- 運用ダッシュボード
- 経営ダッシュボード
- カスタムダッシュボード
11.3 アラート設計
アラートは以下の方針で設計する:
-
アラート閾値
- 警告レベル:80%使用率
- 重大レベル:90%使用率
- 緊急レベル:95%使用率
-
アラート通知
- 通知チャネル:メール、SMS、チャット
- エスカレーション:未対応時の段階的通知
- 通知抑制:アラートストーム防止
-
アラート分類
- 重要度:緊急、高、中、低
- カテゴリ:インフラ、アプリケーション、データベース、セキュリティ
- 対応時間:即時、1時間以内、4時間以内、24時間以内
-
アラート管理
- アラート集約
- 重複排除
- コンテキスト情報の付加
11.4 ログ管理設計
ログ管理は以下の方針で設計する:
-
ログ収集
- アプリケーションログ
- システムログ
- セキュリティログ
- アクセスログ
-
ログ形式
- 構造化ログ(JSON形式)
- タイムスタンプ(UTC)
- 重要度レベル
- コンテキスト情報
-
ログ保存
- 短期保存:CloudWatch Logs(90日間)
- 長期保存:S3(1年間)
- アーカイブ:Glacier(7年間)
-
ログ分析
- リアルタイム分析:CloudWatch Logs Insights
- バッチ分析:Athena
- 高度分析:OpenSearch
11.5 バックアップ運用設計
バックアップ運用は以下の方針で設計する:
-
バックアップ種類
- フルバックアップ:週次
- 増分バックアップ:日次
- トランザクションログ:継続的
-
バックアップスケジュール
- 自動バックアップ:毎日深夜(1:00-3:00)
- 手動バックアップ:変更前
- スナップショット:重要な変更前
-
バックアップ検証
- 整合性チェック:毎回のバックアップ後
- リストアテスト:月次
- DR訓練:四半期ごと
-
バックアップ管理
- バックアップカタログ
- 保持ポリシー
- 自動削除
11.6 障害対応手順
障害対応は以下の方針で設計する:
-
障害検知
- 自動検知:監視システム
- 手動報告:ユーザー、運用者
- エスカレーション基準
-
初動対応
- 影響範囲の特定
- 一時的な回避策
- コミュニケーション
-
障害対応
- 根本原因分析
- 恒久対策の実施
- 再発防止策の策定
-
事後分析
- 障害レポート
- 振り返り(ポストモーテム)
- プロセス改善
11.7 変更管理プロセス
変更管理は以下の方針で設計する:
-
変更分類
- 標準変更:事前承認済みの定型変更
- 通常変更:計画的な変更
- 緊急変更:障害対応などの緊急時変更
-
変更承認フロー
- 変更申請
- 影響評価
- 承認プロセス
- 実施計画
-
変更実施
- 変更ウィンドウ
- 変更手順
- ロールバック計画
-
変更レビュー
- 変更結果の確認
- 問題点の特定
- プロセス改善
11.8 リリース管理設計
リリース管理は以下の方針で設計する:
-
リリース計画
- リリーススケジュール
- リリース内容
- リリース優先順位
-
リリースパイプライン
- CI/CDパイプライン
- 自動テスト
- 自動デプロイ
-
デプロイ戦略
- Blue/Greenデプロイメント
- カナリアデプロイメント
- ローリングアップデート
-
リリース検証
- 受入テスト
- スモークテスト
- モニタリング強化
11.9 構成管理設計
構成管理は以下の方針で設計する:
-
構成管理データベース(CMDB)
- インフラストラクチャ構成
- アプリケーション構成
- 依存関係
-
構成管理ツール
- AWS Config
- バージョン管理システム
- IaC(Infrastructure as Code)
-
変更追跡
- 構成変更の記録
- 変更履歴の保持
- 監査証跡
-
構成検証
- 定期的な構成検証
- ドリフト検出
- コンプライアンスチェック
11.10 パッチ管理設計
パッチ管理は以下の方針で設計する:
-
パッチ評価
- セキュリティパッチの優先度評価
- 互換性テスト
- 影響分析
-
パッチ適用計画
- パッチ適用スケジュール
- パッチ適用手順
- ロールバック計画
-
パッチ適用
- テスト環境での検証
- 段階的な適用
- 適用結果の確認
-
パッチ管理ツール
- AWS Systems Manager
- パッチ管理ダッシュボード
- 適用状況の追跡
11.11 キャパシティ管理
キャパシティ管理は以下の方針で設計する:
-
キャパシティ監視
- リソース使用率の監視
- トレンド分析
- 予測モデル
-
キャパシティ計画
- 短期計画(1-3ヶ月)
- 中期計画(3-12ヶ月)
- 長期計画(1-3年)
-
キャパシティ最適化
- リソースサイジング
- コスト最適化
- 自動スケーリング
-
キャパシティレポート
- 定期レポート
- 予測レポート
- 最適化提案
12. 開発・テスト環境設計
12.1 環境構成
開発・テスト環境は以下の方針で構成する:
┌─────────────────────────────────────────────────────────────────────┐
│ 環境構成 │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ │ │ │ │ │ │
│ │ 開発環境 │────►│ テスト環境 │────►│ ステージング環境 │ │
│ │ │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ │ │
│ │ 本番環境 │ │
│ │ │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-
環境分離
- 開発環境:機能開発、単体テスト
- テスト環境:結合テスト、性能テスト
- ステージング環境:受入テスト、リリース前検証
- 本番環境:実運用
-
環境管理
- 環境プロビジョニング自動化
- 環境設定の一元管理
- 環境間の整合性確保
-
リソース最適化
- 開発/テスト環境の自動停止
- 必要最小限のリソース割り当て
- コスト最適化
12.2 開発環境設計
開発環境は以下の方針で設計する:
-
開発環境構成
- 個人開発環境
- 共有開発環境
- サンドボックス環境
-
開発ツール
- IDE
- バージョン管理システム
- コード品質ツール
-
開発プロセス
- ブランチ戦略
- コードレビュー
- 継続的インテグレーション
-
開発環境管理
- 環境の自動プロビジョニング
- 構成管理
- アクセス制御
12.3 テスト環境設計
テスト環境は以下の方針で設計する:
-
テスト環境構成
- 機能テスト環境
- 性能テスト環境
- セキュリティテスト環境
-
テストデータ管理
- テストデータ生成
- データマスキング
- データリフレッシュ
-
テスト自動化
- 自動テストフレームワーク
- テスト実行環境
- テスト結果管理
-
テスト環境管理
- 環境のオンデマンド作成
- 環境の定期リセット
- 環境の状態管理
12.4 ステージング環境設計
ステージング環境は以下の方針で設計する:
-
ステージング環境構成
- 本番相当の構成
- 本番データのサブセットまたはマスキングデータ
- 本番と同等のセキュリティ設定
-
検証項目
- 受入テスト
- 性能検証
- セキュリティ検証
- 運用検証
-
リリース前検証
- デプロイ手順の検証
- ロールバック手順の検証
- 移行手順の検証
-
ステージング環境管理
- 本番環境との構成差分管理
- 定期的な環境リフレッシュ
- アクセス制御
12.5 CI/CD設計
CI/CD(継続的インテグレーション/継続的デリバリー)は以下の方針で設計する:
-
CI/CDパイプライン
- コード変更の検出
- ビルド自動化
- テスト自動化
- デプロイ自動化
-
品質ゲート
- コード品質チェック
- セキュリティスキャン
- テストカバレッジ
- パフォーマンステスト
-
デプロイ戦略
- Blue/Greenデプロイメント
- カナリアデプロイメント
- ローリングアップデート
-
パイプライン管理
- パイプライン監視
- デプロイ履歴
- ロールバック機能
12.6 テスト自動化設計
テスト自動化は以下の方針で設計する:
-
自動テスト種類
- 単体テスト
- 結合テスト
- E2E(エンドツーエンド)テスト
- 性能テスト
- セキュリティテスト
-
テストフレームワーク
- ユニットテストフレームワーク
- API テストフレームワーク
- UI テストフレームワーク
- 負荷テストツール
-
テスト実行
- CI/CDパイプラインでの自動実行
- スケジュール実行
- オンデマンド実行
-
テスト結果管理
- テスト結果の集約
- 傾向分析
- 品質メトリクス
12.7 環境間データ連携設計
環境間のデータ連携は以下の方針で設計する:
-
データ移行
- 本番→ステージング:マスキング処理
- ステージング→テスト:サブセット抽出
- テスト→開発:サンプルデータ
-
データマスキング
- 個人情報の匿名化
- 機密情報の置換
- データ整合性の維持
-
データ同期
- 定期的な同期
- オンデマンド同期
- 差分同期
-
データ管理
- データカタログ
- データ品質管理
- データアクセス制御
13. 移行計画
13.1 移行戦略
移行戦略は以下の方針で設計する:
-
移行アプローチ
- フェーズドアプローチ:段階的な移行
- 並行運用期間の設定
- リスクを最小化する移行計画
-
移行パターン
- リホスト(Lift & Shift):最小限の変更での移行
- リプラットフォーム:クラウドネイティブサービスへの移行
- リファクタリング:アプリケーション再設計
-
移行優先順位
- 低リスク・高価値コンポーネントから開始
- 依存関係を考慮した順序
- ビジネス影響を最小化する順序
-
移行ガバナンス
- 移行プロジェクト管理
- 進捗追跡
- リスク管理
13.2 移行フェーズ
移行フェーズは以下の方針で設計する:
-
フェーズ1:準備
- 現状分析
- 移行計画策定
- 移行ツール準備
- 移行環境構築
-
フェーズ2:パイロット移行
- 非クリティカルシステムの移行
- 移行プロセスの検証
- 問題点の特定と対応
-
フェーズ3:本格移行
- コアシステムの移行
- データ移行
- 段階的カットオーバー
-
フェーズ4:最適化
- パフォーマンス最適化
- コスト最適化
- 運用プロセス最適化
13.3 データ移行設計
データ移行は以下の方針で設計する:
-
データ移行戦略
- 一括移行
- 増分移行
- ハイブリッド移行
-
データ移行ツール
- AWS Database Migration Service (DMS)
- AWS DataSync
- カスタム移行スクリプト
-
データ検証
- 件数検証
- サンプル検証
- 整合性検証
- 業務検証
-
データ移行リハーサル
- 移行時間の測定
- 問題点の特定
- プロセス改善
13.4 カットオーバー計画
カットオーバーは以下の方針で設計する:
-
カットオーバー戦略
- ビッグバンカットオーバー
- フェーズドカットオーバー
- パラレルカットオーバー
-
カットオーバー手順
- 事前準備
- カットオーバー実行
- 検証
- 完了宣言
-
カットオーバーウィンドウ
- 業務影響の少ない時間帯
- 十分な時間確保
- バッファの設定
-
コミュニケーション計画
- 関係者への通知
- 進捗報告
- 問題発生時の連絡体制
13.5 ロールバック計画
ロールバックは以下の方針で設計する:
-
ロールバック判断基準
- 重大な問題発生時
- 業務影響の評価
- ロールバック判断権限
-
ロールバック手順
- データロールバック
- システムロールバック
- 検証手順
-
ロールバックポイント
- 移行フェーズごとのロールバックポイント
- ポイントオブノーリターン
- 部分ロールバック
-
ロールバック訓練
- ロールバック手順の検証
- タイムライン確認
- 役割分担確認
13.6 移行リスク対策
移行リスクは以下の方針で対策する:
-
リスク特定
- データ損失リスク
- サービス停止リスク
- パフォーマンス低下リスク
- セキュリティリスク
-
リスク評価
- 影響度評価
- 発生確率評価
- リスクスコアリング
-
リスク対策
- 回避策
- 軽減策
- 転移策
- 受容策
-
コンティンジェンシープラン
- 緊急時対応計画
- エスカレーションプロセス
- 代替手段
14. テスト計画
14.1 テスト戦略
テスト戦略は以下の方針で設計する:
-
テスト目標
- 機能要件の検証
- 非機能要件の検証
- リスクの最小化
-
テストアプローチ
- リスクベーステスト
- 自動化テスト
- 継続的テスト
-
テスト責任
- 開発者:単体テスト
- QAチーム:機能テスト、非機能テスト
- 運用チーム:運用テスト
- ユーザー:受入テスト
-
テスト管理
- テスト計画
- テスト進捗管理
- 欠陥管理
14.2 テスト種別と範囲
テスト種別と範囲は以下の方針で設計する:
-
機能テスト
- 単体テスト
- 結合テスト
- システムテスト
- 受入テスト
-
非機能テスト
- 性能テスト
- 負荷テスト
- セキュリティテスト
- 可用性テスト
- 災害復旧テスト
-
回帰テスト
- 変更影響範囲のテスト
- 自動回帰テスト
- 重要機能の回帰テスト
-
運用テスト
- 運用手順テスト
- バックアップ/リストアテスト
- 監視テスト
14.3 テスト環境
テスト環境は以下の方針で設計する:
-
環境構成
- 開発テスト環境
- 統合テスト環境
- 性能テスト環境
- セキュリティテスト環境
- 受入テスト環境
-
環境要件
- 本番相当の構成
- 適切なデータセット
- 分離されたネットワーク
- 監視機能
-
環境管理
- 環境のプロビジョニング
- 構成管理
- 環境のリフレッシュ
-
テストツール
- テスト管理ツール
- テスト実行ツール
- テスト自動化ツール
- 性能測定ツール
14.4 テストデータ設計
テストデータは以下の方針で設計する:
-
テストデータ種類
- 機能テスト用データ
- 性能テスト用データ
- エッジケース用データ
- 障害テスト用データ
-
テストデータ作成
- 本番データのサブセット
- マスキングデータ
- 合成データ
- テストデータ生成ツール
-
テストデータ管理
- バージョン管理
- リフレッシュ手順
- データ整合性確保
-
データプライバシー
- 個人情報の匿名化
- 機密情報の保護
- コンプライアンス対応
14.5 テスト自動化方針
テスト自動化は以下の方針で設計する:
-
自動化対象
- 回帰テスト
- 繰り返し実行するテスト
- データ駆動型テスト
- 環境設定テスト
-
自動化フレームワーク
- ユニットテストフレームワーク
- API テストフレームワーク
- UI テストフレームワーク
- 性能テストフレームワーク
-
自動化プロセス
- CI/CDパイプラインとの統合
- テスト実行スケジュール
- 結果レポート自動生成
-
自動化メンテナンス
- テストスクリプト管理
- 定期的な見直し
- 再利用可能なコンポーネント
14.6 非機能テスト計画
非機能テストは以下の方針で計画する:
-
性能テスト
- 負荷テスト:通常負荷、ピーク負荷
- ストレステスト:限界性能の確認
- 耐久性テスト:長時間安定性確認
- スケーラビリティテスト:自動スケーリング確認
-
セキュリティテスト
- 脆弱性スキャン
- ペネトレーションテスト
- セキュリティ設定検証
- コンプライアンス検証
-
可用性テスト
- フェイルオーバーテスト
- 障害注入テスト
- リカバリテスト
- バックアップ/リストアテスト
-
災害復旧テスト
- DR訓練
- リージョン間フェイルオーバーテスト
- BCP訓練
14.7 受入テスト基準
受入テスト基準は以下の方針で設計する:
-
機能受入基準
- すべての機能要件を満たしていること
- 重大なバグがないこと
- ユーザーストーリーの完了基準を満たしていること
-
非機能受入基準
- パフォーマンス要件を満たしていること
- セキュリティ要件を満たしていること
- 可用性要件を満たしていること
-
運用受入基準
- 運用手順が整備されていること
- 監視が適切に設定されていること
- バックアップ/リストアが正常に機能すること
-
ユーザー受入基準
- ユーザビリティ要件を満たしていること
- エンドユーザーによる検証が完了していること
- トレーニング資料が整備されていること
15. コスト最適化設計
15.1 コスト要件
コスト要件は以下の通り:
-
コスト目標
- 初期投資の最小化
- 運用コストの最適化
- 成長に応じた段階的投資
-
コスト制約
- 月間予算上限
- サービス別予算配分
- コスト効率性の確保
-
コスト優先度
- 高可用性と信頼性の確保を優先
- 必要十分なパフォーマンスの確保
- 過剰なプロビジョニングの回避
-
コスト責任
- コスト管理責任者
- 部門別コスト配分
- コスト最適化の継続的取り組み
15.2 コスト見積もり
コスト見積もりは以下の方針で設計する:
-
初期コスト
- インフラストラクチャ初期設定
- 移行コスト
- 初期データ転送コスト
-
運用コスト
- コンピューティングコスト
- ストレージコスト
- ネットワークコスト
- マネージドサービスコスト
-
変動コスト
- トラフィック量に応じたコスト
- データ処理量に応じたコスト
- ユーザー数に応じたコスト
-
予備費
- 予期せぬコスト増加への対応
- スケーリングに伴うコスト増加
- 新機能追加に伴うコスト
15.3 リソース最適化戦略
リソース最適化は以下の方針で設計する:
-
コンピューティング最適化
- 適切なインスタンスタイプの選定
- 自動スケーリングの活用
- スポットインスタンスの活用
- サーバーレスアーキテクチャの採用
-
ストレージ最適化
- ストレージクラスの適切な選択
- ライフサイクルポリシーの設定
- データ圧縮・重複排除
- 不要データの定期的な削除
-
ネットワーク最適化
- データ転送コストの最小化
- キャッシュの活用
- リージョン選択の最適化
- VPCエンドポイントの活用
-
ライセンス最適化
- オープンソースの活用
- ライセンスモデルの最適化
- BYOL(Bring Your Own License)の検討
15.4 コスト監視設計
コスト監視は以下の方針で設計する:
-
コスト可視化
- AWS Cost Explorer
- カスタムダッシュボード
- コスト配分レポート
-
予算管理
- AWS Budgets
- 予算アラート
- 予算追跡
-
コスト異常検知
- 異常なコスト増加の検知
- 自動アラート
- 原因分析
-
コスト最適化レコメンデーション
- AWS Trusted Advisor
- AWS Cost Optimization Hub
- 定期的なコスト最適化レビュー
15.5 コスト配分設計
コスト配分は以下の方針で設計する:
-
タグ付け戦略
- コスト配分タグ
- 部門タグ
- プロジェクトタグ
- 環境タグ
-
コストセンター
- 部門別コストセンター
- プロジェクト別コストセンター
- サービス別コストセンター
-
チャージバック
- 内部課金モデル
- 使用量ベースの課金
- 固定費と変動費の配分
-
コストレポート
- 定期コストレポート
- 部門別コスト分析
- コスト効率性指標
付録
A. 設計決定事項一覧
ID | 設計項目 | 決定内容 | 決定理由 |
---|---|---|---|
D-01 | リージョン選択 | 東京リージョン(ap-northeast-1)をプライマリ、大阪リージョン(ap-northeast-3)をDR用に使用 | 日本国内でのデータ保持要件、レイテンシ最小化、地理的冗長性確保のため |
D-02 | コンピューティング | AWS Fargateを採用 | サーバーレスでの運用負荷軽減、自動スケーリング、高可用性確保のため |
D-03 | データベース | Aurora PostgreSQLを採用 | 高可用性、自動バックアップ、スケーラビリティ、PostgreSQL互換性のため |
D-04 | ネットワーク接続 | DirectConnectとTransitGatewayを採用 | 安定した閉域網接続、複数VPC/アカウント間の効率的な接続のため |
D-05 | デプロイ戦略 | Blue/Greenデプロイメントを採用 | ゼロダウンタイムデプロイ、リスク最小化、ロールバック容易性のため |
D-06 | バックアップ戦略 | 日次自動バックアップ、35日保持、クロスリージョンバックアップ | RPO要件(1分以内)、長期保存要件、災害対策のため |
D-07 | 監視戦略 | CloudWatch詳細モニタリング、カスタムメトリクス、集中ログ管理 | 早期障害検知(30秒以内)、問題分析効率化、アラート精度向上のため |
D-08 | セキュリティ設計 | 多層防御、すべてのデータの暗号化、最小権限の原則 | セキュリティベストプラクティス準拠、データ保護強化、不正アクセス防止のため |
B. 技術的制約事項
ID | 制約事項 | 影響 | 対応策 |
---|---|---|---|
C-01 | DirectConnectの帯域制限 | 大量データ転送時のスループット制限 | 重要データ転送の時間帯分散、データ圧縮、増分転送の採用 |
C-02 | リージョン間のレイテンシ | DR構成でのリアルタイムレプリケーション制約 | 非同期レプリケーション、RPO許容範囲内での設計 |
C-03 | Fargateのリソース上限 | 単一タスクでのリソース制限 | 適切なタスクサイジング、水平スケーリング設計 |
C-04 | Aurora接続数上限 | 高負荷時の接続制限 | コネクションプーリング、読み取りレプリカの活用 |
C-05 | AWS APIレート制限 | 大量API呼び出し時の制限 | 指数バックオフ、バッチ処理、キャッシング |
C-06 | コンテナイメージサイズ制限 | 大規模アプリケーションのコンテナ化制約 | マルチステージビルド、最適化イメージ、モジュール分割 |
C-07 | クラウドサービス依存性 | ベンダーロックイン | 標準技術の採用、抽象化レイヤーの導入 |
C-08 | コスト制約 | 高可用性とコストのバランス | 適切なサイジング、自動スケーリング、リザーブドインスタンス |
C. 参考資料
-
AWS Well-Architected Framework
-
AWS セキュリティのベストプラクティス
-
AWS 高可用性アーキテクチャ設計
-
AWS コンテナサービスベストプラクティス
-
AWS データベース移行ガイド
-
IPA非機能要求グレード
-
AWS コスト最適化ホワイトペーパー
D. 変更履歴
版数 | 日付 | 変更者 | 変更内容 |
---|---|---|---|
0.1 | 2025/06/20 | 設計チーム | 初版作成 |
0.2 | 2025/06/21 | 設計チーム | ネットワーク設計、セキュリティ設計の詳細化 |
0.3 | 2025/06/22 | 設計チーム | 可用性設計、運用設計の詳細化 |
1.0 | 2025/06/24 | 設計チーム | レビュー反映、正式版リリース |
Views: 0