高品質な環境設計書の作り方:押さえるべき項目と注意点
はじめに
システムの安定稼働と効率的な開発・運用を実現するために、「環境設計書」は不可欠なドキュメントです。しかし、「何を書けばいいのかわからない」「どの程度詳しく書けばいいのか迷う」といった困った事はありませんか?
この記事では、高品質な環境設計書を作成するために押さえておくべき主要な項目と、作成時に気を付けるべきポイントを私流に分かりやすく解説します。
環境設計書とは
環境設計書とは、システムが稼働するインフラストラクチャやプラットフォームの構成を定義したドキュメントです。サーバー、ネットワーク、OS、ミドルウェアなどの構成情報を網羅的に記載し、誰が構築しても同じ環境を再現できるようにするための「設計図」の役割を果たします。
なぜ環境設計書が必要なのか?
- 属人化の排除: 設計情報がドキュメント化されることで、担当者以外でも構成を理解し、作業を引き継ぐことができます。
- 品質の担保: 事前に設計を固めることで、設定ミスや考慮漏れを防ぎ、環境の品質を均一に保ちます。
- コミュニケーションの円滑化: 開発者、運用者、インフラ担当者など、関係者間での認識齟齬をなくし、円滑なコミュニケーションを促進します。
- 障害対応の迅速化: システム構成が明確になっているため、障害発生時の原因特定や復旧作業を迅速に行えます。
環境設計書に記載すべき主要項目
ここでは、一般的なWebシステムを例に、記載すべき主要項目を挙げます。
1. 概要
- 目的: このドキュメントが対象とするシステムの目的や役割を簡潔に記載します。
- スコープ: 本設計書が対象とする環境の範囲(例:開発環境、本番環境)を明記します。
- 改訂履歴: いつ、誰が、何を、なぜ変更したのかを記録します。
2. システム構成図
システムの全体像を視覚的に理解できるように、構成図を必ず含めます。クラウドサービス(AWS, GCPなど)のアイコンを使うと、より分かりやすくなります。
- 論理構成図: サービス間の連携やデータの流れを示します。
- 物理構成図/ネットワーク構成図: VPC、サブネット、サーバー、ロードバランサーなどの物理的な配置やネットワーク接続を示します。
3. インフラストラクチャ層
サーバー
- クラウド/仮想化基盤: 利用するクラウドサービス(AWS, GCPなど)や仮想化ソフトウェア(VMwareなど)を明記します。
-
インスタンス/VM:
-
インスタンスタイプ/スペック:
t3.medium,e2-standard-2など。CPU、メモリ、ディスクサイズも記載します。 - 配置: リージョン、アベイラビリティゾーン(AZ)など。
-
OS: OSの種類とバージョン(例:
Amazon Linux 2,Ubuntu 22.04 LTS)。
-
インスタンスタイプ/スペック:
ネットワーク
- VPC/VNet: CIDRブロック、DNS設定など。
- サブネット: パブリック/プライベートの種別、CIDRブロック、ルーティング設定。
- IPアドレス: サーバーごとの固定IPアドレスや、DHCPの範囲。
- ネットワークセキュリティ: セキュリティグループ、ファイアウォール、NACLのルール(Inbound/Outbound)。
- ロードバランサー: 種類(ALB, NLB)、リスナールール、ヘルスチェック設定。
ストレージ
- 種類: オブジェクトストレージ(S3, GCS)、ブロックストレージ(EBS, Persistent Disk)など。
- 容量と性能: ディスクサイズ、IOPSなど。
4. プラットフォーム層
ミドルウェア
Webサーバー、APサーバー、データベースなど、OS上で稼働するミドルウェアの情報を記載します。
-
種類とバージョン:
Nginx 1.22,MySQL 8.0など、バージョンまで正確に記載します。 -
主要な設定:
nginx.confの重要な設定値や、データベースのパラメータなど。
5. アプリケーション層
- デプロイ手順: アプリケーションのデプロイ方法や、CI/CDパイプラインの構成。
- 環境変数: アプリケーションが利用する環境変数の一覧とその説明。
6. 非機能要件
可用性
- 冗長化構成: サーバーの多重化(Active-Standby, Multi-AZなど)の方法。
- 障害復旧(DR): 障害発生時の復旧手順や目標復旧時間(RTO/RPO)。
運用・監視
-
監視ツール:
CloudWatch,Zabbix,Datadogなど。 - 監視項目とアラート設定: CPU使用率、メモリ使用率などの監視項目と、アラートを発報する閾値。
- ログ収集: 収集するログの種類、収集方法、保管場所(S3, CloudWatch Logsなど)。
セキュリティ
- アクセス制御: IAMロールやポリシー、SSHのアクセス元制限など。
- 暗号化: 通信経路(TLS/SSL)や保管データ(EBS暗号化など)の暗号化方針。
バックアップ・リストア
- バックアップ対象: データベース、ファイルシステムなど。
- 取得方式と世代管理: スナップショットの取得スケジュール、保持期間。
- リストア手順: バックアップからデータを復元する際の具体的な手順。
作成時に気を付けるべき点
1. 理由(Why)を記載する
「なぜその技術を選んだのか」「なぜその設定値にしたのか」という設計判断の理由を必ず残しましょう。将来、構成変更を検討する際に、過去の経緯が分からず誰も触れない「ブラックボックス」になるのを防ぎます。
2. 最新性を保つ
環境設計書は一度作って終わりではありません。環境に変更を加えた場合は、必ずドキュメントも更新する運用を徹底しましょう。Gitで管理し、変更履歴を追えるようにするのが理想です。
3. 図や表を活用する
文字だけのドキュメントは理解しにくいものです。システム構成図や、設定値の一覧表などを積極的に活用し、視覚的に分かりやすいドキュメントを心がけましょう。
4. 関係者とレビューする
作成した設計書は、開発者や運用者など、関係者全員でレビューしましょう。異なる視点からフィードバックをもらうことで、設計の抜け漏れや誤りを早期に発見できます。
まとめ
高品質な環境設計書は、システムの安定稼働を支える土台となります。最初は大変に感じるかもしれませんが、ここで紹介した項目と注意点が参考になれば幸いです。
Discussion