FastlyからCloudFrontへ段階的移行 ── 無停止で実現したWEAR CDNの刷新

はじめに
はじめに
こんにちは、WEAR開発部SREブロックの木内です。普段はWEARのSREとして開発、運用に携わっています。
こんにちは、WEAR開発部SREブロックの木内です。普段はWEARのSREとして開発、運用に携わっています。
WEARは2013年にサービスを開始し長年オンプレミスで運用されてきましたが、過去にクラウド(AWS)へのシステムリプレイスを実施しています。その際にWebアプリのCDNとしてFastlyを採用し、オンプレミスからクラウドへの段階的な移行を実現しました。
WEARは2013年にサービスを開始し長年オンプレミスで運用されてきましたが、過去にクラウド(AWS)へのシステムリプレイスを実施しています。その際にWebアプリのCDNとしてFastlyを採用し、オンプレミスからクラウドへの段階的な移行を実現しました。
採用の決め手は主に以下の点です。
採用の決め手は主に以下の点です。
- パスベースのルーティングが可能(パスごとにオンプレミスとクラウドのオリジンを切り替えられる)
- パスベースのルーティングが可能(パスごとにオンプレミスとクラウドのオリジンを切り替えられる)
- ネイキッドドメインへの対応
- ネイキッドドメインへの対応
- 設定変更の即時反映による迅速なロールバック
- 設定変更の即時反映による迅速なロールバック
リプレイスの詳細については、以下の記事をご参照ください。
リプレイスの詳細については、以下の記事をご参照ください。
Fastlyを用いた構成はサービスを止めずに安全なリプレイスを実現するうえで大きく貢献しました。一方で、リプレイスが完了しFastlyを導入した当初の目的を達成した後も残り続けたことで、運用負荷やコストといった課題が顕在化してきました。
Fastlyを用いた構成はサービスを止めずに安全なリプレイスを実現するうえで大きく貢献しました。一方で、リプレイスが完了しFastlyを導入した当初の目的を達成した後も残り続けたことで、運用負荷やコストといった課題が顕在化してきました。
本記事では、過渡期の構成を整理し、CDNをFastlyからAmazon CloudFront(以下、CloudFront)へ移行してAWSに統一した取り組みを紹介します。
本記事では、過渡期の構成を整理し、CDNをFastlyからAmazon CloudFront(以下、CloudFront)へ移行してAWSに統一した取り組みを紹介します。
目次
目次
移行の背景・課題
移行の背景・課題
移行前の構成は以下の通りです。
移行前の構成は以下の通りです。

Fastlyをフロントに置き、バックエンドにALBとS3が2つずつ、計4つのオリジンを持つ構成です。
Fastlyをフロントに置き、バックエンドにALBとS3が2つずつ、計4つのオリジンを持つ構成です。
ALBは動的コンテンツの配信や認証処理を担っており、S3はLPやアセットなどの静的コンテンツを配信しています。S3の前段にはそれぞれ個別のCloudFrontを使用しています。
ALBは動的コンテンツの配信や認証処理を担っており、S3はLPやアセットなどの静的コンテンツを配信しています。S3の前段にはそれぞれ個別のCloudFrontを使用しています。
また、FastlyではVCL[^1]を用いてCDN以外の多くの処理も担っていました。
また、FastlyではVCL[^1]を用いてCDN以外の多くの処理も担っていました。
- パスごとのオリジン振り分け
- パスごとのオリジン振り分け
- 各種ブロック(IP / ASN / リファラ など)
- 各種ブロック(IP / ASN / リファラ など)
- Basic認証
- Basic認証
- メンテナンスモード
- メンテナンスモード
- リダイレクト / リライト
- リダイレクト / リライト
前述の通り、リプレイス時にFastlyを採用したことで安全にリプレイスを進めることができましたが、リプレイス完了後に以下のような課題が残りました。
前述の通り、リプレイス時にFastlyを採用したことで安全にリプレイスを進めることができましたが、リプレイス完了後に以下のような課題が残りました。
運用負荷
運用負荷
AWSとFastlyの二重管理が運用負荷に繋がっていました。
AWSとFastlyの二重管理が運用負荷に繋がっていました。
- WEARの大部分はすでにCloudFrontを使用しており、2つのCDNそれぞれでキャッチアップが必要だった
- WEARの大部分はすでにCloudFrontを使用しており、2つのCDNそれぞれでキャッチアップが必要だった
- AWSとFastlyそれぞれでユーザーやリソースの管理も必要だった
- AWSとFastlyそれぞれでユーザーやリソースの管理も必要だった
- 設定変更をWebチームとSREチームで...