Webエンジニアの森脇です。
LCLでは、EC2上でVarnishを運用していましたが、徐々にFastlyへ移行しています。移行にあたって調べたことを、簡単に紹介したいと思います。
Vanishの活用については、以下の記事をご覧ください。
前提
- FastlyやVarnishの概要レベルについては、本記事では割愛します。
- 2018年12月時点の情報に基づいています。
Varnishのバージョン
Fastlyでは、内部的にVarnishを利用していますが、Varnishのバージョンは 2.1系がベースになっています。そのため最新のVarnishに比べて文法が異なる点があるため注意が必要です。
POPについて
FastlyのPOPは、日本は東京と大阪に存在します。
Fastly POP の配置 - 基本的なコンセプト | Fastly Help Guides
他のCDNと比較してPOPの数は少ないが、巨大なPOPを配置するというモデルになっているようです。(スーパーマーケットモデル)
Why having more POPs isn’t always better
キャッシュについて
キャッシュの制御
Fastlyでは、Varnishと同様にオリジンサーバーからの返却されるレスポンスヘッダのCache-Controlに応じて、キャッシュの制御を行います。(VCLで定義することも可能)
- チュートリアル: キャッシュ制御 - チュートリアル | Fastly Help Guides
- CDN とキャッシュの仕組み - 基本的なコンセプト | Fastly Help Guides
- FastlyサーバーのTTLの選択ロジック – Fastly Support
キャッシュパージの方法
キャッシュのパージ方法は以下の3種類あります。
- 全キャッシュの一括パージ
- URLを指定してのパージ
- Surrogate-Keyを指定したパージ
- レスポンスヘッダにSurrogate-Keyを設定することで、Surrogate-Key単位でパージが可能です
オリジンシールド
Fastlyには、オリジンシールドという仕組みがあり、オリジンに対するシールドとしてPOPをいずれか1つ指定できます。 シールドPOPを指定した場合は、オリジンのリクエストは全てシールドPOP経由となるため、各POPにキャッシュがない場合でもシールドPOPにキャッシュがあれば、その時点でクライアントにレスポンスを返すことが可能です。
注意点として、オリジンシールドを有効にすると、シールド POPと他のPOP間で発生するトラフィックも課金対象となります。ただし、オリジンへのリクエストが減少するため、オリジン側のデータ転送コストやサーバコスト削減によって、ある程度は相殺可能です。
オリジンシールド - パフォーマンス・チューニング | Fastly Help Guides
失効済みコンテンツの配信
Fastly では、Cache-Controlヘッダにstale-while-revalidate
を指定することで、キャッシュの有効期限が切れた後も指定期間はキャッシュからレスポンスを返し、バックグラウンドでキャッシュを更新する仕組みがあります。これは、Varnishのgrace変数を指定した場合と同様の仕組みです。
失効済みコンテンツの配信 - パフォーマンス・チューニング | Fastly Help Guides
ログ
Fastlyへのログは、S3やBigQuery等へ登録することができます。LCLでは、S3へ保存しています。
Setting up remote log streaming - Streaming logs | Fastly Help Guides
TLS通信
FastlyでTLS(SSL)通信を行う場合は、3つのオプションがあります。
TLS オプション - 製品の詳しい説明 | Fastly Help Guides
共有ドメイン
example.global.ssl.fastly.net
のような共有ドメインを利用する場合は、無償で証明書が利用できます。内部的なAPIの通信など、Fastlyのドメインのままで支障がない箇所で利用できます。
共有証明書
独自のドメインでTLS通信をした場合は、この有償オプションが必要になります。証明書はFastly側で手配されたものを利用することになります。ドメインはワイルドカード指定も可能です。
Hosted証明書
EV証明書を利用するケースなど、自身が所有している証明書を利用したい場合は、この有償オプションが必要になります。
費用
帯域とリクエスト数による従量課金です。有償の証明書を利用する場合は、別途費用がかかります。
https://www.fastly.com/pricing
まとめ
Fastly特有の概念もありましたが、Varnishを運用していたこともあり、必要な事項はスムーズに理解できました。今回の記事では、紹介しきれていないことも多数あるため、具体的な移行記事と共に別の記事を書きたいと思います。