🦁

Azure で Multi CDN構成を取る方法

2021/11/12に公開

https://tech.plaid.co.jp/karte-blocks-multicloud/

KARTEのエンジニアのTarrさんが書いたこの記事を読んでみて、Azureでもできるよね!と思ったので、かんたんに記事を書いてみます。

Azureには、3つのCDN Providerを使用することができます。

  1. Microsoft
  2. Akamai
  3. Verizon

それぞれの違いについては、下記のドキュメントに記載されています。
参考:https://docs.microsoft.com/ja-jp/azure/cdn/cdn-features

Microsoftについては、MicrosoftのCDN POPとNetworkを使いますが、他のCDNについては、それぞれのCDN Providerが提供するPOPとNetworkを利用します。

Tarrさんの記事の中で言及していたのは、CDNが動かないことでのリスクとどのように障害耐性をつけるかということでした。クライアントがCDNからファイル(画像や動画、テキスト(CSS,JS)、その他...)を取得できないとサービス提供ができなくなります。

これの改善案として、AWSのRoute53の機能であるTrafficFlowを使ってクライアントからアクセスするDNSを切り替える、さらに、切り替え時には比重を設定しながら切り替えていくということでした。

AWS Route53 Traffic Flow
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/traffic-flow.html

また、オリジンの障害に対しての対策として CloudFront のOrigin Failoverを使わないという判断をされたということを記載しておりました。

AWS CloudFront Origin
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html

さて、これをAzureで実現しようと思うと何を使うかですが、Azureには、AWS Route53と似たようなサービス(DNS系サービス)として Traffic Manager があります。

Traffic Manager も Traffic Flow と同じようにDNSから返すFQDNを切り替えることで、クライアントからのアクセスを切り替えることができます。

Traffic Managerについて
https://docs.microsoft.com/ja-jp/azure/traffic-manager/traffic-manager-overview

Tarrさんが言及していた比重を切り替えながらというところですが、Traffic Managerの重み付けルーティングを用いることで可能です。その他にも、優先順位やパフォーマンスなどのルーティングを選択することもできます。

Traffic Manager のルーティング方法
https://docs.microsoft.com/ja-jp/azure/traffic-manager/traffic-manager-routing-methods

重み付けルーティングの仕組みについては、同ページに記載があります。

アプリケーションの段階的アップグレード: 新しいエンドポイントにルーティングする トラフィックのパーセンテージを指定し、時間と共に 100% までトラフィックを徐々に増やします。
という記載があるとおり、KARTEでTorrさんが想定していた動作を可能にします。

また、OriginのFailoverの機能ですが、配信元グループを作成することで実現可能です。

詳しくは、下記のドキュメントをご参照ください。
https://docs.microsoft.com/ja-jp/azure/cdn/endpoint-multiorigin

どのCDNを使うかについては、ユーザ次第です。
Azureのポータルだけで設定できるCDNは上記の3つですが、AWS CloudfrontやGCP CloudCDNを使っても良いです。Originのコンテンツをどこに置きたいか、OriginコンテンツをSyncする簡単な方法はあるか?などがキーになってくると思います。

本件に関して、質問などがある方は気軽にコメントいただくか、DMをいただければ解説することができると思います。

以上!

Discussion