
ローカル環境
SEやプログラマが、実際にシステム開発を行う環境になります。OSとしては、「Windows」、「MacOS」であることが多いでしょう。
プロダクション環境にLinuxが採用されている場合は、それを意識したコーディングを行うようにしましょう。
- ファイルのパスや、セパレータ等
- ファイル名の大文字小文字など(Linuxは大文字小文字を区別するが、Windowsは区別しないため)
ただ、最近だとDockerを使ってローカルでコンテナを使って動作させることが多いです。Dockerを使えばLinuxを動かすことができるのでそこまで意識せずに実装することが可能になっています。なお、Linux distributionとしては「alpine Linux」や「Ubunts」などを採用することが多いです。
開発環境(development)
ローカル環境で開発したシステムをテストする環境です。顧客や運用チームに公開することは基本ないです。
細かくサーバーを分けてしまうとサーバー利用料金がもったいないので一つのサーバーで構築したりします。
ステージング環境(staging)
運用担当や、顧客(ユーザー)が、プロダクション環境にデプロイする直前に実際にテストをする環境のことです。テストの結果顧客からのフィードバックを返されて修正するケースが多いです。
開発環境でテストを実施済みものをデプロイします。
場合によっては、開発環境とステージング環境は一つにまとめるケースもあります。(その場合、開発が進むと開発側で検証したいのに顧客が確認できないので辛いみたいなことが起きてしまうのでできれば別れていた方が良いでしょう。)
プロダクション環境(production)
本番環境(運用時にアプリケーションを実行する環境)のことです。OSとしてはLinuxが採用されていることも少なくないですし、むしろコスト的にそれが普通になっています。
また、最近はインフラのクラウド技術の発達により、今までは、インフラエンジニアの仕事だったものが、分業することなく、アプリケーションエンジニアの仕事の一部にもなりつつあります。
OSやライブラリの脆弱性対策のためのアップデートなどのメンテナンスが必要になります。AWSなどのクラウドの場合はECSなどのマネージドサービス(勝手に脆弱性対策のアップデートをしてくれる)が登場してきているのでアップデート作業が不要で開発に専念できるようになってきています。
負荷分散のために細かく動作サーバーを分散させるケースが多いです。最近ならAWSのECSやEKSなどを使ってコンテナベースで動かすことが多いです。
この記事へのコメントはありません。