エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

本番環境・ステージング環境・開発環境の違い【376日目】

こんなことありませんか

本番環境、ステージング環境、開発環境と聞きますが、
それぞれどう違うんだと。

本番環境と開発環境の2つだけで良くない?とか。

なんでこの3つがあるのでしょう。
まず、それぞれがどんな役割か見てみましょう。

本番環境

本番環境。公開している場所ですね。
この環境で、一般ユーザーはサイトとかを見ているわけです。

なので、たくさんのアクセスがあっても耐えられる環境とかにするわけです。

開発環境

プログラミングとかする人が使う環境です。『作業場所』です。
本番環境と『同じような、似た』環境を用意して、そこで開発します。

本番環境でPHPを入れてるなら、PHPが動く環境を用意しましょう。

このとき、

本番環境:LAMPで構成  
開発環境:nginx+php-fpm+mysqlコンテナで構成  

とかでもいいです。

OSとかが厳密に一緒じゃなくても良いです。ちゃんと同じ動作するだろうなーって感じの環境。

もし本番環境と開発環境だけだったら?

さあ、開発環境で動いた!じゃあ本番環境に反映だ!!!

え、動かない・・・そうか、本番環境と開発環境のここが違うからか・・・
ってことになって、バグが起こって、ユーザーみんなおこだよ(### ゚Д゚)みたいなことになっちゃいやですね。

なのでステージング環境があります。

ステージング環境

本番環境とほぼ同じ構成で作ります。

本番環境:LAMPで構成    
ステージング環境:LAMPで構成  
開発環境:nginx+php-fpm+mysqlコンテナで構成  

ってことで、ステージング環境と本番環境はほぼ一緒にしましょう。
ほぼ、というのは、マシンスペックとかはちょっと違うときがあります。

本番環境が超ハイスペックPCをたくさん使うなら、ステージング環境も超ハイスペックPCをたくさん使おう!

・・・とかお金かかりすぎるので、

本番環境とOSとかは一緒だけど、スペックだけ少し落とすとかはよくあります。

つまり?

開発環境は、プログラムを作るあくまで作業場所!

ステージング環境で、本番そっくりな場所でちゃんと動くかを確認する。

問題なかったら、本番環境に反映しよう!