スケーリングの種類にかかわらず、アプリケーションのアーキテクチャと可能な最適化について検討してください。たとえば、静的コンテンツは最適化されたコンテンツ配信ネットワークから配信し、価格とパフォーマンスのメリットを提供します。データ ストレージ バックエンド用のキャッシュを追加すると、パフォーマンスが向上し、高価なスケーリングの要件が最小限に抑えられる可能性があります。
パフォーマンス テストとベンチマーク
ベンチマークとパフォーマンス テストにより、開発中のパフォーマンスの潜在的なボトルネックを特定し、経時的な傾向を追跡し、アーキテクチャ、技術スタック、クラウド プロバイダなどのオプションを比較して意思決定を行うことができます。
負荷テストでは、制御された事前定義の負荷、トラフィック、またはデータを使用して、ターゲットに対するバックエンドのパフォーマンスを測定します。さまざまな負荷レベルがアプリケーションのパフォーマンスにどのように影響するかを確認できます。
スケーラビリティのテストでは、アプリケーションのスケールアップとスケールアウト能力の分析に重点を置いています。スケーラビリティテストでは、負荷の増加にアプリケーションがどのように反応するか、バックエンド(データ ストレージを含む)がどのように適応するかを示します。
アプリケーションのベンチマークを開始する前に、パフォーマンスと速度(レイテンシ、スループット、速度など)、リソース使用率(CPU 使用率、メモリ使用量、バックエンド コンポーネント間のネットワーク トラフィック)、費用などの明確な目標を定義します。スケーリングの遅延を考慮してください。たとえば、トラフィックのバーストや急増が発生したときに、割り当てられた「予約」リソースのセットを超えてアプリケーションをスケーリングする必要がある場合などです。
ベンチマークとパフォーマンス テストには、Apache JMeter や Locust などの多くのツールが用意されています。テストツールを選択する際は、スクリプトの作成、デバッグ用の IDE 統合、追加のプラグイン、テストするトラフィックの種類やスケールのサポートなど、利用可能なテストの種類を考慮してください。
クラウド プロバイダを使用している場合は、潜在的な制限を回避するために、負荷テストに追加の要件やベスト プラクティスがあるかどうかを判断します。たとえば、Cloud Run のベスト プラクティスを検討してください。
費用とパフォーマンスに関する考慮事項
パフォーマンスを向上させるにはスケールアップが不可欠ですが、スケールダウンもコストを最小限に抑えるための考慮事項です。リクエストがない場合のバックエンド アプリケーションのベースライン コストと、アプリケーションのスケールアップに伴うコストを考慮します。
オンプレミスまたはサーバーベースのアーキテクチャでは、使用率に関係なく、固定費が発生する可能性があります。一部のクラウド環境では、リクエストが発生しない場合のコストを回避するために「ゼロへのスケーリング」が可能です。クラウド プロバイダが提供する計算ツールでは、リソースの事前コミットメントなど、さまざまな構成や料金戦略を検討できます。