1)開発プロセスに関してどのような別個のサーバーが存在しますか?彼らの目的は何ですか?
私の経験では、重要な唯一の概念/アイデアは、すべての環境(サーバー=>開発、ステージング、本番)は、OS、Webサーバーのバージョン、サービスパック、パッチ、ホットフィックスに関して、まったく同じではないにしても、同じでなければならないということです。 、など。現在、少なくとも3つ(またはそれ以上)の異なる環境を用意することは可能かもしれないし、不可能かもしれませんが、これは私の経験からの標準である傾向があります。ハードウェアに関しては、それらが非常に類似または同一である限り、将来的に問題が発生することはありません。
2)マスターソースリポジトリはどこにありますか?
インターネットアクセスから隔離され、厳重に保護されています。アクセスを取得しようとする望ましくない試みからファイアウォールを保護するためのファイアウォールルールがたくさんあります。社内の開発者のみがリポジトリにアクセスできる必要があります。
3)開発作業はどこで行われますか?
大規模なプロジェクトや組織では、開発はプログラマーのコンピューター上でローカルに行われるか、ソースリポジトリー(SVN、CVS、VSSなど)を使用してローカルで行われる傾向があります。
4)テストはどこで行われますか?
「開発」環境でテストする人もいれば、「ステージング」でテストする人もいます。これは私にとってもう少し理にかなっています。2つのうちの1つを選び、それを使い続けます。個人的には、ステージングは、開発者が開発に変更を加えている場合にバージョンの変更を回避するためにテストする場所だと思います。
それぞれが少しずつ固有のコードを持つ比較的小さなWebサイトを開発するために、サーバーをどのように編成しますか?
基本的に、Webショップは環境を次のように編成します:development => dev、staging => stage、production=>prod。開発者は自分のマシンでローカルに作業し、追加/変更が完了すると、変更をソースリポジトリにコミットします。特定のショップはCI(継続的インテグレーション)と呼ばれるものを実行するため、開発者がコミットするたびに、CIサーバーは自動的にサイトに再構築されます。これは、開発者/テスターが開発者の変更から何かが壊れたかどうかを確認するのに役立ちます。
通常、これらの変更は、すべての開発者が作業できるように開発環境に公開されます。開発者が特定のマイルストーン/チェックポイントに到達し、テストを開始したい場合、開発者が開発で作業を続けることができる間、テスターが打ちのめすために、サイトのバージョンをステージング環境に「プロモート」します。
ステージングのすべてに満足したら、ステージングのバージョンをprodにプロモートします。変更は一方向にのみ流れる必要があります:dev->stage->prod。本番環境に変更を加える場合は、開発から開始し、ステージングでテストしてから、本番環境にプロモートします。それは苦痛ですが、物事の一貫性を保ち、多くの頭痛を防ぎます。多くの企業が本番環境に変更を加えただけで、数か月/数年後には、プロトコルに従うだけで多くの苦痛を軽減できたのに、環境の同期に問題が発生していることに驚かれることでしょう。
動的ページやデータベース呼び出しを超えて、単純または複雑ではないもののように作業を「小さい」と呼んでいる場合は、3つの環境を試してみてください。ただし、おそらく2つの環境を「回避」することができます(ステージングおよび生産)。自分のコンピュータをいわゆる開発環境にすることができます。