この記事は、Cisco AppDynamics のR&D およびエンジニアリング部門のシニアテクニカルリーダー Karthikeyan Ramasamy とシニアリーダー Ashish Mishra の共同執筆によるブログ「How We Simplified Synthetic User Experience Monitoring Using Ephemeral Containers in Kubernetes」
(2021/01/11)の抄訳です。
アプリケーション モニタリング戦略にはシンセティックモニタリングが不可欠です。シンセティックモニタリングは、エンドユーザや API による Web サイトや Web アプリケーションの利用状況をシミュレートすることで、パフォーマンスの問題をプロアクティブに警告する重要な役割を果たします。これにより、企業はサイトやアプリケーションを常に利用可能な状態に保ち、最適なユーザエクスペリエンスを提供することができます。
AppDynamics は現在最先端のモニタリング機能
たとえば AppDynamics のサービスを利用するには Windows ベースの実装が必要でしたが、高額なライセンス料に加え、動作の重い Windows エージェントが原因となってセキュリティとパフォーマンスの問題が生じていました。AppDynamics が管理するホステッドエージェントに対しては、フリートキャパシティ管理のニーズに対応するために社内でエージェント フリート マネージャを構築していますが、長期的に見ると、これらのコンポーネントにはメンテナンスとエンジニアリングが必要になります。
お客様のニーズに対応していくためには、社内のマイクロサービス API と一般向けマイクロサービス API の両方の高可用性(HA)を最小限のメンテナンスコストとインフラストラクチャ ライセンス料で大規模にモニタリング・測定できるようにならなければなりません。
皆様も AppDynamics エンジニアリングチームの最新プロジェクト「Simple Synth」にぜひご参加ください。
Simplified Synthetics(「Simple Synth」)は、AppDynamics のソリューションと導入アーキテクチャを刷新するために AppDynamics エンジニアリングチームが取り組んでいるプロジェクトです。具体的には、Kubernetes クラスタを利用してエフェメラル Docker コンテナをスピンアップすることでこれらの目的を達成しようとしています。これらのコンテナは Linux ホスト上で実行され、Web および API をモニタリングするために短時間のワークロードを実行します。そのため、長時間にわたって稼働する Windows ベースのエージェントと、それに伴うライセンス料やその他の複雑な管理が不要になります。
AppDynamics エンジニアリングチームは、このアーキテクチャの刷新により、製品パフォーマンスの向上とメンテナンスの削減に成功し、優れたエンジニアリングを達成しています。新しい AppDynamics エージェント プラットフォームでは、5 秒という短い測定間隔で高度なモニタリングユースケースをサポートできるため、お客様のユーザエクスペリエンスを向上させることができます。
以下に、その概要をご紹介します。
Simple Synth アーキテクチャには、さまざまなクラウドプロバイダーやロケーションに展開された複数の Kubernetes(K8s)ベースクラスタが含まれています。各クラスタは、シンセティックチームが開発した「Heimdall」と呼ばれるローカルコンポーネントで構成されており、クラウドベースのリモートサーバコンポーネントと通信します。
Heimdall はオーケストレータとして機能して、各ロケーション/クラスタの Web/API 測定値を取得し、個別の Kubernetes ジョブとして測定を実行します(Heimdall は Kubernetes ジョブに対するフォールトトレラント機能を備えているため、AppDynamics ではポッドではなく Heimdall を採用しています)。高可用性が確保されたローカル オーケストレータ コンポーネントである Heimdall は、リアクティブな Spring Webflux
Heimdall は、分散データグリッドのニーズを満たすために、オープンソースの Hazelcast
エージェント側の各 Kubernetes ジョブは、「Lambda に似た」Docker イメージに基づいており、サーバからのメタデータに基づいて動的に選択されます。そのため、Simple Synth は、各ビジネスニーズの性質に基づいて、さまざまなタイプの軽量なコンテナイメージを実行できます。
たとえば Web ページ測定コンテナには Headless Chrome
Heimdall の導入環境は負荷の増大に応じ、自動スケーリングルールに基づいて拡張できるため、各ロケーションでの測定回数を増やすこともできます。AppDynamics では、オープンソースとして提供されている Kubernetes ベースの「クラスタオートスケーラ」コンポーネントを使用することで、Kubernetes クラスタに使用される基盤ノード/VM のリアクティブかつ柔軟なフリートキャパシティ管理を実現しています。つまり、オープンソースの Kubernetes ベースエコシステムを活用することで、今後は社内のフリート管理ソフトウェアが不要となります。
AppDynamics では、Lambda や Fargate を Amazon Web Services(AWS)のマネージドサービスとして直接利用する代わりに、上で説明した独自のエフェメラル ポッド アーキテクチャを採用しています。これにはいくつかの理由があります。
Fargate をはじめとするクラウドプロバイダーベースのサービスを利用すると、特定のクラウドプロバイダーに依存しなければならなくなる可能性があります。シンセティックモニタリングでは、世界中のさまざまなクラウドプロバイダーにわたってテスト環境を提供できるため、AppDynamics のビジネスを拡大する機会が生まれます。
単一のコードベースを使用して SaaS とオンプレミスの両方を構築できるため、開発とテストの労力を最小限に抑え、優れた運用を実現できます。これにより、高度な製品イノベーションを幅広く実現することができます。
Fargate/AWS Lambda をはじめとするクラウドベースのコンテナサービスは、一定のブロック期間(1 時間当たり、または 1 分当たりのコンテナランタイムなど)に基づいて課金する仕組みになっています。現在のシンセティックサービスで実行されている 1 日当たり約 300 万件のテストを詳しく調べたところ、70% のシンセティック モニタリング ジョブでタイムアウトが 30 秒に設定されていることがわかりました。つまり、30 秒しか必要としないジョブであっても AWS のサービスを利用すると請求額が割高になります。AWS ポータルの課金の仕組みを見てみると、Fargate/AWS Lambda ではコンテナイメージのダウンロードから課金が開始されます。イメージの一部としてシンセティックエージェントがブラウザに組み込まれる場合、時間またはデータに基づく料金が増える傾向にあります。
1 社のクラウドプロバイダーのみを利用している場合でも、クラウドプロバイダー固有のソリューションをすべてのロケーションで利用できない場合があります。たとえば Fargate は一部の AWS ロケーションでは利用できません。
クラウド固有のソリューションでは、ブラウザテストや API テストなどの Simple Synth ユースケース向けに CPU とメモリをきめ細かく組み合わせて提供することができません。限られた組み合わせの中で最も近い最大のサイズを選択することになるため、コスト増を招きます。
最後に、コンピューティング集約型マシンの選択という課題があります。Simple Synth の研究により、Synth ペイロードは、クロックレートが高く CPU キャッシュの大きいコンピューティング集約型マシンを使用すると格段に効率的になることがわかっています。
Simple Synth は、可用性が高く、柔軟で、特定のクラウドに依存しないシンセティック モニタリング エージェント向けのソリューションであることが実証されています。社内テストにより、AppDynamics のプラットフォームには以下のメリットがあることが明らかになっています。
さらに、AppDynamics が管理するホステッドエージェントとお客様が管理するオンプレミス環境の両方で、シンセティックエージェントの管理、拡張、アップグレードを行うために各分野の専門家(SME)を配置する必要がなくなります。Kubernetes の知識を持つ開発プロフェッショナルであれば、Docker ベースのイメージを使用してシンセティックエージェントを処理できるからです。
上で説明した機能の多くは、業界で初めてシンセティックモニタリングに導入された機能であり、AppDynamics は将来のモニタリング ユースケースの進化にも対応することができます。「Lambda に似た」短時間の軽量コンテナを大規模に実行できる機能は、AppDynamics アーキテクチャの独自性の証しであり、カスタマーエクスペリエンスを真に変革するものと私たちは確信しています。
現在、AppDynamics エンジニアリングチームは、スポットインスタンスを使用してコストをさらに削減する計画に取り組んでいます。これにより最大 90% の割引価格が実現しますが、その一方で、測定を短時間で完了しなければならないという制約があります。シンセティック測定コンテナには短時間という特性があるため(現在の実稼働ワークロードに基づく平均タイムアウトは 30 秒)、予備のキャパシティインスタンスを用意したうえで実行することをお勧めします。終了が通知された場合は、各ノードやマシンをテイントすることで新たなコンテナのスケジューリングを回避できます。また、代替ノードをスピンアップしてフリートサイズを調整できます。
今後も AppDynamics のシンセティック モニタリング