技術ブログ
技術ブログ
2017年03月17日
このエントリーをはてなブックマークに追加

コンテナ環境におけるNew Relicの活用

コンテナは、アプリケーションの分離された空間を提供します。アプリケーションの分離された空間を実現することで、1つのOS環境でありながら、プロセスを分離することができるため、マルチOS環境を実現することができます。

コンテナによるシステム構築のメリットは、

  1. ホストの Kernel を直接使うためオーバヘッドが小さく性能劣化がほとんど無い
  2. 必要とする資源が少なく、同一ホスト上でより多くの実行環境を立ち上げることが可能
  3. Kernel を個々に起動する必要がないため、実行環境の起動や停止が速い
  4. 同一構成の実行環境を簡単に複数作れる
  5. 再現性と可搬性が高くテストが通ったイメージを本番環境でそのまま使える
  6. 成果物を共有するコミュニティが整備されており、実行環境やアプリの構築が容易

などなど

 

開発環境やテスト環境と本番のホスト環境の微妙な違いによる動作の不具合などが、トラブルシューティングを複雑にし、ソフトウェア更新の妨げにもなっていました。コンテナを活用することで、ソフトウェアの再現性と可搬性が高まり、開発環境やテスト環境で作成したコンテナイメージから本番環境で動作させる実行環境を容易に複製可能となります。ホストへの環境の依存性が排除され、依存性やバージョンはコンテナの内部で完結するため、各ホストの言語やバージョンの違いを気にすることなく、コンテナイメージのビルドの時点で任意に指定できるようになります。またコンテナイメージはリポジトリ管理できるので、デプロイは一番新しいイメージからコンテナを起動すればよいですし、ロールバックは今より古いバージョンのイメージからコンテナを起動するだけです。コードのみでの通常のデプロイだと、サーバの環境がデプロイ前後で変わっている可能性を考慮した上でロールバックする必要がありましたが、コンテナには実行環境自体が含まれているため、ロールバックを確実に行うことが可能となります。このような特長からコンテナを活用することで、特にソフトウェアの実行環境を小規模な機能サービス毎に分割して個々にデプロイやサイジングを行うマイクロサービスのようなアプリケーション展開の省力化と迅速化が図れるようになります。

また、コンテナ環境では、アプリケーションのプロセスがコンテナごとに分離されますが、ホストOS環境から直接実行されるため、コンテナ上のCPU利用は、ホストOSと同等の性能を発揮できます。また、ネットワークやディスクI/Oについても、わずかながらのオーバヘッドは存在するものの、非常に小さくすることが可能です。そして何よりも起動や停止が非常に速く、プロセスが必要な時に実行環境を起動し、プロセスの終了とともに実行環境を破棄するといった使い方も可能になります。そのため、コンテナは「永続的に利用する実行環境」という使い方よりも「使い捨ての実行環境」や「大量に同一の実行環境を構築する」といった用途に強みがあり、デプロイ時の冪等性が保証され、一度作った本番の実行環境に変更を加えないというイミュータブル・インフラストラクチャやサーバレスアーキテクチャ実現の要となっています。

 

New Relic APMおよびInfrastructureをコンテナ環境の監視ツールとして活用することで、プロセスが必要な時に実行環境が起動され、プロセスの終了とともに実行環境が破棄されるようなアプリケーションおよびインフラが容易に管理できるようになり、迅速で適確な障害対応およびサイジングの最適化が図れるようになります。

これまでは監視対象のエンティティ個々に監視設定を行い、ダッシュボード表示など監視設計を行うことが一般的でしたが、プロセスが必要な時に実行環境が起動され、プロセスの終了とともに実行環境が破棄されるコンテナのようなライフサイクルの極めて短いエンティティに対して、個々に監視設定を行うことは非現実的です。このような非永続的な環境を個々に定型的に監視する事自体、もはやナンセンスといえます。

New Relic APMおよびInfrastructureは、予めOSや実行環境へエージェントをインストールしておくだけで、対象エンティティのデプロイと同時に動的に監視を開始することができます。監視対象個々の設定は特に必要なく、ダッシュボード表示など監視設計を行わなくても監視を始められます。クラウドサービスとして監視環境が提供され、監視環境の構築や設定、運用も必要有りません。エージェントのインストール作業に関しても、AMIのようなマシーンイメージやDockerのようなコンテナでエージェントをインストール済みの環境をパケージ化しておき、それを再利用することで、エンティティ個別にインストール作業を行う必要もありません。

New Relic APMを活用することで、分散する複数のコンテナで非永続的に稼働するアプリケーションの健全性を個々のコンテナ単位ではなくワークロード単位でリアルタイムにチェックすることが可能になり、迅速な障害検知およびそのルートコーズまで即座に把握できるようになります。そしてNew Relic Infrastructureにより、インフラの使用状況に関する更に深い洞察が得られるようになります。New Relic Infrastructureでは、サーバ上で稼働するコンテナを自動的にディスカバリーし、コンテナ単位に細分化して監視、分析することができます。また複数サーバに分散するコンテナをコンテナイメージ単位でアドホックに抽出し、集計して可視化します。集計されたコンテナのリソース情報とその上で稼働するアプリケーションの性能情報やデプロイやエラーといったイベント情報を相関して確認することができます。集計されたコンテナのリソース使用率が高くない場合、アプリケーション性能への影響をリアルタイムに確認しながらコンテナへ割り当てるリソースを調整することで、サイジングの最適化を図ることが可能になります。

Container Monitoring

Container Monitoring:コンテナをワークロード単位で抽出、集計して監視・分析

さらにNew Relic BROWSER / MOBILE / SYNTHETICSを活用することで、顧客体験へ与える影響をリアルタイムに把握し、顧客への影響が顕在化する前にロールバック等の対処が可能となります。

このエントリーをはてなブックマークに追加

この記事を書いた人

HironoriIchiki
HironoriIchiki 社内フリーランスとして組織横断的にあれこれ活動中!

PROプランのすべての機能を
30日間無料でお試し

新規無料登録いただくとPROプランのすべての機能を
30日間無料でお試しいただけます。
クレジットカードなど決済情報の登録は不要です。

各プランの詳細はこちらからご確認ください。