アンチパターン: 未使用の NodeJS API プロキシをデプロイしたままにする

Apigee Edge 独自の便利な機能の 1 つに、NodeJS アプリケーションを API プロキシでラップする機能があります。これを使うと、Edge を使用してイベント ドリブンのサーバー側アプリケーションを作成できます。

アンチパターン

API プロキシのデプロイとは、API プロキシを API リクエストの処理に利用できるようにするプロセスです。デプロイされた各 API プロキシは Message Processor のランタイム メモリに読み込まれることで、特定の API プロキシの API リクエストを処理できるようになります。そのため、デプロイされた API プロキシの数が増えると、ランタイム メモリの使用量が増加します。使用していない API プロキシをデプロイしたままにすると、ランタイム メモリが無駄に使用される可能性があります。

NodeJS API プロキシの場合、影響が増大します。

このプラットフォームでは、デプロイされたすべての NodeJS API プロキシに対して「Node アプリ」が起動します。Node アプリは、Message Processor JVM プロセス上のスタンドアロン ノードサーバー インスタンスに似ています。

実際に Edge では、デプロイされたすべての NodeJS API プロキシに対してノードサーバーを起動し、対応するプロキシのリクエストを処理します。同じ NodeJS API プロキシが複数の環境にデプロイされている場合、対応するノードアプリがそれぞれの環境に対して起動されます。デプロイされているものの使用されていない NodeJS API プロキシが多数ある状況では、複数の Node アプリが起動します。未使用の NodeJS プロキシはアイドル状態の Node アプリに変換され、メモリを消費し、アプリケーション プロセスの起動時間に影響を及ぼします。

使用済みプロキシ 未使用プロキシ
プロキシ数 デプロイされた環境数 起動された Node アプリ数 プロキシ数 デプロイされた環境数 起動された Node アプリ数
10 開発、テスト、本番(3) 10x3=30 12 開発、テスト、本番(3) 12x3=36

上の図では、36 個の未使用の Node アプリが起動し、これがシステムメモリを使い果たして、プロセスの起動時間に悪影響を及ぼします。

影響

  • メモリ使用量が高くなり、さらなるリクエストを処理するアプリケーションの能力に対してカスケード効果が生じる
  • 実際にトラフィックを処理している API プロキシのパフォーマンスに影響が生じる可能性がある

ベスト プラクティス

  • 未使用の API プロキシをデプロイ解除します
  • Analytics Proxy Performance ダッシュボードを使用して、トラフィックを処理していないプロキシを特定し、不要なプロキシをデプロイ解除します

関連情報