見出し画像

外部設計(外部設計書)で必要なこと

外部設計書における基盤側で必要な事項を大項目、中項目、章に分類しました。参考としてください。


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 設計書のレビュー手順と承認フロー


おもしろきこともなき世を面白く 議論メシ4期生http://gironmeshi.net/ メンタリストDaiGo弟子 強みほがらかさと発散思考 外資系企業でインフラエンジニア