4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

待合室ソリューションのQueue-itをAkamai EdgeWorkersで構築する

Last updated at Posted at 2023-03-13

Queue-it とは

Queue-itは、大規模なイベントなどでトラフィックがサイトに集中し、システムが高負荷によりダウンすることを回避できる待合室ソリューションを提供します。ウェブサイトが予期せずアクセス過多に陥った場合に、ユーザーを待機させることで、サイトへの負荷を軽減することができます。Queue-itの仮想待合室はfirst-in, first-out (FIFO)を実装しており、アクセスしてきた人を順番に並ばせることができます。また、待機画面は自由にカスタマイズすることができ、サイトデザインに適したものを利用することができます。
Queue-itを実装するためには、いくつかの手法がありますが、Queue-itとパートナー関係にあるAkamai EdgeWorkersを利用することにより、オリジンサーバーに手を加えることなく実装することができます。

待合室では待ち時間の目安を確認することができ、利用者にリアルタイムにメッセージを送ることもできます。

image.png

Akamai EdgeWorkersとは何か?

Akamai EdgeWorkersは、AkamaiのCDN上でJavaScriptを実行することができる、世界最大級かつ低レイテンシーのサーバーレスプラットフォームです。
コード実行のランタイムにはGoogle V8 Engineを利用しています。
EdgeWorkers上で処理を実行することで、高速で大規模な処理能力を手に入れることができ、オリジンでの処理を肩代わりすることができます。
Queue-itのような仮想待合室ソリューションをEdgeWorkersで構築することにより、CDNで静的コンテンツのキャッシュ応答やボットアクセスの緩和を処理しつつ、オリジンへの正規アクセスをQueue-itによって流量制御することによってトラフィックを適切に管理し、サイトダウンを防ぐことができます。

image.png

Queue-itをEdgeWorkersで構築する。

Akamai EdgeWorkersを使用してQueue-itを構築するには、次の手順を実行する必要があります。

  1. Queue-itで仮想待合室を作成します。
  2. Akamai Queue-it Connectorをダウンロードし、Akamai Control Center(ACC)からEdgeworkerを構築します。
  3. ACCからCDNの配信設定を修正し、Queue-itに転送するための設定を追加します。
  4. 設定をStagingとProduction環境に反映し、サイトへのアクセスを確認します。

Akamaiアカウントチームに問い合わせていただければ、Queue-itアカウントの用意を行うことも可能です。

Queue-itとAkamai EdgeWorkersまたはCDNの設定をセルフインテグレーションすることは推奨しておりません、要件に合わせた実装が必要となるため実装時はAkamaiのアカウントチームにご相談ください。

Queue-itで仮想待合室を作成する

仮想待合室を作成します。

手順の参考となるQueue-itのクイックスタートガイドやテクニカルホワイトペーパーは以下から入手が可能です。

Wating Rooms Configurationにサイトのドメインを追加します。

image.png

Wating Rooms から仮想待合室を作成します。

image.png

今回は常時稼働する仮想待合室を作成しますが、イベントの時にだけ動作する仮想待合室を用意することも可能です。

image.png

idは待合室の識別子として利用します。Nameは訪問者を表示する際に利用します。

image.png

Targetを確認して、次へ進みます。

image.png

設定内容を確認して問題なければ、Createを選択します。

image.png

ActionsからNew Actionsを選択します。

image.png

各項目を設定します。

image.png

今回の設定値については以下となります。

Name : Action名
Wating Room : 先程作成したIDを指定
Theme : Default
Language : Japanese
Configuration : Default
Triggers : All Pages

image.png

設定を反映させるためPublish Nowを選択します。

image.png

後の手順で、CDN上のEdgeWorkersrとの連動に必要となるAPI Keyを控えます。

image.png

Secret keyも控えます。

image.png

EdgeWorkersでQueue-it Connectorを構築する

構築手順は以下を参考にします。

ACCから新規のEdgeWorkerを作成します。

image.png

EdgeWorkersでQueue-itを動作させるためには、Dynamic Computeを選択する必要があります。

image.png

新規に作成するため、Create versionを選択します。

image.png

最新のAkamai Queue-it Connectorをダウンロード(執筆時点の最新は3.11)し、EdgeWorkersにアップロードします。

image.png

StagingとProductionにActivateします。

image.png

各環境に展開されるのを確認します。

image.png

EdgeWorkersの作成は完了です。

Akamai CDNのProperty設定をする

Property Variablesを設定します。先程Queue-itで控えた情報を利用して作成します。

Variable 必須 Value SECURITY SETTINGS
PMUSER_QUEUEIT_CUSTOMERID Yes Queue-it Customer ID hidden
PMUSER_QUEUEIT_SECRET_KEY Yes Queue-it Secret key hidden
PMUSER_QUEUEIT_CONFIG_TYPE Yes cache hidden
PMUSER_QUEUEIT_API_KEY Yes Queue-it API Key
PMUSER_TRUE_CLIENT_IP Yes ConnectorのIPを検証するために利用 Visible
PMUSER_DEFAULT_HOST EWが失敗した際に転送するホスト %(AK_HOST) hidden
QUEUEIT_TRIGGER Queue-itに転送するアクセスにはEWを動作させないようにするフラグ true Visible
PMUSER_QUEUEIT_EXECUTED Queue-itか実行されたかの確認フラグ Queue-It EdgeWorkersは、この変数をtrueに設定します Visible
PMUSER_QUEUEIT_GENERATE_EQTOKEN EnqueueTokenを利用する際に設定 Optional boolean value ('true'/'false') where default is 'false'. Visible
PMUSER_QUEUEIT_NO_KEY EnqueueTokenを利用する際に設定 Optional boolean value ('true'/'false') where default is 'false'. Visible
PMUSER_QUEUEIT_EQTOKEN_VALIDITY No Default: 240000 ms if provided value is null or less than 30000 ms Visible

image.png

3つのRuleを作成します。

image.png

Download IntegrationではQueue-itに転送する設定を行います。
Criteriaを設定します。

If条件 マッチ条件
Path matches one of /queueit/integrationconfig/
Request Header api-key is one of Queue-itのAPI Key

image.png

Behaviorを設定します。

Behavior 設定名 設定値
Origin Server Origin Server Hostname {{user.PMUSER_QUEUEIT_CUSTOMERID}}.queue-it.net
Modify Outgoing Request Path Action Replace part of the incoming path
Find what /queueit/integrationconfig/
Replace with /status/integrationconfig/secure/{{user.PMUSER_QUEUEIT_CUSTOMERID}}/
Set Variable Variable PMUSER_QUEUEIT_TRIGGER
Create Value From Expression
Expression false

image.png

次にEdgeWorkersを動作させるためのRuleを修正します。

Queue-itへ転送させる処理にEdgeWorkersが動作しないように設定します。

If条件 マッチ条件
Variable PMUSER_QUEUEIT_TRIGGER is one of true

image.png

Queue-itのConnectorが検証するIPを設定し、EdgeWorkersを動作させます。

Behavior 設定名 設定値
Set Variable Variable PMUSER_TRUE_CLIENT_IP
Create Value From Expression
Expression {{builtin.AK_CLIENT_REAL_IP}}
EdgeWorkers Enable On
Identifier 作成したIDを指定

image.png

最後に、EdgeWorkersの動作が失敗した場合の処理を追加します。

If条件
EdgeWorkers Execution Status Failure
Behavior 設定名 設定値
Site Failover Enable On
Action Use alternate hostname in this property
Alternate Hostname in This Property {{user.PMUSER_DEFAULT_HOST}}

image.png

作成したProperty設定をStagingとProductionに展開します。

Queue-itの運用

サイトへアクセスし、Queue-itが適用されていることを確認します。

image.png

Queue-itのMonitor画面では実際の流用を確認しつつアクセス数を調整することが可能です。

image.png

Introducing the monitor tiles

まとめ

Akamai EdgeWorkersを使用することでオリジンサーバーに手を加えることなく、Queue-itの待ち行列システムを実装することができます。これにより、ウェブサイトの負荷を軽減し、ユーザーエクスペリエンスを向上させることができます。
Akamai EdgeWorkersは様々な処理をオリジンからクラウドへとオフロードすることができます。サンプルコードは以下のリンクから参照ください。

Akamai はCDN、セキュリティ、クラウドサービスを通じ、オンラインライフの力となり守っています。本稿でご紹介したような課題やご相談があれば、お気軽にお問い合わせください

関連記事

アカマイ・テクノロジーズ合同会社はQiitaでAkamai Cloud Computing Services関連など開発者向けの記事を掲載しております。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?