はじめに
AWS技術者の方がAzureを触った際に、設計思想や使い勝手の違いに戸惑うことは多いと思います。今回はAzure ApplicationGateway(APGW)をAWSのApplication Load Balancer(ALB)と比較しながら、構成要素や特徴を解説していきます。
本ブログに掲載している内容は、私個人の見解であり、所属する組織の立場や戦略、意見を代表するものではありません。あくまでエンジニアとしての経験や考えを発信していますので、ご了承ください。
構成要素の比較
まずはALBとAPGWがそれぞれどのような構成をしているのか比較してみます。
ALBは以下のような階層構造をもっています。
[ALB]
|-[リスナー] # 受け付けるポートとプロトコルをここで定義
|-[リスナールール] # ルーティングルールを細かくここで設定。優先度をつけて複数設定可能
|-【ターゲットグループ】 # ルーティングターゲットをまとめたもの。ターゲットのヘルスチェックもここで行う
[ACM] # HTTPSで利用する証明書を管理
[S3] # ALBログの出力先
一方でAPGWは以下のような階層構造をもっています。
[APGW]
|-[リスナー] # 受け付けるポートとプロトコルをここで定義
|-[ルール] # ルーティングルールを細かくここで設定。優先度をつけて複数設定可能
|-【バックエンドプール】 # ルーティングターゲットをまとめたもの
|-【バックエンド設定】 # バックエンドプールで定義したターゲットにリクエストをAPGWから渡す際の設定
| |-[正常性プルーブ] # ターゲットのヘルスチェック設定
|- 【書き換え】 # 各ルーティング設定毎にリクエストの内容を書き換えたい場合はここで定義する
[Key Vault] # HTTPSで利用する証明書を管理
[Log Analytics] # APGWログの出力先
上記の構成要素を対応付けるとしたら以下のようになります。
| ALB | APGW |
|---|---|
| リスナー | リスナー |
| リスナールール | ルール・書き換え |
| ターゲットグループ | バックエンドプール・バックエンド設定・正常性プルーブ |
基本的な構成要素が共通していますが、APGWのほうがより細分化されているため、Azure初学者の方には少し難しいかもしれません。
機能の比較
ロードバランサーを利用する上で気になる機能がALBとAPGWでどのように提供されているかを比較してみました。
| 機能 | ALB | APGW |
|---|---|---|
| 取得可能なログ | ・アクセスログ ・接続ログ ・ヘルスチェックログ(ターゲットグループのヘルスチェック) |
・アクティビティログ(APGW自体の操作ログ) ・アクセスログ ・パフォーマンスログ ・ファイアウォールログ(WAFのログ) |
| セッション管理機能 | ・Target group stickiness:ターゲットグループ単位でセッションを維持する機能 ・Sticky sessions:ターゲットグループ内のターゲット単位で機能 |
・セッションアフィニティ:バックエンド単位でセッションを維持する機能 |
| ルーティング可能なリソース | ・IPアドレス ・インスタンスIDを持つリソース ・Lambda関数 ・ALB |
・IPアドレス ・仮想マシン ・VMSS ・App Service ・FQDN |
細かな部分で違いがありますが、そのほとんどはAWSとAzureのサービス間の関係性の違いによるものです。
まとめ
APGWはALBと同等の機能が提供されているため、AWS技術者の方がAzureに移行する際も、ALBでできていたことはAPGWでもできると考えていただいて問題ないと思います。個人的な感想としては、
- ALBは構成がシンプルで扱いやすい
- APGWはALBとほぼ同様の使い方ができるが、構成要素が多く、慣れるまでは複雑に感じる
と思いました。