突発的なトラフィック急増とサーバー過負荷への対処方法

NGINX | 2021年7月14日

多くの小売業者にとって、COVID‑19のパンデミックは、顧客が年末商戦に向けて買い物をする場所や方法を一変させました。実店舗を利用できなくなった買い物客は、かつてないほどオンライン小売業者に押し寄せ、2020年のeコマース売上高は1,890億ドルに急増し、2019年比で33%増加しました。今年の年末商戦まで6か月を切る中、NGINXを活用して突発的なトラフィック急増に備えるための方法をいくつかご紹介します。

ステップ1:競合他社に対する自社の立ち位置を把握する

スタックに変更を加える前に、単に生き残るだけでなく成功を収めるには、「サイバーシーズン」のパフォーマンスをどの程度最大化する必要があるかを把握しておくと役立ちます。まず、競合Webサイトのパフォーマンスに関するデータを収集します。ページの読み込み時間は、おそらく最も重要な指標です。今日のせっかちなユーザーの多くは、3秒以内に読み込まれないサイトから離脱します。読み込み時間を測定できるツールは数多くあり、その多くは無料です。まずは、Geekflareによる11種類のテストツールの最新レビューを参照するとよいでしょう。

以下のページの読み込み時間を測定することを検討してください。

  • ホームページ
  • 製品検索結果
  • 製品ページの詳細
  • [購入]ボタンをクリックした後に表示される確認ページ

自社サイトと競合他社6社ほどの主要ページをテストしても、数時間しかかかりません。(ダウンロード時間を測定する前に、必ずShift+Refreshでブラウザのキャッシュを消去してください。)結果が得られたら、次の手順に進みます。

  • 総合的なパフォーマンスを指標化する。サイトごとに、訪問から検索、購入までの一連のプロセスにどのくらい時間がかかりますか?
  • 強みと弱みを特定する。サイトのパフォーマンスが他サイトを上回っている領域、競争力のある領域、遅れを取っている領域を具体的に特定します。
  • 機能の違いを確認する。競合他社は、追加機能によってショッピング体験にどのような付加価値を提供していますか?ユーザー体験を差別化するために、自社サイトでは何を提供していますか?
  • 計画を立てる。サイトパフォーマンスの1つ以上の領域で競合他社に大きく後れを取っている場合は、競合他社の平均応答時間を達成することを目指します。すでに競争力がある場合は、1位を目指します。

ステップ2:世界で最もアクセスの多いWebサイトのようにNGINXを運用

今年初め、NGINXはインターネットでシェア第1位のWebサーバーとなりました。多くのサイトからWebサイトやアプリの配信を任せていただいていることを光栄に思います。ぜひ皆さまにもご利用いただければ幸いです。しかし、NGINXは単なるWebサーバーではありません。リバースプロキシ、ロードバランサー、キャッシュ、APIゲートウェイの機能を1つに統合したソフトウェアです。

NGINXの最も重要なメリットの1つは、サイトへのトラフィックの流れを最適化できることです。NGINXは、店舗の入口で人の流れを管理する案内係のようなものです。買い物客(HTTPリクエスト)を順番に並べて店内へ案内し、歩道の混雑をスムーズで整然とした流れに変えます。さらに、買い物客を欲しい商品がある場所へ誘導することで、トラフィックを均等に分散し、すべてのリソースが均等に使用されるようにします。

NGINXでは、これを実現するために、主に標準搭載の2つの手法を使用します。

  • キープアライブ接続を使用したHTTPオフロード。到着に時間がかかるHTTPリクエストをバッファリングし、準備が整ってからバックエンドサーバーに転送します。遠隔地のクライアントから送信される場合と比べ、高速なローカルネットワーク上のNGINXから送信される場合は、トランザクションがはるかに速く完了します。
  • 高度な負荷分散。複数のアルゴリズムから選択でき、トラフィック分散を最適化してサーバーリソースを可能な限り効率的に活用できます。

トラフィックフローの最適化に加えて、NGINXを活用してサイトを最適化し、トラフィック急増時のサーバー過負荷を防ぐための方法を、さらに4つご紹介します。

以下の詳細をご覧ください。

キャッシュによるWebページの応答時間の改善

クリック&コレクト、店舗受け取りのオンライン注文、さらには顧客向けの支払いオプションによって、オンライン取引が成立する可能性が高まります。コンテンツキャッシュをNGINXで利用すると、Webトラフィックにも同様の効果があります。NGINXはクライアントに送信した各ファイルを自動的に保存し、同じファイルに対する以降のリクエストにはキャッシュから直接応答します。キャッシュによりユーザーへの応答が速くなるだけでなく、同じリクエストを毎回最初から処理する必要がなくなるため、アップストリームサーバーの負荷も軽減されます。アプリケーションによっては、コンテンツキャッシュによって内部トラフィック量を最大100分の1に削減できるため、アプリケーションの提供に必要なハードウェア容量を削減できます。

キャッシュと構成例の詳細については、F5のブログ記事「サイトコンテンツのキャッシュとマイクロキャッシュ」および「NGINXとNGINX Plusによるキャッシュのガイド」をご覧ください。

接続数、リクエストレート、帯域幅の制御による訪問者トラフィックの管理

最も混雑する時間帯には、店舗の案内係が入店する買い物客の人数を制限する必要があるかもしれません。これは、安全上の理由(過密状態の回避)や、優良顧客への優先対応(VIP向け時間帯、招待者限定のプロモーションなど)のためです。Webアプリにも同様の対策が必要です。サイトに流入するトラフィック量を制限することで、サーバーの過負荷を防ぎ、クライアントが必要なリソースへ適時にアクセスできるようにします。NGINX(コンテナ環境では、NGINX Ingress Controller)では、受信トラフィックを制限するためのさまざまな方法を利用できます。たとえば、次のような方法があります。

  • 同時実行数の制限 – 各サーバーに転送する同時リクエスト数を、そのサーバーで使用可能なワーカースレッド数またはプロセス数に合わせて制限
  • リクエストレート制限 – 各クライアントからのリクエスト数を1秒単位または1分単位で制限し、決済ゲートウェイや複雑な検索などのサービスでサーバーが過負荷になるのを防ぎます(詳細については、F5のブログ記事「NGINXおよびNGINX Plusによるレート制限」をご覧ください)
  • 帯域幅制限 – クライアントが接続ごとにダウンロードできるデータ量を制御します

必要に応じて、クライアントの種類ごとに処理を分けることができます。たとえば、店舗の配送対象地域にアジアが含まれていない場合や、ショッピングカートに商品を入れているユーザーを優先したい場合があります。Cookie、位置情報データ、その他のパラメーターを活用して、NGINXによるトラフィック制限の適用方法を制御できます。

エラスティックスケーリングでサーバーの過負荷を回避

十分なインフラストラクチャが整っていない場合、トラフィックの急増によってサーバーが容易に過負荷になる可能性があります。NGINXの軽量なイベント駆動型アーキテクチャにより、既存のインフラストラクチャでアプリケーション配信のパフォーマンスを最大限に高められます。NGINX Ingress Controllerおよびベアメタル環境と仮想化環境上のNGINX Plus向けサイジングガイドは、想定するパフォーマンスとスケールに必要な運用コストを正確に算出するのに役立ちます。

トラフィックの急増に効果的に対応してスケールするために、DevOpsチームが活用できるNGINXの機能はほかにもあります。

  • NGINXとアプリをクラウド環境にデプロイします。NGINXは、AWS、Google Cloud Platform、Microsoft Azureなど、主要なクラウド環境のマーケットプレイスで提供されています。各クラウドプロバイダーは、需要の変化に応じてアプリインスタンス数を調整する自動スケーリングをサポートしています。詳細については、AWS、GCP、Azureの自動スケーリングに関するドキュメントをご覧ください。
  • Kubernetes環境にコンテナをデプロイします。NGINX Ingress ControllerとNGINX Service Meshには、Kubernetesアプリのレジリエンスを向上させる複数の機能が搭載されています。リアルタイムユーザーへのレイテンシーをほとんど増加させることなく、ユーザーの需要に応じてアプリケーションPodを水平方向にスケーリングできます。
  • NGINX Plus APIを使用して、バックエンドサーバーを動的にスケーリングし、NGINX Plusによる負荷分散の対象とします。

組み込みのセキュリティで顧客データを保護

取引のセキュリティ確保は、あらゆるWebサイトにとって最低限必要な要件です。特に、クレジットカード情報を扱うオンライン小売業者には欠かせません。Targetのように被害を受けた小売業者が身をもって知るとおり、情報漏えいはブランドイメージの低下や訴訟につながる可能性があります。Targetは2014年のデータ侵害に対処しました。可視性を向上させ、セキュリティを強化することで対応したのです。以下を導入し、市場でも特に安全性の高いショッピング体験を提供することで、競合他社との差別化を図りましょう。

これで準備は完了です

今すぐWebプロパティにF5のエンタープライズグレードのソリューションを導入すれば、2021年の年末商戦で店舗でもオンラインでも何が起きても、万全の態勢で臨めます。

すべての商用ソリューションを30日間無料でお試しいただけます:

または、無料のオープンソース製品から始めることもできます。

このブログには、Owen GarrettとFloyd Smithによる寄稿が含まれています。


共有

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります