自動化されたサーバーとアプリケーションの展開に自信を持つための簡単な方法。

SATの質問のサンプル:xUnitは継続的インテグレーションを  自動化されたサーバー展開ですか?

ここLogicMonitorでは多くの成長を遂げてきました。 成長の一部は、より多くの顧客に対応するために新しいサーバーを起動することを意味しますが、さまざまな新しいサービスも追加しています。 さまざまな場所からの顧客サイトのパフォーマンスと到達可能性をテストするサーバーなど。 これはすべて、新しいサーバーを起動することを意味します。QA、ステージング、および開発環境では、多くの場合です。

データセンターの運用を行う古い手として、私たちは長い間、私たち自身を含め、人々を信頼しないという信条を堅持してきました。 人々は間違いを犯し、物事を機能させるために行ったことを思い出せません。 そのため、すべてのサーバーとアプリケーションは自動化されたツールによって展開されます。 私たちはたまたまPuppetを使用していますが、まとめてcfengine、chef、さらにはRightscriptsを使用しています。

したがって、新しいサーバーを立ち上げるために–問題ありません。 スクリプト化されており、繰り返し可能で、時間がかかりません。 しかし、XNUMXつのサーバーの機能を複数に分割するのはどうでしょうか。 また、変更や更新があった場合、デプロイされているサーバーが正しくセットアップされていることをどのようにして知ることができますか?

opsのバックグラウンドよりも多くの開発から来た成長を続けるLogicMonitorチームの比較的新しいメンバーに説明されたように、サーバーモニタリングは、継続的インテグレーション環境でのビルドの自動テストに非常に類似しています。

継続的インテグレーションでは、コードベースの大部分にバグがないかチェックするためにセルフテストコードが必要であるのと同様に、自動サーバー展開システムでは、監視を使用してサーバーをテストし、アプリケーションが正常に展開されていること、およびアプリケーションが正常に機能していることを確認する必要があります。 特定のクラスのアプリケーション用に新しいサーバーを起動すると、すべてがPuppetによって自動化されているため、すべてが正しく機能するはずです。 しかし、これが真実であるという自動検証があることは確かに素晴らしいことです–特にPuppetマニフェストへの変更の後で。

これには何が必要ですか?

  • 理想的には、テスト駆動展開です。 最初に監視テストを記述して、アプリケーション展開スクリプトがいつ合格するかがわかるようにします。 (たとえば、このポートにJMXがあるTomcatを探します。使用可能なヒープが少なくとも4Gであることを確認します。URLXがこの方法で要求に応答することを確認します)。
  • サーバーの展開を監視と統合します(これは、Puppet内から直接監視を構成する方法に関するビデオです)。 サーバーが起動するたびに、サーバーを監視に登録して、サーバーが監視されていることを確認します。 適切なアプリケーションカテゴリ、および本番の適切な段階(開発、QA、本番など)にタグ付けまたはグループ化して、適切なしきい値とエスカレーションポリシーを取得するためのボーナスポイント。
  • インフラストラクチャまたはアプリケーションでパフォーマンスまたは可用性の問題が発生した場合は、監視によって問題が検出され、適切に警告されない限り、問題がクローズされたと見なさないでください。 このようにして、監視でのテストのセットが増え、より完全なカバレッジが得られます。

それでおしまい。 自動化されたサーバーおよびアプリケーションの展開における信頼レベルを大幅に向上させることができる単純な原則。

冒頭の質問への答えは? 良い監視。