外部設計(外部設計書)で必要なこと
外部設計書における基盤側で必要な事項を大項目、中項目、章に分類しました。参考としてください。
1. システム構成
1.1 ハードウェア構成
1.1.1 サーバー
1.1.2 ストレージ
1.1.3 ネットワーク機器の物理的配置と構成
1.2 ソフトウェア構成
1.2.1 OS
1.2.2 ミドルウェア
1.2.3 データベース
1.2.4 アプリケーションの配置とバージョン管理
2. ネットワーク設計
2.1 ネットワークトポロジー
2.1.1 LAN/WANの設計
2.1.2 サブネットの配置
2.1.3 IPアドレスの割り当て
2.2 通信プロトコル
2.2.1 使用するプロトコル(HTTP、HTTPS、FTP、SSHなど)の選定と設定
2.3 ネットワークセキュリティ
2.3.1 ファイアウォール
2.3.2 VPN
2.3.3 DMZの設定とアクセス制御
3. ストレージ設計
3.1 ストレージタイプ
3.1.1 HDD
3.1.2 SSD
3.1.3 クラウドストレージの選定
3.2 RAID構成
3.2.1 RAIDレベルの選定と設定
3.3 バックアップポリシー
3.3.1 データのバックアップ方法
3.3.2 頻度
3.3.3 保存場所
4. セキュリティ設計
4.1 認証・認可
4.1.1 シングルサインオン
4.1.2 二要素認証
4.1.3 権限管理
4.2 暗号化
4.2.1 データの暗号化方法
4.2.2 SSL/TLSの使用
4.3 ログ管理
4.3.1 監査ログ
4.3.2 アクセスログの取得方法と保存場所
5. 可用性設計
5.1 冗長化
5.1.1 サーバーの冗長構成
5.1.2 ネットワークの冗長構成
5.1.3 ストレージの冗長構成
5.2 フェイルオーバー
5.2.1 障害発生時の自動切り替え方法
5.3 クラスタリング
5.3.1 高可用性を確保するためのクラスタリング構成
6. パフォーマンス設計
6.1 スケーラビリティ
6.1.1 負荷分散
6.1.2 オートスケーリングの設定
6.2 キャッシュ戦略
6.2.1 データベースキャッシュ
6.2.2 CDNの使用
6.3 チューニング
6.3.1 パフォーマンス向上のための設定や調整
7. 運用設計
7.1 監視
7.1.1 システム監視ツールの選定
7.1.2 監視項目
7.1.3 アラート設定
7.2 障害対応
7.2.1 障害発生時の対応フロー
7.2.2 連絡体制
7.3 メンテナンス
7.3.1 定期メンテナンスのスケジュール
7.3.2 メンテナンス時の手順
8. DR(ディザスタリカバリ)設計
8.1 DRサイト
8.1.1 災害発生時の復旧サイトの設計
8.2 復旧手順
8.2.1 データ復旧の手順
8.2.2 システム復旧の手順
8.3 BCP(事業継続計画)
8.3.1 災害発生時に事業を継続するための計画
9. 非機能要件
9.1 性能要件
9.1.1 スループット
9.1.2 レスポンスタイム
9.1.3 同時接続数
9.2 信頼性要件
9.2.1 MTBF(平均故障間隔)
9.2.2 MTTR(平均修復時間)
9.3 拡張性要件
9.3.1 システムの将来的な拡張や変更に対する対応策
9.4 保守性要件
9.4.1 システムのメンテナンス性
9.4.2 変更の容易さ
10. インターフェース設計
10.1 API設計
10.1.1 外部システムや内部システムとのデータ交換方法
10.1.2 APIの仕様とエンドポイント
10.2 データフォーマット
10.2.1 JSON
10.2.2 XMLなどのデータ交換フォーマットの選定
10.3 プロトコル
10.3.1 通信に使用するプロトコル(HTTP、HTTPS、WebSocketなど)の選定
11. テスト計画
11.1 テスト環境
11.1.1 テスト用のハードウェア・ソフトウェア構成
11.2 テストケース
11.2.1 非機能要件を満たすための具体的なテストケース
11.3 テストツール
11.3.1 使用するテストツール(負荷テストツール、監視ツールなど)
12. 移行計画
12.1 データ移行
12.1.1 既存システムからのデータ移行方法
12.2 システム移行
12.2.1 新システムへの切り替え手順とタイムライン
12.3 移行リスク
12.3.1 移行に伴うリスクとその対策
13. トレーニング計画
13.1 ユーザートレーニング
13.1.1 エンドユーザー向けのトレーニング内容と方法
13.2 運用担当者トレーニング
13.2.1 システム管理者や運用担当者向けのトレーニング
14. ドキュメンテーション
14.1 システムマニュアル
14.1.1 システムの操作方法や設定方法を記載したマニュアル
14.2 運用マニュアル
14.2.1 日常の運用手順や障害時の対応方法を記載したマニュアル
14.3 メンテナンスマニュアル
14.3.1 定期メンテナンスの手順や注意点を記載したマニュアル
15. 規制・コンプライアンス
15.1 法的要件
15.1.1 関連する法律や規制(個人情報保護法、GDPRなど)の遵守
15.2 業界標準
15.2.1 業界特有の標準やガイドラインの遵守(ISO標準、NISTなど)
16. サービスレベルアグリーメント(SLA)
16.1 可用性
16.1.1 サービスの稼働時間や停止時間の保証
16.2 応答時間
16.2.1 サポート対応の応答時間
16.3 メンテナンス時間
16.3.1 定期メンテナンスの時間帯と通知方法
17. コスト分析
17.1 初期投資
17.1.1 システム構築にかかる初期費用
17.2 運用コスト
17.2.1 日常の運用にかかる費用(人件費、ライセンス費用など)
17.3 ROI(投資対効果)
17.3.1 システム導入による効果と費用対効果の分析
18. キャパシティプランニング
18.1 現在のリソース要件
18.1.1 現在のシステムで必要とされるCPU、メモリ、ストレージなどのリソース要件
18.2 将来のリソース要件
18.2.1 将来的な利用拡大に伴うリソース要件の予測
19. 可観測性
19.1 ロギング
19.1.1 システム内の重要なイベントやエラーのログ記録方法
19.2 モニタリング
19.2.1 パフォーマンス、可用性、エラーレートなどの監視指標とツール
19.3 アラート設定
19.3.1 重要なイベントや障害発生時にアラートを発行する条件と手段
20. バージョン管理
20.1 ソースコード管理
20.1.1 使用するバージョン管理システム(Git、SVNなど)とその運用方法
20.2 リリース管理
20.2.1 バージョン番号の付け方、リリース手順、リリースノートの作成方法
21. フェールセーフとリカバリ手順
21.1 フェールセーフ機構
21.1.1 障害発生時のシステムの安全停止やデータ保護の仕組み
21.2 リカバリ手順
21.2.1 システム障害からの復旧手順
22. サービスデプロイメント
22.1 デプロイメントパイプライン
22.1.1 CI/CDパイプラインの設計、使用するツール(Jenkins、GitLab CI/CDなど)
22.2 ロールバック手順
22.2.1 デプロイメント失敗時のロールバック方法
23. データ管理
23.1 データアーキテクチャ
23.1.1 データの流れ、データモデル、データベース設計
23.2 データ品質
23.2.1 データの正確性、一貫性、完全性を保つための仕組み
23.3 データガバナンス
23.3.1 データの所有権、アクセス権、データライフサイクル管理
24. サードパーティサービスの統合
24.1 外部APIの使用
24.1.1 サードパーティAPIの使用方法、依存関係、セキュリティ対策
24.2 クラウドサービスの利用
24.2.1 AWS、Azure、GCPなどのクラウドサービスの利用方法とその設計
25. UX(ユーザーエクスペリエンス)設計
25.1 ユーザーインターフェース
25.1.1 ユーザーが直接触れる部分の設計、ユーザビリティの考慮
25.2 ユーザーフィードバック
25.2.1 ユーザーフィードバックの収集方法と改善のプロセス
26. レガシーシステムとの統合
26.1 互換性
26.1.1 既存のレガシーシステムとの互換性の確保
26.2 データ移行
26.2.1 レガシーシステムから新システムへのデータ移行方法
27. 利害関係者の管理
27.1 ステークホルダー分析
27.1.1 利害関係者の特定とその要求事項
27.2 コミュニケーション計画
27.2.1 プロジェクト関係者とのコミュニケーション手段と頻度
28. コンプライアンスと法的要件
28.1 データ保護法規制
28.1.1 GDPR、CCPAなどのデータ保護規制の遵守方法
28.2 ライセンス管理
28.2.1 使用するソフトウェアやライブラリのライセンス管理
29. コラボレーションとチーム管理
29.1 役割と責任
29.1.1 プロジェクトチーム内の役割分担と責任範囲
29.2 作業フロー
29.2.1 開発プロセスのフロー、使用するコラボレーションツール(Jira、Confluenceなど)
30. ドキュメントの更新と管理
30.1 バージョン管理
30.1.1 設計書のバージョン管理方法
30.2 レビュー手順
30.2.1 設計書のレビュー手順と承認フロー