Fastly経由の配信に切り替える手順

この記事ではサイトの配信をFastly経由に切り替える方法や注意事項について説明します。

```
特に記載がない限り本記事の記載内容はデフォルト設定での挙動となります。
Fastlyの正式なサポート情報は以下のサイトでご確認下さい。
https://docs.fastly.com/
```

Fastly の配信設定を作成し、事前のテストが完了すればいよいよ実際の配信を Fastly 経由に切り替える事ができます。

配信設定の事前のテスト方法については [hosts ファイルを利用した CDN の導入前テスト](
http://qiita.com/AtsushiFukuda/items/b277fe7db05a7f1cfa26)を参照下さい。

# 用語
最初にこの記事を理解するにあたって予め理解する必要のある用語を簡単に紹介します。

・**FQDN** - 「Fully Qualified Domain Name」 の略で www.example.com など Web サイトにアクセスするためのホスト名（サブドメイン）、ドメイン名などすべてを省略せずに指定した記述形式
・**DNS**　- Domain Name System の略でホスト名から IP アドレスを返却するための仕組み
・**A レコード** - DNS のレコードタイプの一種。www や img など特定のホストや example.com といったようなネイキッドドメインに IP アドレスを設定する場合に利用する
・**CNAME** - DNS のレコードタイプの一種。www を www2 といったように別のサイトにリダイレクトする際に利用される
・**ネイキッドドメイン（Zone APEX）** - example.com や example.jp などといったように www といったホスト名を含まないドメイン。

上記はかなりざっくりとした説明ですのでより深く理解したい方はそれぞれのキーワードを検索して見て下さい。


# Fastly 経由でコンテンツを配信する３つの方法
Fastly 経由でコンテンツを配信するには大きく分けると以下の3つの方法があります。

a. DNS に CNAMEレコード を設定
DNS の CNAME レコードを利用して、配信対象のドメインを Fastly にリダイレクトします。

b. DNS に Fastly サーバーの IPアドレス を A レコードで設定
Fastly からお知らせする IP アドレスを配信対象のドメインに A レコードとして設定してサービスを適用します。

c. Fastly ドメインを利用
Fastly のドメインを使ってサイトにアクセスします。

それぞれについてもう少し詳しく説明します。

# a. DNS に CNAMEレコード を設定
配信対象の DNS レコードに Fastly を指すドメイン名を CNAME として設定します。最適な配信拠点（POP）への誘導も容易なため特別な理由がない限りはこの方法が推奨されています。

CNAME 先の Fastly のドメインは TLS(SSL) 配信の利用有無で異なります。

- TLS の利用がない（non-ssl） の場合
以下のドメインを CNAME　ドメインとして利用可能です。
`dualstack.nonssl.global.fastly.net.` 

Non-TLS 用の最新のドメインは [TLS 非対応ホスト名とトラフィック制限](https://docs.fastly.com/ja/guides/working-with-cname-records-and-your-dns-provider#tls-%E9%9D%9E%E5%AF%BE%E5%BF%9C%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E3%81%A8%E3%83%88%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E5%88%B6%E9%99%90)  から確認して下さい。

- TLS 配信を行う場合
TLS で配信を行うは Fastly TLS というオプションを利用して証明書を設定します。設定が完了すると CNAME ドメインが表示されるので、そのドメインを CNAME 先のドメインとして設定します。[通常は以下のドメイン](https://docs.fastly.com/ja/guides/working-with-cname-records-and-your-dns-provider#cname-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%AD%A3%E3%81%97%E3%81%84-fastly-%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E5%80%A4%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B)になります。
`<letter>.sni.global.fastly.net`

トラフィックの規模や特性など状況によってお客様専用の CNAME ドメインの利用をお願いすることもあります。その場合は指示に従って専用の CNAME ドメインを利用して下さい。

CNAME 先や手順の最新情報は以下のページからご確認ください。
[Fastly TLS](https://docs.fastly.com/products/tls-service-options-ja#fastly-tls)
[CNAME レコードの追加](https://docs.fastly.com/ja/guides/adding-cname-records)




# b. DNS に Fastly サーバーの IP を A レコードで設定
DNS の制約でネイキッドドメインには CNAME レコードを設定することが出来ません。

この問題に対処するため Fastly では ネイキッドドメインに設定することでサービスを利用可能な A レコードを通常４つ提供します。

対象のドメインにこの A レコードを設定することでネイキッドドメインでも Fastly CDN を利用することが可能になります。

Aレコードを設定した場合、IP Anycast という技術を使ってユーザーに最適なサーバーを割り当てます。CNAME でリクエストを Fastly に向ける方法と比べるとトラフィックを最適なパフォーマンスを提供する POP に誘導する柔軟性に欠けるため、可能であれば CNAME 方式での導入を推奨しています。

なお、この方法で Fastly を利用する場合は対象のドメインに１つだけではなく4つの A レコードが返却される様に設定して下さい。4つのIPを返却することでトラフィック大量発生時の分散性能や、ネットワーク経路の障害などに対する耐障害性を向上させることが可能となります。

詳細については以下のページを参照下さい。
https://docs.fastly.com/ja/guides/using-fastly-with-apex-domains


# c. Fastly ドメインを利用
DNS を設定変更せずに Fastly 経由でサイトにアクセスすることができます。

ただしブラウザのアドレスバーには`https://<name>.global.ssl.fastly.net/`といったように Fastly のドメインが表示されます。

本番環境での Web サイトの配信には向きませんが、導入前の簡単なテストや、API やイメージサーバーなどユーザーの目につかない部分で使用することも出来ます。

なお、このドメインは TLS の配信を行うことも可能で追加のコストも発生しません。詳細は以下のページを参照下さい。
https://docs.fastly.com/ja/guides/setting-up-free-tls


# 注意事項と確認事項
サイトの配信を切り替える前に注意すべき内容には以下のようなものがあります。

・DNS の TTL
DNS のレコードにも TTL(Time To Live)があります。DNS レコードを変更した後にその変更がインターネット上に広がるまでにはここで設定した TTL の時間かかる可能性があります。

CNAME など DNS の切り替えを予定している DNS レコードには予め短めの TTL を設定しておくと切替時に新しいレコードの伝搬をスムーズにすることが出来ます。

TTL は600秒ぐらいをおすすめしますが、3600秒(1時間)程度以下なら特に問題になることはないと思います。86400秒(24時間)などが設定されているようであれば予め短い TTL を設定しておいた方がよいでしょう。また、切り替えのために TTL を短くした場合は切り替え後に適切な TTL に戻すことを忘れないようにしましょう。

・CNAME に設定するレコード
よくある間違いなのですが、CNAME レコードには`nonssl.global.fastly.net.`というように最後の**`.`(ドット)**を忘れずに設定して下さい。
これがないとリクエストは正常にリダイレクトされません。

- - -