LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログ

Varnish自前運用からFastly移行の際に調べたこと

Webエンジニアの森脇です。

LCLでは、EC2上でVarnishを運用していましたが、徐々にFastlyへ移行しています。移行にあたって調べたことを、簡単に紹介したいと思います。

Vanishの活用については、以下の記事をご覧ください。

techblog.lclco.com

前提

  • FastlyやVarnishの概要レベルについては、本記事では割愛します。
  • 2018年12月時点の情報に基づいています。

Varnishのバージョン

Fastlyでは、内部的にVarnishを利用していますが、Varnishのバージョンは 2.1系がベースになっています。そのため最新のVarnishに比べて文法が異なる点があるため注意が必要です。

Fastly VCL Reference

POPについて

FastlyのPOPは、日本は東京と大阪に存在します。

Fastly POP の配置 - 基本的なコンセプト | Fastly Help Guides

他のCDNと比較してPOPの数は少ないが、巨大なPOPを配置するというモデルになっているようです。(スーパーマーケットモデル)

Why having more POPs isn’t always better

キャッシュについて

キャッシュの制御

Fastlyでは、Varnishと同様にオリジンサーバーからの返却されるレスポンスヘッダのCache-Controlに応じて、キャッシュの制御を行います。(VCLで定義することも可能)

キャッシュパージの方法

キャッシュのパージ方法は以下の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

techblog.lclco.com

ログ

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を運用していたこともあり、必要な事項はスムーズに理解できました。今回の記事では、紹介しきれていないことも多数あるため、具体的な移行記事と共に別の記事を書きたいと思います。