前回は、Unityに関する、意外と知らない機能についてご紹介しました。
今回は、簡単ではありますが、CloudFlareについてご紹介いたします。
■CloudFlareとは?
CloudFlareには色々な機能がありますが、大まかに以下の2つの機能が「無料で」利用できます。
・CDNサーバーとして機能します
・SSL機能を利用できます
無料で利用できるということで、既に世界中で利用されています。
(世界中のコンテンツの4%は、CloudFlare経由であるという統計情報もあります)
■CDNとは
CDNサーバー(Content Delivery Network)というのは、簡単に言うと「キャッシュサーバー」です。
静止画や動画のような、静的なコンテンツをキャッシュし、オリジナルのWebサーバーに変わって
応答してくれるものです。
プログラムを実行して、動的にコンテンツを作るような部分には利用できませんが、
静止画や動画等は、一度Webサイトに公開した後は、基本的に変わることがありません。
にも関わらず、これらのコンテンツはサイズが大きく、Webサーバー側の負担が大きいです。
このため、これらの静的コンテンツを、CloudFlareにキャッシュしてもらうと、Webサーバーの負担が減ります。
他にもCDNサーバーはいろいろとありますが、CloudFlareは「無料」です。
■SSL/TLS
SSL/TLS(Secure Sockets Layer)(Transport Layer Security)というのは、簡単に言うと「暗号化技術」です。
インターネットを利用するとき、「https://~」から始まるURLの場合、SSLが利用されています。
通常、SSL/TLSを利用しようと考えた場合には、ざっくり以下のような手順を踏みます。
1)自分でSSL/TLS証明書を作り
2)認証局へ証明書発行の申請を行い
3)自分のWebサーバーに、その証明書を設定する
そして、2)の部分で料金がかかります。
また、SSLには「有効期限」があるので、有効期限が切れたら、更新のために、また料金がかかります。
認証局を通さずに、SSLを適用することもできますが、
そのようなサイトにブラウザから接続すると、「このサイトは安全ではない可能性があります」
という画面が表示されますし、自作したスマホアプリからアクセスすることも、基本的には出来ません。
これが、CloudFlareを利用すると、SSL機能も「無料」です。
■AWS(Amazon Web Service)を利用しつつ、CDNサーバだけCloudFlareを利用するかどうか
AWSは、個人的には非常に良いサービスだと感じます。
Webサーバ/DBサーバ/キャッシュサーバ/コンテンツサーバ等を、自由に組み合わせることができ、
スペックも自由に変更できます。
AWSにもCDNサーバー(CloudFrontという名称です)がありますので、
もしCDN機能を利用したいなら、これを使うのが良いと思うのですが、この機能は従量課金制です。
料金だけで考えると、頻繁に更新がかかるようなサイトではないなら、
CDNサーバーについてはCloudFlareを利用する方が有利です。
CDNサーバーでどちらを利用するべきなのかは、その時々で変わると思いますので、
判断に利用する際の情報をまとめます。
1)日本国内の拠点数が、CloudFlareは1拠点、AWSは3拠点
CDNサーバーを利用する場合に、導入の理由が「速度を早くする」点にあった場合、
物理的に、どこにサーバーがあるのかが重要になります。
CDNサーバーの応答が早いのは、世界中に多くのキャッシュサーバーを置いておいて、
アクセスされた場所に最も近いところにあるキャッシュサーバーから
必要なコンテンツを返却するからです。
AWSは、日本国内だけで3拠点あります。
CloudFlareは1拠点だけです。
このため、CloudFlareはアクセスする場所によっては、応答時間が長くなります。
また、もし物理的な障害(たとえば、大規模な地震)が起きた場合、
3拠点あるAWSの方が、より安全です。
2)セキュリティ設定をはじめとする、各種設定をすべてで共用できるかどうか
CloudFront以外の部分を、AWSで構築しているのでしたら、
CloudFront部分も含めて一元で管理できる方が良いです。
3)Amazonのサービスは手厚い
AWSを利用していて感じるのは、Amazonのサービスの手厚さです。
日本語のドキュメントも多いですし、どうしても不明な点があっても電話等で対応してくれます。
また、AWSコンソールも利用しやすいなと感じます。
CloudFlareも、問い合わせサービス自体は手厚いと感じますが、日本語のドキュメントはありません。
何かやりたいことがあった時に、実際にはCloudFlareで簡単に設定できるものであっても、
なかなか探し出すことが出来ません。
4)それでも、CloudFlareは無料である
1)~3)のように、様々な部分でAWSの方が良いなと感じるものの、
単純に安くCDNサーバーを利用しようと考えた場合は、無料であるCloudFlare一択です。
ただし、コンテンツサーバーに、AWSのS3を利用する場合には、
CloudFlareとS3間での通信には、AWS側の料金が発生します。
静的コンテンツ自体を頻繁に更新するようなサービスでなければ、
さほど問題にならないかなと思いますが、
実際に導入する場合には、AWS側の料金表を参照してください。
■AWSを利用しつつ、CloudFlareを利用する方法
CloudFlareでアカウントを作成後、サイトを登録します。



AWSで設定済みの、EC2やS3に対して、ルーティング設定をします。
この時、DNS名で登録する場合は「CNAME」、IPアドレスで登録するなら「A」です。
また、Statusがオレンジ色の雲なら、CDNが有効になります。灰色の雲なら、DNSサーバーとしてのみ機能します。

プランを設定します。ここでは無料にしています。

ここまで進むと、ネームサーバーを以下の通り切り替えてください、と言われます。
CloudFlare側は、このまま「Continue」ボタンで先に進むので問題ないですが、
AWSのRoute56や、他のサービスでドメインを取得しているものと思いますので、
そちら側でも、このネームサーバーの設定に自分で切り替える必要があります!

最後に、AWSのS3に対してルーティングを行う設定を行います。

■SSLの設定も行う
これまでの説明では、EC2側はDNSサーバーとしてのみ機能するようにしていましたが、
SSLを設定する場合には、ここからさらに設定を行います。
画像では、SSLの設定値を、「Flexible」にしています。
他に、「Full」「Full(Strict)」の設定値もありますが、違いは以下の通りです。
導入対象のWebサーバにあわせて、適時変更してください。
・Frexible:
ブラウザ⇒CloudFlareまでがHTTPS、その先がHTTP
つまり、AWSのEC2側には、SSL設定が必要ありません。
とても画期的な設定ですが、WordPressを利用していたり、各種広告をサイト上に表示している場合には、
そのままでは正常に動かないケースがあります。
その場合には、個別に対応を行う必要があります。
・Full:
ブラウザ⇒CloudFlare⇒その先までがHTTPS
AWSのEC2側で設定しているSSL証明書が、認証局を通したものでなくても動作します。
・Full(Strict):
ブラウザ⇒CloudFlare⇒その先までがHTTPS
AWSのEC2側で設定しているSSL証明書が、認証局を通したものでなければ動きません。

SSLを適用する場合には、DNS設定で、オレンジ色の雲マークに変更します。
雲マークをクリックすることで、切り替わります。

■その他、注意点
CDNサーバーの設定も、SSLの設定も、
特にCloudFlareの無料プランの場合は、反映に時間を要しますのでご注意ください。
■まとめ
CDNもSSLも無料で利用できる、CloudFlareは、とても良いサービスです。
ご覧いただいた通り、特に難しい設定もなく、比較的簡単に設定できます。
もし、Webサーバーの負荷が高く、CDNサーバーの導入を検討されているようでしたら、
CloudFlareのご利用も検討してみてはいかがでしょうか?
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。