投稿日:2022/01/17

【サーバ】本番、ステージング、開発それぞれの違い

   

初めに

こんにちは、サーバエンジニアのnekoです。
年明け1本目ですがいつも通りやってきます。

 

前回の記事で予告してた通り、各環境ごとに何がちゃうの?
と、言う話をしたいと思います。
プロジェクトによって呼び方や用途が違う事もあるので
「ウチは〇〇〇って呼んでた~」など、ありそうですが
大体共通して「本番」「ステージング」「開発」の3つに大きく分かれるかと思います。

 

各環境の役割

 

本番

サービス運用中の環境です。
ユーザーが使うための環境で
ここで障害が起きると大変なので他環境があるといった感じです。

この環境は負荷のかかるサーバを並列に用意することで
アクセスが増えてもサービスが止まらないようにしています。
また年末年始や〇周年などのイベントがある際は
運営中の負荷の傾向から前もって多めにサーバを用意している事が多いです。

  • サービスを運営するための環境です
  • ゲームをユーザーに遊んでもらうための環境です
  • たくさんサーバーが用意されている
ステージング

サービスや会社によってステージングの作り方は違います。
主に下記のようなものをステージングサーバと呼びます

  • 本番と同じバージョンの環境
  • 次のリリースバージョン
本番と同じにしておくことで本番では確認できないことを確認出来たり
バグなどの報告が上がった際に本番でのはなくステージングで検証をすることで
障害のリスクを下げる事が出来ます。
ステージングサーバは本番とサーバの構成は同じで
スペックを落としたり、DBやwebサーバの台数を減らしてコストを抑えられるように
していることが多いです。
  • 疑似本番環境
  • リリース前の最終チェックや本番で確認できないことを確認するための場所
開発環境

開発環境はまず2つの分類があります。

  • 個人の開発環境 (ローカル環境)
  • 開発環境 (dev環境)

個人の開発環境は各々のPCに仮想的にサーバを建てて
機能開発を行う環境です。
Dockerを使ってwebやDBサーバを作ることが多いです。

共有の開発環境は、個人の開発環境で作ったものを
開発ブランチなどにマージして企画の方やフロントエンド(アプリ)の方へ
見てもらえるようにする場所です。

開発環境のサーバー構成は最低限にしていることが多く
webとキャッシュのサーバが1台に入っていたりします。

また、同時に複数の修正を行うことがあるので
共有の開発環境は複数あり用途ごとに名前がついていたりdev1、2、3、、、のような連番がついていたりします。

  • ローカル環境は個人の開発環境、開発環境は共有の開発環境
  • ローカル環境はDockerを使った仮想環境を使うことが多い
  • 開発環境は同じ構成の環境がいくつもあり、用途ごとにバージョンが違う事がある

 

まとめ

表にまとめるとこんな感じです。

名称 サーバ構成 用途・目的
本番 余裕をもったサーバ台数 ユーザにサービスを提供する環境
ステージング 本番と同じ構成のスケールダウン版 本番で確認しにくい内容を確認できる
開発 ローカル環境 各開発PCの中に仮想環境を作る 機能開発のための個人専用の環境
dev環境 共有の開発環境 確認用
表面上に見えてるサーバと同じくらい開発用のサーバもあり
実装の安全性、速度と同じくらい費用を抑える事が大事になっています。次回はDB設計の話を考えています。
また次回もよろしくお願い致します。