从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置于前端,后端部署了2个ALB和2个S3,共计拥有4个源站。
ALBは動的コンテンツの配信や認証処理を担っており、S3はLPやアセットなどの静的コンテンツを配信しています。S3の前段にはそれぞれ個別のCloudFrontを使用しています。
ALB负责动态内容的分发和认证处理,S3负责分发LP和Assets等静态内容。S3的前端分别使用了独立的CloudFront。
また、FastlyではVCL[^1]を用いてCDN以外の多くの処理も担っていました。
此外,Fastly还使用VCL[^1]承担了许多CDN之外的处理。
- パスごとのオリジン振り分け
- 按路径分配源站
- 各種ブロック(IP / ASN / リファラ など)
- 各种拦截(IP / ASN / Referer 等)
- Basic認証
- Basic认证
- メンテナンスモード
- 维护模式
- リダイレクト / リライト
- 重定向 / 重写
前述の通り、リプレイス時にFastlyを採用したことで安全にリプレイスを進めることができましたが、リプレイス完了後に以下のような課題が残りました。
如前所述,在系统替换时采用Fastly使我们能够安全地推进替换工作,但在替换完成后,仍遗留了以下课题。
運用負荷
运维负担
AWSとFastlyの二重管理が運用負荷に繋がっていました。
AWS和Fastly的双重管理导致了运维负担。
- WEARの大部分はすでにCloudFrontを使用しており、2つのCDNそれぞれでキャッチアップが必要だった
- WEAR的大部分已经在使用CloudFront,需要在两个CDN中分别进行缓存
- AWSとFastlyそれぞれでユーザーやリソースの管理も必要だった
- 在AWS和Fastly中分别需要管理用户和资源
- 設定変更をWebチームとSREチームで担っていたため、Fastly専用のインフラリポジトリを別途設けており、CIの整備やレビューフローの維持など、リポジトリが増えることに伴う管理コストが発生していた
- 由于配置变更由Web团队和SRE团队负责,因此我们单独设立了Fastly专用的基础设施仓库,随着仓库数量的增加,在CI建设、维护审查流程等方面产生了相应的管理成本。
コスト
成本
FastlyをAWSの前段に置く構成であるため、大きく分けて2種類のコストが発生していました。
由于采用了将Fastly置于AWS前端的架构...