Webサイトやシステムを開発する際、本番環境へリリースする前にしっかりと動作確認することが重要です。
開発中のシステムをいきなり本番環境にリリースしてしまうと、予期せぬ不具合が発生し、ユーザーに多大な迷惑をかけてしまう可能性があります。
ステージング環境(stg環境)とは、本番環境に近い状態で動作確認やシステム検証を行うための環境です。
ステージング環境を活用することで、開発の最終段階で実際の本番環境と同じ条件でシステムの動作を確認できます。
この記事では、ステージング環境の構築方法や、具体的な検証手順を解説します。
ステージング環境を使うと本番に近い環境でテストできるため、リリース後のトラブルを大幅に削減できます。
ステージング環境を使って確実なリリースを実現しましょう。
2014年 大学在学中にソフトウェア開発企業を設立
2016年 新卒でリクルートに入社 SUUMOの開発担当
2017年 開発会社Jiteraを設立
開発AIエージェント「JITERA」を開発
2024年 「Forbes 30 Under 30 Asia 2024」に選出
ステージング環境とは?
ステージング環境とは、本番環境へのリリース前にシステムの動作確認や検証を行うための環境です。
stg環境と呼ばれることもあります。
新しく開発したシステムは、直接本番環境に適用するのはリスクが高いため、まずは本番環境とほぼ同じ構成のステージング環境を用意します。
ここでは、実際にサイトを利用したり、大量のデータを投入したりすることで、システムの動作を総合的にテストできます。
ステージング環境で様々な検証を行うことで、本番リリース時のトラブルを極力防ぐことができます。
このため、ステージング環境は、開発者だけでなく、運用担当者やユーザーにも利用してもらう「疑似本番環境」と言えます。
システム開発では、ステージング環境は必要不可欠なもので、しっかり検証を行うことが成功への近道です。
ステージング環境を活用するメリットは大きく分けて3つあります。
1つ目は、本番に近い環境でテストできることです。
本番と同じOSやミドルウェア、DBを使用することで、本番で発生しうる問題を早期に発見できます。
2つ目は、複数のテストが同時並行で実施できることです。
機能テスト、負荷テスト、セキュリティテストなどを同時に実施できるため、効率的な検証が可能です。
3つ目は、開発者だけでなく運用スタッフやユーザーにもテスト環境を提供できることです。
運用面の問題も洗い出せるため、より完成度の高いシステムをリリースできます。
このように、ステージング環境は本番リリース前のシステム検証において、非常に重要な役割を担っています。
ステージング環境で検証できるもの
ステージング環境では、システムのさまざまな側面を検証できます。
代表的な検証項目は以下の通りです。
- 動作確認
- 表示確認
- セキュリティ確認
- パフォーマンス確認
以下ではそれぞれについて説明します。
動作確認
新しい機能が、意図した通りに動作するかを確認します。
画面遷移、データ入力、計算ロジックなどの処理が正しく動くかを実際に操作して検証します。
例えば、ECサイトの場合は以下のような動作確認が必要です。
- 商品検索が正常に機能するか
- 商品をカートに入れたり、カートから削除できるか
- 購入手続きが問題なく完了するか
- 支払い方法の選択や入力内容に誤りがないか
- 入力した住所に基づいて正しい送料が計算されるか
このように、実際のユーザーがサイト上で行う一連の操作をすべて試すことで、想定外の不具合を発見できます。
また、新規会員登録やログイン/ログアウト、アカウント管理といった基本機能についても念入りに確認する必要があります。
さらに、動作確認では、単独の機能だけでなく、複数の機能を組み合わせた場合の動作もチェックすることをおすすめします。
例えば、商品検索後に、結果を絞り込むフィルターを使ってみたり、並び替えを変更してみることで、思わぬエラーを発見できる可能性があります。
こうした網羅的な動作確認をステージング環境で行うことで、本番リリース後のシステム障害を防ぐことができます。
表示確認
Webサイトやアプリの画面表示が適切かを確認します。
レイアウトが崩れていないか、文字化けがないか、画像が正しく表示されるかなどを、実際の端末で確認します。
ステージング環境では、サイトを様々なデバイスで実際に表示させて、レイアウトやデザインを確認する必要があります。
- PCの主要ブラウザ(Chrome、Firefox、Safari等)
- スマートフォンの画面サイズ(5インチや6インチ等の代表機種)
- タブレット端末の画面サイズ(7インチ、10インチ等)
また、文字サイズの変更やインターネットの通信速度を意図的に遅く設定することで、表示のずれや読み込みの遅延がないかを確認できます。
このとき、フォントの種類や行間、カラーパレットなども実機で確認する必要があります。
細かいズレが生じていないかを目視でチェックしましょう。
サイトに画像を掲載するときは、画像のサイズや解像度を、それぞれのデバイスに最適化している必要があります。
表示サイズが小さかったり、画質が粗くならないことを確認することが大切です。
さらに、ページ内のリンク切れや、動画コンテンツの再生性も確認するようにしましょう。
表示確認を綿密に行うことで、クロスブラウジング対応力が高まります。
セキュリティ確認
セキュリティ診断ツールを利用して、サイトの脆弱性をチェックします。
不正アクセスの可能性や個人情報漏洩のリスクがないかを確認し、必要に応じて対策を行います。
主な確認項目は以下の通りです。
- SSL証明書の設定が適切か
- 最新のセキュリティパッチが適用されているか
- 入力値のサニタイズがされているか
- SQLインジェクションやXSSなどの脆弱性がないか
- パスワードのハッシュ化や暗号化がされているか
- 権限管理が適切に設定されているか
これらの確認には、セキュリティ診断の専用ツールやサービスを利用すると効率的です。
例えば、SSL LabsのSSL Server Testでは暗号設定を詳細にチェックできます。
また、AcunetixやNetsparkerなどのウェブ脆弱性スキャナーではコードレベルの欠陥を特定できます。
さらに、実際に不正アクセスを模したペネトレーションテストを実施することで、より実戦的な検証が可能です。
検出した脆弱性はすべて対応策を検討し、セキュリティレベルを高める必要があります。
ステージング環境でこまめにセキュリティ診断を行うことで、サイバー攻撃や情報漏洩といったリスクを回避できます。
パフォーマンス確認
負荷テストツールなどを使い、アクセスが集中した場合のサイトの応答性能を調査します。
ストレステストによって、ボトルネックを発見し、最適化を図ります。
ステージング環境でのパフォーマンス確認では、以下の点に注目します。
- ページの表示速度
- 同時アクセス数に対する応答時間の変化
- DBやサーバーへの負荷の分布
- メモリやCPU使用量の推移
負荷試験ツールのJMeterやLoadRunnerを使用すると、多数の仮想ユーザーによるアクセスをシミュレートできます。
グラフ化された解析結果から、アプリケーションサーバーやデータベースのボトルネックを特定できます。
例えば、「商品購入処理」の所要時間が他の画面に比べて明らかに長い場合は、DBのクエリ変更やインデックスの追加などの対策が必要です。
また、メモリ不足でサーバーダウンが発生する最大同時接続数を調べたり、クラウド環境でのスケールアップテストも可能です。
こうしたパフォーマンス検証により、サイトの稼働状況を数値化し、円滑な運用体制を確保できます。
お気軽にご相談ください!
開発環境・テスト環境・ステージング環境・本番環境の違い
システム開発には、用途に応じたそれぞれの環境があります。
各環境の違いを理解して、開発からリリースまでの一連の工程で、適切な環境を使い分けることが大切です。
それぞれの環境の違い
環境 | 主な目的 | 主な利用者 | データを更新できるか |
開発環境(Dev環境) | 開発者が新機能を開発する | 開発者 | できる |
テスト環境 | 機能テストを実施する | テスト担当者 | できる |
ステージング環境 | 総合検証を実施する | 開発/運用/ユーザー | できる |
本番環境 | 実際のサービスを提供する | ユーザー | 原則できない |
この表では、開発からリリースまでの主要な4つの環境について、目的、利用者、データ更新権限の観点から比較しています。
開発環境(Dev環境)は新機能作成に特化しているため、開発者のみが利用できデータ更新も自由に行えます。
一方、本番環境は実サービスであるため、ユーザー対象で、データ更新はセキュリティのため制限されています。
テスト環境とステージング環境はその中間的な性質を持ち、段階的に利用者範囲やデータ操作能力が拡大していくことがわかります。
この表を参考に、それぞれの環境の特徴を理解した上で、開発の各プロセスに適切に使い分けることが重要です。
各環境の関連性
開発環境で作成したシステムは、テスト環境で動作確認します。
問題がなければステージング環境で運用テストを実施し、最終的に本番環境へリリースされます。
ステージング環境は本番環境の複製のため、実運用を想定した検証が行えます。
このとき、ステージング環境で更新したデータは本番環境に反映される仕組みが必要です。
なお、開発環境でバグ修正や改善を行った内容は、順番に各環境にデプロイしていきます。
例えば、開発環境でエラーハンドリングを改善した場合、そのコードはテスト環境に適用されテストをパスする必要があります。
その後ステージング環境での検証が完了し、本番リリースの判断がされた時点で、本番環境に適用されます。
検証環境が変わるごとに、より実運用に近い状況で動作を確認していくため、思わぬ不具合を防ぐことができます。
逆に、本番で発生したバグの修正は開発環境で行い、同様に上流の環境を経て本番に適用します。
このように各環境は密接に関連し、整合性を保ちながらシステム改善を繰り返していく必要があります。
ステージング環境の作り方と検証方法
新しいシステム変更やバージョンアップを行った際は、一般公開する前にステージング環境でのテストが不可欠です。
想定外の動作や不具合が本番で発生するリスクを回避できるからです。
ステージング環境は本番を模した環境であるため、実際のサービス運用を想定した検証を総合的に実施できます。
ステージング環境での検証プロセスは、大まかに以下の手順で進めます。
- ステージング環境を本番と同等の設定で構築
- 新機能・改修点の動作確認テスト
- ユーザーによる利用テスト(UAT)
- 発見された問題の分析と対応
この一連のプロセスを確実に実施することで、より安定したシステムリリースが可能となります。
ここではステージング環境の作り方と検証方法を紹介します。
ステージング環境の準備
まずは、本番と同等の仕様のサーバやストレージ、ネットワークを構築します。
ステージング環境を作るときは、クラウドを利用すると比較的容易に準備できます。
なお、ステージング環境のサーバースペックは、本番と同等以上のものを用意する必要があります。
処理能力不足だと、実運用を模したテストができない点に注意しましょう。
また、ストレージも本番と同じ容量以上のDISKを用意し、バックアップ体制も本番環境と同等のものが理想です。
ネットワーク環境は、本番と同じ回線速度、同じセグメント構成とすることで、より本番に近い検証が可能になります。
セキュリティ面では、ファイアウォールの設定やアクセス制限も本番に準じて構成する必要があります。
オンプレミスで構築するよりも、AWSやGCPなどのクラウドサービスを利用する方が手軽に準備できます。
ステージング環境は、システム変更のたびに再構築するケースが多いため、クラウドを使用してスケールインやスケールアウトしやすくしておくとよいでしょう。
システムの動作確認
ステージング環境ができたら、新規機能や改修箇所が正常に動作するかを優先的にチェックします。
機能面・非機能面の両方の要件が満たされていることを確認する必要があります。
ステージング環境での動作確認では、新規追加や変更の影響範囲を限定し、他の機能に想定外の影響が生じていないかを確認します。
例えば、ECサイトの決済方法追加の場合は、以下の点を網羅的にチェックします。
- 新決済方法で注文完了まで正しく流れるか
- 他の決済方法に影響がないか
- 商品検索やカート機能など、他画面の動作に変化がないか
画面遷移、処理速度、データ保存、エラー処理など、機能面の確認に加え、セキュリティやユーザビリティといった非機能面も確認する必要があります。
動作確認には、テストスクリプトの自動実行による網羅的チェックと、マニュアルテストを適切に組み合わせることをおすすめします。
また、機能面の確認に加えて、操作性やレスポンスの良し悪しも確認する必要があります。
思わぬ動作の遅延が生じていないかを実際に利用して判断することも大切です。
ユーザー受け入れテスト(UAT)
UATは、User Acceptance Testの略で、ユーザーに新システムを試用してもらうテストです。
実際の操作感や問題点を洗い出します。
UATでは、実際のユーザーにステージング環境にアクセスしてもらい、日常業務を想定したテストをしてもらいます。
例えば、ECサイトの場合は以下のような観点でテストを実施します。
- 商品検索、購入などの基本操作の使いやすさ
- 注文処理や決済の処理速度
- 画面デザインやレイアウトのわかりやすさ
- ヘルプコンテンツの分かりやすさ
操作方法が分からない、ストレスを感じる、不便だと思った点などを全て報告してもらいます。
UATで得られたフィードバックは開発チームで分析し、操作性やデザインの改善に活用していきます。
UATを行うことで、リリース後のユーザーの混乱を最小限に抑えることができます。
UATでは、実際の業務フローや使用環境を再現することが重要です。
例えば、社内システムの場合は、社内ネットワーク環境を模したVPN接続を試験ユーザーに設定したり、複数人同時にテストに参加してもらうことで、より実利用に近い検証ができます。
また、テストユーザーには、日頃の業務と同じ頻度・時間帯にアクセスしてもらうことで、実運用時のシステム負荷もシミュレートできます。
テスト結果の分析
発見された不具合は要因を分析し、修正方針を決定します。
改善点を開発環境(Dev環境)にフィードバックして品質向上を図ります。
ステージング環境でのテストで発見された不具合は、以下の点を確認して要因を特定します。
- どの機能や画面で発生したか
- エラーメッセージは出力されるか
- 再現性はあるか(同じ操作をしても発生するか)
- 類似の症状は他にあるか
この情報をもとに、不具合の影響範囲を把握し、優先度を判断します。
修正方針を決定したあとは、開発チームにフィードバックして改善を行います。
修正箇所がコードレベルのバグなら修正し、設計自体に問題がある場合はアプローチを見直します。
また、単独の不具合にとどまらず、品質管理のプロセスとしての改善点が見つかった場合は、コーディング時のレビュー強化やテスト手順の見直し等を行います。
このサイクルを回すことで、最終的な製品品質が向上していきます。
このため、ステージング環境での検証プロセスは欠かせない作業だと覚えておきましょう。
ステージング環境の構築に役立つ技術やサービス
ステージング環境の構築には、いくつかの便利な技術やサービスがあります。
ここでは、仮想化技術、クラウドサービス、コンテナ技術の3つを紹介します。
これらの技術を活用することで、より効率的かつ柔軟なステージング環境を構築できます。
以下では、ステージング環境の構築に役立つ技術やサービスについて紹介します。
仮想化技術
仮想化技術とは、1台の物理的なサーバー上に複数の仮想的なサーバーを構築する技術のことです。
ここでいう仮想的なサーバーのことを仮想マシンと呼びます。
1台のサーバーを複数の用途で利用できるため、ハードウェアコストの削減、運用効率の向上、省電力化といったメリットがあります。
仮想化技術を活用することで、物理的なハードウェアリソースを共有しながら、複数の仮想マシンを作成できます。
これにより、本番環境と同様の環境をステージング環境として構築できます。
クラウドサービス
クラウドサービスとは、インターネット経由でサーバー、ストレージ、ネットワーク、ソフトウェアなどのITリソースを必要な時に必要なだけ利用できるサービスです。
従来のオンプレミス環境のように、自社でサーバーなどのITインフラを構築・運用する必要がなく、手軽にIT環境を導入・利用できることが特徴です。
AWS、Azure、GCPなどのクラウドサービスを利用すれば、ステージング環境に必要なサーバーやネットワークなどのリソースをオンデマンドで調達できます。
必要な時に必要なだけリソースを利用できるため、柔軟性・拡張性の高いステージング環境を構築できます。
料金体系もパブリッククラウドなら従量課金制となるため、コスト効率にも優れているという特徴があります。
コンテナ技術
コンテナ技術とは、アプリケーションの実行に必要なプログラムコードやライブラリ、設定ファイルなどをパッケージ化し、ポータブルな環境で動作させる技術のことです。
仮想化技術と比較して軽量で起動が速いため、開発環境(Dev環境)やテスト環境、ステージング環境(stg環境)などで広く利用されています。
コンテナ技術を活用すると、環境差異による問題を減らし、迅速なデプロイやスケーリングが可能なステージング環境を構築できます。
ステージング環境での検証を成功させるポイント
ステージング環境は本番を模したテスト環境ですが、正しく構築及び運用されないと十分な検証ができません。
本番移行後のトラブルを回避するには、ステージング環境の設定や運用管理が重要なポイントとなります。
本番同様の環境構築やアクセス制限、定期的な同期運用などの注意事項を守ることで、はじめて実環境に近い検証が可能となります。
ステージング環境での検証を成功させるためのポイントは以下のとおりです。
- 本番環境に近い構成で構築する
- 定期的な更新と同期を行う
- 複数人で利用する場合は制限を設ける
- 監視を行う
- セキュリティに配慮する
これらの注意点をしっかり押さえて運用できるようにすることが大切です。
本番環境に近い構成で構築する
ステージング環境は、なるべく本番環境と同じあるいは上位のスペックを用意する必要があります。
本番と仕様が異なると、実運用を想定した正確なテストができません。
OS、ミドルウェア、DB、ネットワーク環境は本番環境と同等以上にすることで、実データを使った検証が可能となります。
例えば、本番がオンプレミス環境である場合、ステージングも同様の物理サーバを用意することが望ましいです。
ネットワーク帯域についても、本番と同等以上の回線を引くことで、通信遅延を再現できます。
このとき、内部通信の構成も本番と同一にします。
ネットワーク機器のOSやミドルウェアも本番環境と同じバージョン、パッチ適用状況で構築することが大切です。
このように、できる限り本番環境と同一の環境を構築することで、運用上の問題点も事前に発見できます。
定期的な更新と同期を行う
本番環境への変更は、すべてステージング環境に適用し、同期する必要があります。
本番とステージングの設定に差異があると正しい検証ができません。
OSやミドルウェアのアップデート、セキュリティパッチの適用状況を定期的にチェックし同期をとる運用が重要です。
例えば、本番環境のOSやミドルウェアをアップグレードしたのにもかかわらずステージングは古いバージョンのままだと、新バージョンに起因する不具合が再現できません。
逆に、ステージングの方が新しいバージョンだと、本番移行時に予期せぬエラーが発生する可能性があります。
このため、本番の変更はステージングにも適用するという同期運用が重要です。
本番環境とステージング環境の同期は、自動化ツールを活用することで効率的に実施できます。
月次での定期的な状況チェックも重要な運用プロセスだと覚えておきましょう。
複数人で利用する場合は制限を設ける
ステージング環境へのアクセスユーザや、テストユーザの利用をある程度制限することが望ましいです。
ステージング環境を全社的に自由に使用できると、意図しないデータ操作や設定変更が発生する可能性があります。
テスト目的と利用人数を限定した上で、アクセスと権限の管理を明確にすることが必要です。
例えば、国内グループ会社から一部担当者にのみVPN接続によるアクセス権を付与し、ID/パスワードによる認証を行うことで不特定多数からの利用を防ぐことができます。
テストの目的ごとに区分したIDを発行することで、テスト中のデータ更新をある程度把握できます。
同一人物に複数IDを発行してそれぞれで作業するケースも多く、それらの紐付け管理も必要です。
不特定多数が自由にアクセスできると、テスト結果に悪影響が及びます。
運用テスト中の意図しない更新や誤操作を防ぐため、利用制限は非常に有効な手段です。
監視を行う
ステージング環境も、本番と同等に稼働監視をする必要があります。
CPU・メモリの使用率やディスク残量といった基本的な資源監視に加え、アクセスログやエラーログの確認も行いましょう。
サーバーダウンを未然に防ぐとともに、テスト中の動作状況を把握できます。
ステージング環境の場合、定常時とテスト時で負荷状況が大きく異なるため、十分な監視が必要です。
テスト実施前からサーバリソース(CPU、メモリ、DISK)に余裕があるかを確認し、混雑や停滞が発生しやすい箇所をあらかじめ把握しておきます。
また、テスト中は定期的に(1時間に1度等)パフォーマンス指標をチェックし、サーバ過負荷等の異常値がないか監視します。
万が一、サーバダウンや過負荷が発生したケースは、原因特定と対応記録を残すようにします。
これが、次回テストの参考になり、検証環境の改善につながります。
セキュリティに配慮する
ステージング環境にも、一定のセキュリティ対策を適用しましょう。
OSやミドルウェアの定期的なセキュリティパッチ当てはもちろん、ウイルス対策ソフトやファイアウォールのインストールも有効です。
アクセス制限やVPNを設定して、漏洩リスクを下げることも重要なポイントです。
ステージング環境は本番の複製環境のため、本番と同等のセキュリティレベルが必要です。
特に個人情報や機密情報が含まれる場合は注意が必要です。
ウイルス対策ソフトは必須であり、OSやミドルウェアのセキュリティパッチ、セキュリティ定義ファイルも定期的に更新する必要があります。
さらに、外部との境界にはファイアウォールを設置し、堅牢なセグメント化を行いアクセス制御します。
ステージングサーバ自体への通信も最低限まで制限することが望ましいです。
ステージング環境の設定変更やテスト作業はオンプレミス内からのアクセスに限定することで、外部からの攻撃や不正アクセスのリスクを下げることができます。
まとめ:ステージング環境でしっかり検証を行いましょう
本記事では、ステージング環境の役割と重要性、構築方法、検証手順について解説しました。
ステージング環境(stg環境)は、本番を模したテスト環境であり、実運用下での動作をシミュレートできます。
ステージング環境での検証を十分に行うことで、安定したシステムリリースが可能となります。
システム変更の運用リスクを回避したい場合は、まずは低コストでステージング環境を構築することをおすすめします。
ステージング環境はクラウドを活用することで、簡単に導入可能です。
ステージング環境の活用について、ご相談やご質問がある場合は、株式会社Jiteraにお問い合わせください。
Jiteraは、AIを活用したシステム開発プラットフォームと、高度な技術力を持つ開発チームによって、お客様のステージング環境構築・運用、そして開発全体を包括的に支援いたします。
システム開発における検証やIT関連でお困りのことがございましたら、ぜひお気軽にJiteraにご相談ください。
お問い合わせはこちら