ステージング環境と本番環境


80

私はエンタープライズアプリケーションを構築する会社で働いており、開発(またはdev)、ステージング(またはステージ)、本番(またはprod)の3つの環境を維持しています。

devの意味は直感的です。アプリケーションの開発中に使用される環境です。

ステージング環境と運用環境の違いは何ですか?

回答:


122

中小企業(自社の規模が明確ではない)の場合、3つの環境(開発、ステージ、プロダクション)が一般的です。大企業では、開発とステージの間にQA環境があることがよくあります。

これらは通常、次のように分類されます。

dev:作業コードのコピー。開発者が行った変更はここにデプロイされるため、統合と機能をテストできます。この環境は迅速に更新され、アプリケーションの最新バージョンが含まれています。

qa:(すべての企業がこれを持っているわけではありません)。品質保証のための環境。これにより、テスターがチェックを実行できるアプリケーションの変更頻度が少なくなります。これにより、共通のリビジョンに関するレポートを作成できるため、開発者は、テスターが発見した特定の問題が開発コードですでに修正されているかどうかを知ることができます。

ステージング:これはリリース候補であり、この環境は通常、実稼働環境のミラーです。ステージング領域には、アプリケーションの「次の」バージョンが含まれており、稼働前の最終ストレステストとクライアント/マネージャーの承認に使用されます。

production:これは現在リリースされているアプリケーションのバージョンで、クライアント/エンドユーザーがアクセスできます。このバージョンは、予定されているリリース中を除いて変更しないことが望ましい。


7
これはソフトウェアに関して正しいです。データもあります。devとqaはテストデータベースに接続されているため、開発者とテスターは変更の導入について心配する必要はありませんが、ステージングとプロダクションはプロダクションデータベースを使用します。銀行を考えてください。
フアンラヌス

4
別の次元があります:ユーザーは誰ですか?dev:開発者。qa(qcが望ましい):テスター。ステージングと実稼働:実際のユーザー。平均的なデータベースを持つビジネスアプリケーションでは、開発者は実稼働データベースに触れることはもちろん、匿名化されたバージョンを見ることができません。
フアンラナス

3
@JuanLanus:通常、ステージング環境は本番データのコピーを使用します -通常、本番データをステージングから変更したくないでしょう。
sleske 14

1
@JuanLanus:申し訳ありませんが、「ステージング環境での編集をprod環境で表示したくない」ことを意味していました。したがって、ステージングでは運用データのコピーを使用しますが、(通常)編集可能なコピーを使用します。
sleske 14

2
qaを「テスト」と呼びます:dev(me)、test(team)、staging(client)、prod(world)
Rudie 14年

13

ステージングに昇格する前にコードを移動する場所として、テスト環境も存在しないことに少し驚いています。

質問に答えるには:

ステージ環境は、本番環境を可能な限り厳密にミラー化する必要があります。

これは、デプロイメント手順の検証に使用されます。コードが本番稼働準備ができたら、問題を引き起こすことなくデプロイできることを確認します。

つまり、コードはステージングに進みます-これは、展開が計画どおりに行われたことを確認するために、包括的にテストおよび回帰されます(そうでない場合は問題を解決します)。


1
まさに-コードを開発環境からより制御された環境に持ち込むこと、特にドキュメントで見落とされた依存関係、およびライブ/製品環境での「うまく機能している」ことを示すために存在します。
ダニーステープル

これは...しかし、質問とは何の関係もありません
nbro

4

ステージ環境は、実動をミラーリングするpreprod環境です。多くの場合、実際のユーザーとQAテスターで構成されるテストグループが、事前にリリースされたコードベース/データがprodのような環境で展開され、正常に動作することを確認できるように、通常はスクリプト化されたユースケースとリグレッションを通じて、実稼働データが含まれる場合がありますテスト。

@Odedのメモにあるように、通常、QAテスターがコードのテストに使用するQA環境が一般的です。


3

米国政府/国防総省ITでの私の経験は次のとおりです。

  1. DEVELOPMENT / TESTは、開発者およびアプリケーション開発者向けです。エンタープライズシステムから離れた場所でアプリケーションを構築およびテストします。
  2. アプリケーションが完了すると、IT環境のPACKAGINGサーバーにデプロイされます。
  3. その時点から、アプリケーションはITによってサポートされ、STAGINGに移行されます(ITが実装ガイドライン、構成などを開発/確認できるようにします)。PRODUCTIONを複製するシステムでアプリケーションが期待どおりに機能することを確認するために、この段階でユーザーテストをある程度行うことができます。
  4. すべてのテスト計画が完了し、それらの準備が整ったら、アプリケーションはPRODUCTIONに移行され、維持(つまり、運用と保守、またはO&M)モードに移行します。
  5. 開発者からの新しい更新もPACKAGINGに展開され、プロセスが続行されます。

2
プログラマーへようこそ。当サイトは質の高い質問と回答に焦点を当てています。典型的なフォーラムとは違います。詳細については、ヘルプセンターをご覧ください。あなたの答えが、この質問に対する他の答えによってまだなされていない点にどのように対処しているかわかりません。

2

Web開発者として、実際に考慮する主な3つの環境があります。

本番:エンドユーザーを対象とした製品の最終リリースバージョンをホストするように構成された環境。セキュリティとパフォーマンスのために最適化されています。ライブサーバーでホストされています。緊急のサポートが必要です。データが重要です。したがって、そのデータは定期的にバックアップされます。また、リスク管理と災害復旧も含まれます。実稼働環境は、エンドユーザーにわかりやすいエラーを表示するように構成されています。

ステージング:コードのフリーズを宣言した後、アプリケーションのリリース候補をホストするように構成された環境。リリース候補の範囲に同意するために、開発チームとともにプロジェクトマネージャー/所有者を対象としています。これには、品質保証が含まれ、また、開発チームが本番環境にリリースする前に最終修正と最終備品を行う必要があります。ベストプラクティスは、運用環境からコピーされたライブDBから利用可能な最新のデータを使用して、運用環境を模倣することです。通常、ステージング環境は内部チームと利害関係者のみがアクセスできるため、すべての利害関係者がローカルネットワークにアクセスできる場合は、パブリックサーバーで保護されるか、イントラネット環境で公開されます。ステージング環境は、中程度または完全な技術的エラーを表示するように構成されています。

開発:開発サイクル(通常、スクラム環境ではスプリントと呼ばれます)の間に自分の作業をチェックするために、マシン上の1人の開発者によって構成されたプライベート環境。開発環境は、完全な技術的エラーを表示するように構成されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.