クラウド運用・コスト

環境分離 かんきょうぶんり

開発環境ステージング環境本番環境テスト環境デプロイインフラ構成管理
環境分離について教えて

簡単に言うとこんな感じ!

「開発中のプログラム」と「お客さんが使っている本番システム」を別々の場所に置いておくことだよ。料理で言えば、試作キッチンと本番の厨房を分けるイメージ!試作品がどんなに失敗しても、お客さんの料理には影響しないってこと!


環境分離とは

環境分離とは、システム開発・運用において「開発」「テスト」「本番」などの用途ごとにサーバーやネットワーク・データベース物理的または論理的に切り分ける設計・運用のプラクティスです。それぞれの環境が独立しているため、開発中のバグや実験的な変更が、実際のユーザーが使う本番環境に影響を与えることを防ぎます。

クラウド時代以前は「本番サーバーに直接ログインして修正する」という運用も珍しくありませんでしたが、それでは変更ミスが即座に障害につながるリスクがあります。環境分離を徹底することで、「壊しても安全な場所でテストし、確認が取れたものだけ本番に反映する」 というフローが実現します。

発注側・システム管理者の立場では、「この開発作業は本番に影響しないのか?」を確認するうえで欠かせない概念です。適切な環境分離がされているかどうかは、システムの品質・安定性・セキュリティに直結します。


環境の種類と役割

一般的なシステム開発では、以下のような複数の環境が段階的に用意されます。

環境名別名主な利用者目的
開発環境(Development)dev開発者コードを書き、動作を確認する場所
テスト環境(Test)test / QAQA担当・テスター機能テスト・バグ検出を行う場所
ステージング環境(Staging)stg / 検証環境発注側・PL・QA本番と同じ構成でリリース前の最終確認をする場所
本番環境(Production)prodエンドユーザー実際のサービスが稼働している場所

覚え方:「開・テ・ス・本」

発 → スト → テージング → 番」という順番でコードが流れていくと覚えると、リリースまでの工程がイメージしやすくなります。野球のように「1塁(開発)→ 2塁(テスト)→ 3塁(ステージング)→ ホーム(本番)」というアナロジーも使われます。

最小構成と推奨構成

小規模システムでは全環境を用意するのが難しい場合もありますが、少なくとも以下が推奨されます。

【最小構成】
  開発環境  →  本番環境

【推奨構成】
  開発環境  →  ステージング環境  →  本番環境

【フル構成(大規模・高信頼性システム向け)】
  開発環境  →  テスト環境  →  ステージング環境  →  本番環境

歴史と背景

  • 1970〜80年代:メインフレーム時代から「開発機」と「本番機」を分けるという概念は存在していたが、コストが高く中小規模では徹底されにくかった
  • 1990〜2000年代:Webシステムの普及とともに「本番に直接触れて障害を起こす」事故が社会問題化。環境分離の重要性が広く認識される
  • 2000年代後半継続的インテグレーション(CI の普及により、自動テストと環境ごとのデプロイパイプラインが標準化され始める
  • 2010年代クラウド(AWS・Azure・GCP) の普及で、環境ごとにアカウントやプロジェクトを分離するコストが劇的に低下。環境分離が中小規模でも現実的になる
  • 2015年以降Infrastructure as Code(IaC ツール(TerraformAnsibleなど)の普及により、複数環境を同じコードで再現・管理することが容易になり、環境間の構成差異(コンフィグドリフト)を防ぎやすくなった
  • 現在マルチアカウント戦略(AWSのOrganizationsなど)による環境分離が大企業・ガバナンス重視の組織で定番化している

分離の方法と比較

環境を「どう分けるか」にはいくつかのアプローチがあります。分離レベルが高いほど安全ですが、コストも上がります。

分離方法概要安全性コスト主な用途
アカウント分離クラウドアカウント自体を環境ごとに分ける◎ 最高高め大企業・金融・医療
VPC / ネットワーク分離同一アカウント内で仮想ネットワークを分ける○ 高い中程度中規模システム
名前空間分離Kubernetes Namespaceなどで論理的に分ける△ 中程度低い開発・テスト向け
フラグ分離同一環境で設定フラグで切り替える× 低い最低非推奨(緊急回避のみ)
環境分離のレベルと構造(アカウント分離の例) 開発アカウント 開発環境サーバー dev-db / dev-app テスト環境サーバー test-db / test-app 開発者が自由に操作可 ステージングアカウント ステージング環境 本番と同構成 stg-db / stg-app リリース前の最終確認 発注者も確認する場所 本番アカウント 本番環境 エンドユーザーが利用 prod-db / prod-app 変更は承認フロー必須 アクセス権は最小限 確認OK リリース

本番データを開発環境に持ち込まない

環境分離で特に重要なのがデータの分離です。本番環境の顧客データをそのまま開発環境にコピーして使うことは、情報漏洩リスクや個人情報保護法・GDPRの観点から原則禁止とすべきです。開発・テスト時はマスキング(匿名化)されたダミーデータを使うのがベストプラクティスです。


関連する規格・RFC

規格・ガイドライン内容
NIST SP 800-53米国政府のセキュリティ標準。環境分離はCM(構成管理)・SC(システム通信保護)管理策に関連
CIS Controls v8環境分離はControl 4(企業資産の安全な設定)・Control 12(ネットワークインフラ管理)に関連

関連用語

  • 本番環境 — エンドユーザーが実際に利用する稼働中のシステム環境
  • ステージング環境 — 本番と同等の構成でリリース前確認を行う環境
  • CI/CD — 継続的インテグレーション・継続的デリバリー。環境分離と組み合わせて自動デプロイを実現する仕組み
  • Infrastructure as Code — インフラ構成をコードで管理する手法。複数環境を同じ定義で再現するために使われる
  • マルチアカウント戦略 — クラウドアカウントを複数に分けてガバナンスとセキュリティを強化する設計手法
  • 最小権限の原則 — 必要最低限のアクセス権のみ付与するセキュリティ原則。本番環境のアクセス制御に直結
  • DevOps — 開発と運用を一体化した手法。環境分離はDevOpsパイプラインの前提となる概念
  • 構成管理(コンフィグ管理) — 環境ごとの設定差異を管理・追跡するプラクティス