16

私の勤める会社は、お客様のサーバー環境にいつも悩まされているようです。

具体的には、ほとんどの場合、テスト サーバーと運用サーバーで問題が発生し、それらの構成が常に異なるように見えるという事実があります。開発したアプリケーションをテストするとき、テスト サーバーは 1 つの方法で動作するため、その特定の動作に合わせてアプリケーションを微調整および構成します。しかし、実稼働サーバーに同じアプリケーションをインストールすると、テスト サーバーと一致しない別の動作が観察されるため、微調整や構成が役に立たなくなります。最もイライラする部分は、これが常に発生し、誰もそれについて何をすべきかを知らないように見えることです.

もちろん、なぜこれが起こるのかについての一般的な考えはあります。すべてのクローン環境は同じように開始され、最初の数日は同じように機能しますが、遅かれ早かれ誰かがサーバー環境の 1 つだけで何かを再構成します (データベースの更新、コンポーネント ライブラリの更新、Web ファイルの更新など)。または他の構成)、それによって不一致につながります。そして、時間が経つにつれて、より多くの不一致が蓄積されます。しかし問題は、それについて何ができるかということです。

Web を検索してみましたが、何をすべきかについて良い答えが見つかりません。私も自分でいくつかの解決策を見つけようとしましたが、私のアイデアのほとんどは何らかの形で問題があるようです. 新しいルーチンは、どんなに厳密であっても回避できます。テスト サーバーを作成するために運用サーバーを定期的に複製するのは面倒で、多くの場合非常に時間がかかります。自動複製は常に信頼できるとは限らず、可能でさえありません。では、この問題について私たちは一体何をすべきなのでしょうか? テスト時のエクスペリエンスが本番稼働時のエクスペリエンスと一致することをどのように保証できますか?

他の人もこの問題を抱えていると思います。それとも彼らはしますか?たぶん、無能なのは私の特定の会社だけですか?問題に遭遇した人はいますか?もしそうなら、あなたはそれについて何をしましたか?

心から、

Linus、スウェーデンのシステム開発者

4

5 に答える 5

6

テスト環境に加えたすべての変更の追跡を開始し、これを運用環境に伝達する方法を提供する必要があります。

codeの場合、これは CVS、Subversion、GIT などのバージョン管理システムを意味します。

データベースの場合は、構造比較ツールまたは運用データベースを更新するスクリプトをデプロイすることを意味します。

構成の場合、2 つのシステムはまったく同じである必要があり、「微調整」または変更は、最初にテスト サーバーに適用し、その後、展開時に運用サーバーに適用する必要があります。

機能するプロセスができるまで、問題は発生し続けます。

于 2009-03-12T17:40:35.397 に答える
0

あなたの問題はごく普通のことです。私が知っている少なくとも2つの戦略がかなりうまく機能します:

Linuxで配布している場合は、開発プロセスからrpm / debsをビルドし、パッケージ管理機能を使用できます。多くのプロジェクトがこれを行っており、社内プロジェクトで大きな成功を収めていることを私は知っています。

もう1つの方法は、環境全体をある種のシェルスクリプトとしてパッケージ化することです。このシェルスクリプトは、すべての設定で完全な環境を構成できます/構成する必要があります。通常、このスクリプトは開発によって維持され、このスクリプトは手動で行われた変更を上書きします。このようなスクリプトは通常、開発によって維持され、バージョン管理下に置かれ、完全なディストリビューションとしてデプロイメントに送信されます。これにはcygwinを使用します。通常、スクリプトは、操作によって管理される可能性のあるある種の構成を読み取ります。完全に空白の、新しくインストールされたマシンにインストールするかのように、システム全体を最初から実際にセットアップするスクリプトがあります。

これらの戦略の両方に、ビルドスクリプト/ビルドシステムからのこれらのアーティファクトの自動生成を含めることが望ましいです。このプロセスがスムーズに実行されるほど、すべての関係者にとってより良いものになります。

于 2009-03-12T17:41:25.363 に答える
0

環境への変更が一貫した方法で行われていることを確認する必要があります。

新しいイメージから始めて厳密な変更ログ ポリシーを適用するか、Capistrano のようなものを使用してリモート コマンドを実行し、コードをすべてのマシンに同時に展開することを検討します。

理想的には、すべての要件をバージョン管理システムにチェックインする必要があります (Rails で gem を /vendor ディレクトリに保存し、実行時にそれらを優先的にロードする方法に沿って)、環境のセットアップ方法を正確に説明する readme ファイルを用意する必要があります。 (必要なライブラリなど)。readme ファイルは、環境に変更を加えた人が厳密に更新する必要があります。

于 2009-03-12T17:37:42.020 に答える
0

MySQL データベースの同期を維持するために、次のツールを使用しました。

http://schemasync.org/

まだ実際に使用していないので、良いかどうかはわかりませんが、テストと本番の間のスキーマのずれを制御する方法が必要なので、試してみます.

于 2011-06-01T23:05:53.217 に答える