アプリケーションのコンポーネント化がパフォーマンスとセキュリティに与える影響

F5エコシステム | 2019年4月08日

かつては、戦略的に配置したプロキシを活用することで、アプリケーションのパフォーマンス向上を図ることができました。従来型のアプリケーション(モノリスや3層アーキテクチャ)では、通常、クライアントとサーバーの間で単一のデータパスが使用されていたためです。

簡単に言えば、静的か動的か、テキストか画像かを問わず、すべてのコンテンツが同じ経路を通っていました。そのため、クライアントとサーバーの間に適切なアプリケーションデリバリコントローラー(プロキシ)を配置し、パフォーマンスを最適化できました。これは当時だけでなく現在でも、IP、TCP、さらにはHTTPのさまざまな設定を調整することで実現されることがよくあります。こうした手法は、キャッシュ、圧縮、コンテンツに応じた高速化などのアプリケーションサービスを導入することで活用できます。

アプリケーションのコンポーネント化がパフォーマンスとセキュリティに与える影響

しかし、最新のアプリケーションは、もはや単独では機能しません。現在では、Sonatypeによるとその大部分(80~90%)がサードパーティ製コンポーネント(そのうちオープンソースの割合が増加)で構成されています。これは、Webアプリケーションに含まれるスクリプトや、その他の挿入可能なコードの多さからも分かります。こうしたスクリプトは、リモートで実行され、画像や広告、Webフォント、スプライトなどのコンテンツを返す場合があります。また、jQueryのように、スクリプト自体が実行時に読み込まれ、ブラウザー内で実行される場合もあります。

これはコンポーネント化、別の言い方をすればアトム化と呼ばれるものです。アプリケーションを多数の小さな要素に分割することを指します。クライアント側では、通常は同じ空間で実行されるため、これらをコンポーネントと呼びます。サーバー側では、マイクロサービスと呼び、コンテナにデプロイするケースが増えています。どちらの場合も影響は同様で、データパスの数が予測できなくなり、パフォーマンスに直接影響します。

基本的に、制御できるデータパスは1つだけで、それがアプリケーション全体に占める割合はおそらく20%程度です。つまり、パフォーマンスをほとんど制御できないため、ユーザーエクスペリエンスもほとんど制御できません。

セキュリティについても同じことが言えます。お気づきいただきありがとうございます。実際、クライアント側のコード技術を活用してセキュリティを強化する方法は、急速に進歩しています。しかし、パフォーマンスについては、同じようにはいきません。ほとんどのアプリはモバイルアプリかWebアプリであり、どちらもネットワークスタックに手を加える余地や手段がほとんどないためです。

この問題に対処する方法の1つは、制御を取り戻すことです。制御を取り戻せば、副次的にセキュリティ上のメリットも得られます。

一石二鳥:リスクを軽減し、パフォーマンスを向上

アプリケーションが外部サイトからコンポーネントを動的に読み込んでいる場合は、今すぐやめてください。これはパフォーマンスだけでなく、セキュリティにも関わる問題です。外部から取得したスクリプトに対し、アプリケーションのコンテキスト内での実行を暗黙的に全面許可していることになります。セキュリティ侵害が発生した場合、ユーザーはアプリケーション固有のコンポーネントと外部から読み込まれたコンポーネントを区別できません。最近のruncコンテナの脆弱性をめぐる混乱からも分かるように、サードパーティのレジストリやサイトから読み込まれるリソースに悪意のあるコードが挿入されると、セキュリティリスクが生じます。

スクリプトであれば、複製して自社のインフラストラクチャから配信することをお勧めします。自社で管理することでリスクを軽減できるほか、各種設定を調整してユーザーのパフォーマンスを向上させることもできます。これにはDNSも含まれます。DNSは、アプリケーションのパフォーマンスに最も大きな影響(多くの場合は悪影響)を及ぼすことが一貫して示されています。外部サイトからコンポーネントを取得する場合、期待どおりのパフォーマンスが得られるかどうかは、そのサイトのDNSインフラストラクチャに左右されます。自社サイトからコンポーネントを取得すれば、ユーザーのローカルDNSキャッシュを活用できるため、その影響を大幅に軽減できます。

自社サイトでスクリプトをホストすれば、TCP最適化、SSL/TLSオフロード、一般的なアプリケーション高速化手法を活用して、全体的なパフォーマンスを向上させることもできます。また、スクリプトにセキュリティスキャンを実施し、内部に予期しない問題が潜んでいないことを確認できます。

コンポーネント化は開発に非常に有効で、価値実現までの時間短縮にも役立ちます。一方で、パフォーマンスやセキュリティに悪影響を及ぼす可能性があります。セキュリティとユーザー満足度に関するリスクを把握し、その対策を講じることが重要です。

共有

著者について

Lori Mac Vittie
Lori Mac Vittie特別技術者兼チーフエバンジェリスト | F5

Lori MacVittieは、F5のOffice of the CTOに所属するDistinguished Engineer兼Chief Evangelistであり、アプリケーションデリバリ、自動化戦略、インフラストラクチャに関する深い専門知識を有しています。AIエージェントのガードレール策定、脆弱なマルチクラウドアーキテクチャの分析、スケーラブルなシステムの限界の検証など、複雑な事柄を明快にすることで知られています。アプリケーション開発、ITアーキテクチャ、ネットワークおよびシステム運用の分野で、30年以上にわたる業界経験を有しています。F5入社前は、受賞歴のあるテクノロジー編集者として活躍していました。 MacVittieはコンピューターサイエンスの修士号を取得しており、セキュリティ、クラウド、エンタープライズアーキテクチャにわたる分野で多数の著作を発表しています。また、テーブルトークゲームとビデオゲームをこよなく愛し、チーズについては遠慮なく強いこだわりを語ります。

Lori Mac Vittieのその他のブログ記事

関連するブログ記事

F5 Application Study Tool:OpenTelemetryによるF5 BIG-IP環境の監視
F5エコシステム | 2025/04/15

F5 Application Study Tool:OpenTelemetryによるF5 BIG-IP環境の監視

F5の新しいオープンソースツールは、BIG-IP環境を詳細に可視化し、データを追跡するとともに、強力でカスタマイズ可能なインサイトを得るための基盤を提供します。

F5 BIG-IPでAI防御を実現
F5エコシステム | 2024/11/13

F5 BIG-IPでAI防御を実現

F5 BIG-IP Advanced WAF、BIG-IP APM、BIG-IP SSL Orchestratorが、生成AIアプリ向けに包括的なセキュリティソリューションを提供する仕組みをご覧ください。

F5 Advanced WAFによるGraphQL APIの保護
F5エコシステム | 2021/08/31

F5 Advanced WAFによるGraphQL APIの保護

ここ数年、多くの組織がデジタルトランスフォーメーションを進めており、COVID-19のパンデミックによってその動きは加速しています。

アプリケーションサービスの現状 通信業界版:リーダーとしての台頭
F5エコシステム | 2019/02/19

アプリケーションサービスの現状 通信業界版:リーダーとしての台頭

通信ネットワークが進化し、さまざまな業界の幅広いユースケースに対応するなか、通信業界の回答者がテクノロジーリーダーとしての存在感を高めていることがわかります。

デジタルトランスフォーメーションは、単なるペーパーレス化ではない
F5エコシステム | 2017/07/10

デジタルトランスフォーメーションは、単なるペーパーレス化ではない

デジタルトランスフォーメーションは、単なるペーパーレス化ではありません。真のモダナイゼーションにアプリケーションアーキテクチャとセキュリティの再構築が必要な理由を、F5ブログでご覧ください。

やめましょう。もう本当にやめましょう。HTTPSはHTTPより高速ではありません。
F5エコシステム | 2016/09/19

やめましょう。もう本当にやめましょう。HTTPSはHTTPより高速ではありません。

もうやめましょう。HTTPSはHTTPより高速ではありません。プロトコルのパフォーマンスに関する微妙な違いと、暗号化トラフィックを適切に最適化する方法については、F5ブログをご覧ください。