開発、ステージング、本番の環境をどう分けて管理しますか

環境ごとに置き場とデータと鍵を分け、違いは設定と環境変数だけにする、と答える問い。秘密の値をコードに書かない理由と、IaC で同じ環境を作り直せるようにすることまで話します。

答えてみる

面接官に「開発、ステージング、本番の環境をどう分けて管理しますか」と聞かれたつもりで、答えを見る前に自分の言葉で答えます。

声に出して答えた人は「書かずに答えを見る」で開けます。

解説を読む

聞かれ方から関連するコースまで、この問いの解説を全部ここに置いています。

こう聞かれます

  • 「開発、ステージング、本番の環境をどう分けて管理しますか」
  • 「データベースのパスワードや API キーは、どこに置きますか」
  • 「ステージングでは動いたのに、本番で動かないことがありました。なぜだと思いますか」

面接官が見ている点

  • 環境ごとに、置き場、データ、鍵 (秘密の値) を分けているか
  • 秘密の値をコードやリポジトリに書かず、秘密の値を預かる仕組みに置くと言えるか
  • 環境の違いを「設定だけ」に絞り、作りは同じにしようとしているか
  • 手で作った環境は再現できない、と分かっていて、IaC (設定をコードで書いて環境を作る方法) を知っているか

短い答え

  • 開発、ステージング、本番で、クラウドのプロジェクトやアカウント、データベース、鍵を分け、ステージングで壊しても本番に届かないようにします。
  • 環境ごとの違いは環境変数と設定ファイルだけにし、パスワードや API キーのような秘密の値は、コードに書かず、秘密の値を預かる仕組み (AWS Secrets Manager や Google Cloud の Secret Manager など) に置きます。
  • 環境そのものは Terraform のような IaC で書き、同じ手順で作り直せるようにします。手で作った違いが、本番だけで起きる不具合のもとになるからです。

少し詳しい答え

3 つの環境の役目

  • 開発手元や開発用のクラウドで、自由に試して壊してよい環境です
  • ステージング本番とできるだけ同じ作りにして、出す前の最後の確かめをする環境です。データは本物ではなく、試し用の物を使います
  • 本番利用者が使う環境です。触れる人を絞り、変更は決まった手順 (CI/CD) を通してだけ入れます

分ける物

環境ごとに、次の物を分けます。

  • 置き場 クラウドのプロジェクトやアカウントを環境ごとに分けると、権限も料金も分かれ、間違えて本番を消す事故を防げます
  • データステージングに本番の個人情報をそのまま写しません。要るときは、名前やメールを置き換えてから使います
  • 鍵環境ごとに別の鍵を使い、ステージングの鍵が漏れても本番には入れないようにします。人や仕組みに渡す権限は、要る分だけにします (最小権限)

コードは同じ物を使い、違いは環境変数で渡します。

ターミナル

# .env.example (値の無い見本だけをリポジトリに置く)
DATABASE_URL=
PAYMENT_API_KEY=
APP_ENV=development

本物の値を書いた .env は .gitignore に入れてリポジトリに載せず、本番の値は秘密の値を預かる仕組みから、配備のときに渡します。

IaC で作り直せるようにする

管理画面を手で触って作った環境は、何をどう設定したかが残らず、ステージングと本番がいつの間にかずれます。Terraform のような IaC で、サーバー、データベース、権限などを書いておくと、同じ物を何度でも作れ、変更もコードの差分としてレビューできます。

トレードオフ

環境を増やすほど、費用と手間が増えます。ステージングを本番とまったく同じ大きさにすると、料金も本番と同じだけかかります。だから、ステージングは作りを同じにして大きさを小さくする、小さなチームなら PR ごとのプレビュー環境と本番の 2 つで回す、のように、事故の重さと費用で釣り合いを取ります。

IaC も、書いて覚える手間がかかります。数個のサーバーで、作り直すことがまず無いなら、手順書で足りることもあります。環境が増えたり、人が増えたりした所で IaC に移します。

話すときは、自分が関わったサービスで、環境をどう分けていたか、秘密の値をどこに置いていたかを 1 つ用意しておきます。

よくある間違い

  • 秘密の値をコードや設定ファイルに書いてリポジトリに載せる履歴に残るので、あとで消しても見えてしまいます。載せてしまったら、その鍵を作り直します
  • ステージングに本番の個人情報をそのまま写すステージングは守りが弱いことが多く、漏えいのもとになります
  • ステージングと本番の作りが違うステージングで確かめた意味が薄れます。違いは設定だけにします

深掘りの問い

  • 「ステージングで動いて本番で動かないのは、なぜですか」環境変数の値や権限の違い、データの量や中身の違い、手で入れた設定のずれ、を疑う、と答えます
  • 「秘密の値を誤ってリポジトリに載せたら、どうしますか」まずその鍵を無効にして作り直し、使われた跡が無いかを記録で確かめ、それから履歴から消す、と答えます
  • 「誰が本番に入れるようにしますか」本番の権限は要る人だけに絞り、ふだんの変更は CI/CD を通し、手で入るときは記録が残るようにする、と答えます

確認日 2026年10月24日

技術面接問題の一覧へ戻る