web-dev-qa-db-ja.com

開発者として、システム管理者がWebファームの展​​開とWebアプリケーションの安定性を向上させるのをどのように支援できますか?

問題:

このサイトの展開と管理は悪夢になっています。開発からQA、および実稼働前までの展開には、数日かかります。私たちは多くのエラーを抱えており、それは多くの手作業を伴います。多くの場合、構成ファイルが誤って更新または変更された後、そのWebサーバー上のサイト全体に障害が発生します。

環境:


  • 多数のWebフロントエンドサーバー(Windows 2003、IIS6)
  • 多数のMemCachedサーバー(Linux)
  • 複数のデータベースサーバー(SQL 2005)
  • 月に約500万ユニーク

より詳しく:

私はシステムの開発を担当する開発者の一人です。現在、自動化はゼロ、自動テストはゼロであり、展開プロセスには、ターミナルサーバーを使用してサーバーにログインし、IIS設定、構成ファイルの更新、および同様のホラーを手動で変更することが含まれます。災害復旧ドキュメント望まれることがたくさん残っています。

サーバーの操作を処理するチームが、作業中のアプリケーションを正常に展開および保守できるようにしたいと思います。ですから、部分的に非常に利己的な理由で、私は彼らに成功してもらいたいのです。

方向性を教えてください。開発者として、彼らがより成功するのに役立つものをどのように作成できるかについて、私が彼らに尋ねることができる具体的な質問、または私が行うことができる提案について。

現在、少し混乱が起こっています。実際に修正する唯一の方法は、混乱を無視して問題に集中することだと思います。そして現在の問題は、サイトの保守、トラブルシューティング、および展開に非常に手間がかかることです。

ありがとうリハン

2
Rihan Meij
  • 与えられた構成の健全性をチェックし、構成を行っている人に直接問題を報告するコードと、ログに記録するコードを記述します。

  • 環境固有の構成値と、開発、テスト、受け入れ、製品(DTAP)のストリートで変更せずに実行する必要のある構成値を明確に区別します。

  • バージョン管理ソフトウェア(Subversionなど)を使用して、すべての環境での構成変更を追跡します。

  • 誇大妄想狂のようにDTAP環境の構成を管理します。

  • リリースを提供した直後、コーディングを再開する前に、本番環境を開発を含む他のすべての環境にコピーするように手配してください。これを仲間の開発者に伝えるときは、どれが白くなるかを確認し、ソース管理から自由に置き換えることができなかったアセットを尋ねます。

  • 最も重要なこと!!!あなたはおそらくこの考えを読んでいます、このばかは誰ですか?それ無理!私たちはそれをすべて行うことができませんでした。死んだ権利-もちろんできません-今はできません。 (まだ問題がなければ、質問することはありません)。したがって、ビジョンと実装を分離します。そのビジョンを他の利害関係者と共有します。どの機能が必要かを一緒に決定し、そこに到達し始める計画を​​立てます。サイクルやリリースなどごとに、ビジョンにさらに一歩近づくようにしてください。現実的な目標を設定し、それらを達成します。 (もちろん、経験に基づいてビジョンを変えることはできます。)

5
Dominic Cronin

サーバーの設定と構成ファイルを同じに保つこととは別に、オフィスに展開するテスト環境が必要だと思います。開発者が開発したコードが実際の環境に非常によく似た環境で機能することをテストすると、開発者はより自信を持てるようになります。自信が増すということは、彼らが必然的に早く成長し(これは私たちがスクラムチームから学んだことなので)、混乱やコントロールできないという感覚がはるかに少ないことを意味します。

つまり、基本的に私が言っているのは、開発者にたくさんのマシンを与えて遊んでテストするだけで、良い結果が得られるということです。

2
Jonathan

最も重要なステップは、インフラストラクチャ全体のすべてのサーバーの構成を可能な限り一貫性のあるものにする簡単な方法です。次の場合は、標準動作環境(SOE):

  • すべてのIISインスタンスの構成は同じです。
  • すべてのWebサーバーには、サイトの同じコピーがあります。

これを取得すると、自動ロールアウトやテストなどを実装することが大幅に可能になります。

IIS構成がすべてのサーバーで同一である場合、構成ファイルを更新できますIIS 1つのマスターサーバーで使用し、スクリプトを実行してすべてのサーバーにプッシュしますWebサーバーをテストし、IISをリロードします。実際のWebサイトファイルに対しても同じことができます。

1
Alex J

私の推測では、デプロイ先のサーバーを標準化するオプションがあれば、今までにそれを行っていたはずなので、その提案はスキップします。実行する必要があるのは、運用チームの展開プロセスを自動化するためのスクリプト/ MSIなどを構築することです。セットアップには少し時間がかかりますが、Opsチームの手動介入をプロセスから削除することが、スムーズに実行するための唯一の方法です。今、私は彼らの知性を侮辱していません。問題は、彼らがコードがどのように機能するかを知らないということです。彼らは悪い値の設定ファイルがどのように見えるかを知りません。彼らはあなたが彼らを助けることを知っていることと、自動化があなたの問題を解決するための鍵である理由に依存しています。

私の提案は、さまざまなサーバーを模倣する仮想マシンをローカルにセットアップして、インストールがどのように機能するかを何度もテストできるようにすることです。 IT部門が私のようなものである場合、予算やリソースの割り当てなどが含まれるため、新しいサーバーを取得するのは困難です。仮想マシンは、新しいハードウェアを必要としないため、頭痛の種の大部分を取り除き、誰からの入力も最小限に抑えられます。サーバーがどのように構成されているかを知る必要があるだけなので、残りはおそらく自分で行うことができます。 VMを使用すると、マシンを元の状態にすばやくリセットして、インストールプロセスを再試行することもできます。

1
kemiller2002

私のインフラストラクチャには、プレビューと呼ばれるステージング環境があり、データが本番環境に到達する前に送信されます。ステージングレベルのアプリケーションコードは本番コードとまったく同じであるため、データの問題があればそこに表示されます。

また、古い既知の良好なデータを操作する新しいコードのテスト環境もあります(コードがどのように失敗するかをテストするために必要なときにマングルすることができます)。

一般的に言って、この分離により、かなり堅固な本番環境を構築でき、予期しないことがあまり多く発生することはありません。

私はプログラマーではないので、あまり扱っていないことに注意してください。データベースを同期して、要求されたらファイルを更新するだけです;-)

1
Matt Simmons

何よりもまず一貫性。すべてのサーバーが完全に同じであることを確認してください。すべてのW2003Webサーバーは他のサーバーと同じように見えるはずです。すべてのDBサーバー、すべてのLinuxサーバー。つまり同じ。同じOSバージョン、同じパッチ、同じディレクトリ構造...すべて!

2番目はステージングです。デプロイメントのテストに使用できる、タイプごとに個別のサーバーが必要です。これは、すべての構成ミスを犯す場所です。次に、これらのデプロイメントサーバーから本番環境にシステムをコピーします。

3番目に、「関心の分離」の概念を構成ファイルに適用する必要があります。モジュールごとに構成項目が異なる場合は、それらを独自の構成ファイルに入れてください。マシン固有の構成がある場合は、ITを独自の構成ファイルに移動します。このようにして、影響を受ける構成ファイルを、コンポーネント自体とともにデプロイメントサーバーからデプロイできます。

0
Brad Bruce

一言:バックアップ

それらが適切で、一元化され、冗長で、一貫性のあるバックアップを持っていることを確認してください。

0
skitzot33