コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Webアプリ開発における検証環境に求められるものとは何なのかを言語化する

検証環境というものは最初からあったりすることが多いが、元々どういうものとして存在すべきなのか。

検証環境はなぜ必要なのか

多くの開発において、実際に使われる環境、いわゆる本番環境や商用環境といわれるものでシステムが稼働する前に最終的に問題ないかを確認する工程がある。多くの場合この工程をQA(Quality Assurance)、日本語で言う「品質保証」の工程で行う。そのQA工程を行うときに本番環境に反映する前に動作確認するために「検証環境」が必要となる。

検証環境の考え方

前述のとおり検証環境は「品質保証」のために利用される。そのため、「出そうとしている機能や内容が問題ないかを検証する」ということができる必要がある。

この「問題がない」というの内容に解釈の幅が多くあるが、「本番で機能を使った場合に問題が発生しない状態」ということを確認する必要がある。そのため検証を行う環境は本番環境とほぼ同じ状態に近づけることで起きうる問題をあぶり出すことができる。そのため検証環境では「本番環境と同等の状態を再現する」ことが必要となってくる。

「本番環境と同等の状態を再現する」とはどういうことか

完全に本番と同じ状態にすることはできないが、できうる限り近づけることが検証での問題のあぶり出しにつながる。そのできうる限り近づけるためには以下の内容をベースに考えると近づけると考えられる。

  • システム構成をなるべく本番と同じにする
  • データの内容をなるべく本番と同じにする

それぞれに関して記載をしていく

システム構成をなるべく同じにする。

構成を同じにするというのは、文字通りシステム構成を本番環境と検証環境で差異を無くすということ。2023年の現代においてはTerraformのようなIaCツールがあるので、本番と検証環境の差異を少ない状態で再現させることは可能となっている。

また、IaCだと合わせにくい部分ではURLのドメインなどに関しての内容は合わせにくくなる部分になるので気をつける。Cookieなどに関してはこのドメインが影響する場面があるので、フロントエンドで複数のサービスが関連するプロダクトの場合には気を払う必要がある。

データの内容をなるべく本番と同じにする

検証環境ではデータの内容がダミーで用意されることがある、しかしながらその場合には以下のような点で検証とならない可能性がある。

  • 文字数などが現実と沿わないデータになっていると、デザインの崩れなどに気づけない可能性がある
  • 検証用のデータが現実の運用時よりも少ないと、データの総量が多いときのみ露見する問題がある。

このような問題を回避するには現実に運用しているプロダクトのデータと差異を無くすことが重要となってくる。

本番と差異の出す部分

本番と揃えるべきポイントは記載したが、必ず変わるポイントもいくつかあるので記載しておく

  • ドメインなどのユニークを表す環境情報(これらは環境変数に逃がせる情報が主)
  • 公の場に見えないようにするための設定(BASIC認証や、特定IPのアクセスに絞るなど、パブリックな公開状態にならない仕組み)

検証環境に必要なもの

改めてこれまでの内容をまとめて「検証環境に求められるもの」をざっと表現すると以下のとおりになる

「検証環境には本番環境とほぼ同等の構成とデータを整備することが求められる、ただしURLのドメインなどのユニークな部分や公に見えなくする仕組みの差分は必要な差分としてある」

参考リンク