CDNは何を選べばいいのか
私はAWSが提供するCDNである「Amazon CloudFront」をお勧めしたい。何らかの理由でアクセスが殺到した場合、すぐにCDNからの配信を始められるというメリットがある。アクセスが減ったら、CDNを止めることもすぐにできる。ここでAWSの従量課金という仕組みが効いてくるのは言うまでもない。
もちろんAWS以外にもCDNサービスを提供しているプロバイダーはある。導入を検討するならば、一度きちんと比較して検討すべきである。
Amazon CloudFrontで抑えるべきポイント
Amazon CloudFrontはエッジにキャッシュされる
キャッシュされるコンテンツは、それぞれの拠点(エッジ)に置かれる。つまり配布した時点で、グローバルなコンテンツとなる。逆に言えば、一度キャッシュされたコンテンツを消すのには時間がかかることになる。複数のエッジに対して順番に削除が実行されるからだ。うっかり間違ったコンテンツをアップロードしてしまい、すぐに消したい場合に困ってしまうのは想像がしやすいだろう。キャッシュの特性を理解すると同時に、リスクのひとつとして捉えるおく必要がある。
キャッシュしないならURL設計をしっかりと
実際の案件で、お客様から「キャッシュしないようにしたい」という要望がまれにある。こういった場合には、URLの設計が重要になる。Amazon CloudFrontを使って、コンテンツをリアルタイムで更新するようにしたいなら設計と検証をしっかり行っておく必要がある。
オリジナルのコンテンツにはS3を
CDNのキャッシュ元(オリジン)となるものは、S3がオススメだ。コンテンツ自体が壊れてしまったら、影響は大きい。S3は、2016年3月でサービス開始から10年が経過した、コンテンツを保存するには信頼のおける有能なストレージのサービスだ。
Amazon CloudFrontの機能を抑えておこう
Amazon CloudFrontには、さまざまな利用パターンがある。CloudFront + S3のサービスを組み合わせると、さらにパターンの幅が広がる。オリジンアクセスアイデンティティを使用すれば、S3へのアクセス制限も可能となる。オリジナルへのURLへのアクセスができなくなる要望には適している。
SSLを使う場合、SNI対応のものは無料で使用ができる。しかし、フィーチャーフォンや古いブラウザ対応をするには、独自SSL証明書を使う必要がある。ただし月600ドルかかるので用途を見極める必要がある。
さらに、Amazon CloudFrontは、ストリーミング配信やプライベートコンテンツ配信などにも活用できる。これだけで記事を1本書けてしまうので、もし別の機会があれば紹介したい。