見出し画像

【レポート】社内でCloudflare勉強会を開催しました!

こんにちは。DELTAの馬場です。
先日社内でCloudflareの勉強会が開催されました。今回はその勉強会の内容を記事にしていこうと思います。

開催の理由は?

最近、弊社のCTO Boosterのサービスの1つである"インフラコスト削減代行サービス"においてお客様にCloudflareのCDNをご提案することが何度かありました。しかしCloudflareの名前や機能の雰囲気だけは知っている/聞いたことはあるといったメンバーは多くいたものの触ったことやきちんと資料を確認したことのある人は多くありませんでした。
そのため、良い機会だ!ということで代表の丹主催で初心者向け社内Cloudflare勉強会が開催されました。

勉強会の内容

そもそもCDNって?

Contents Delivery Networkの略
ちゃんとした説明はググると出てくるので割愛するが、2つのキーワードから役割を説明します。

キーワード1: キャッシュ

CDNはオリジンサーバとクライアントの間にある存在レスポンスをキャッシュしてくれるので、自分でキャッシュできているコンテンツについてはオリジンサーバに毎回問い合わせが不要。
キャッシュが無い場合はオリジンに毎回問い合わせを行うが、キャッシュがある場合はCDNとクライアント間の通信だけでやり取りが終わる。

本来の経路は↑
キャッシュすることでoriginへの問い合わせがなくなる!

キーワード2: エッジ

Contents Delivery Networkといってネットワークという言葉が出てくることからわかるように全世界にエッジサーバーが存在している。
基本クライアントから地理的に一番近いエッジサーバーに通信するようになっている。

参照:https://www.cloudflare.com/ja-jp/learning/cdn/what-is-a-cdn/

CDNのメリット

これもググると出てくるので、簡単に箇条書きでCDNのメリットとデメリットを記載しておきます。

・コストパフォーマンス 
 -オリジンサーバーより安いことが多い
 -キャッシュやLB的な動きによって管理下にあるサーバーの負荷が下がる
・速度
 - 地理的に近いので速い
 - キャッシュしてるので速い
・セキュリティ
 - オリジンサーバーにトラフィックがいかないのでDDoS にも強い
 - オリジンを隠蔽できる(エッジサーバーのエニーキャスト IP だけが見える状態にする)ことで変なこともされない

CDN のデメリット

・非キャッシュコンテンツについてはむしろ遅くなる
 -直オリジンと比較してオーバーヘッドが多い
 -ただ CDN ベンダーは NW にかなり投資しているはずなのでそこまで遅くはならないはず
・キャッシュが古いと混乱を招く
 -古いコンテンツを配信し続けてしまうこともありえる


Cloudflare の CDN

CloudflareのCDNの特徴

・DNS と密結合している(AWSCloudfront のように単体で CDNだけ立ち上げて別の DNS から向けるといったことが基本的にはできない)
・クライアントへのコンテンツ配信量が無料!!!

早速Cloudflareを触ってみる!

AWSのCloudFrontからコンテンツを配信しているアーキテクチャを
CloudflareのCDNから配信する形に移行してみる。
(※ネームサーバーの設定を操作することになります。実施される場合は設定変更の反映等で数日かかる可能性があることを念頭に置いてください。
私はこれを考慮していなかったのでこの記事の公開が遅れました。。。)

移行のイメージ
上が before / 下が after


CloudflareのCDNの作成方法

最初にCloudflareでのCDNの作成方法をざっくり記載しておきます。

DNS レコード登録 -> CNAME/A レコード登録 ->「プロキシ」有効化
=> CDN 化!!

CDNなんてメニュー無い!?
→Cloudflare では "Webサイト" 以下がCDNのメニューになります。
設定したいドメイン名でサイトを作成し、設定を進めていきます。

CloudflareでのDNS

前述のようにCloudflare では、Cloudflare の DNS 設定で作成したレコードに対して Proxied 設定をすると CDN が有効になります。
つまり、既存のサイトまたはアプリケーションに対して Cloudflare の CDN を有効にしたい場合は、Cloudflare 側で DNS 設定が可能になっている必要があります。
⇒そのために、NS の移行が必要!
具体的には:NS レコードを 01.dnsv.jp / ns-○○.awsdns-□□.com. 等 から xx.ns.cloudflare.com に変更する

Cloudflare では別NSからの移行時に現行の NS が持っている設定をすべて自動でインポートしてくれるので NS レコードの設定だけで移行が完了できます!
MX レコードなども含めて全て移行できるので、従来通りのネームサーバーがそのまま使い続けられる⇒DNS のコンソールが変わるだけなイメージになります。

実際に移行してみる

やることは2つだけ
1.CloudflareにCDNを作る
2.NSをCloudflareに移行する

現行のコンテンツはこんな感じでcloudfrontから適当なindex.htmlを配信しています。

これを下の構成にしたい。

1.CloudflareにCDNを作る

トップページの”サイトを追加”ボタンから下記画面に移り、任意のサイト名を入力して”サイトを追加”をクリック

お試しなのでFreeプランで続行を押します。

既存のドメインをサイト名にしていた場合、この時点で既存の設定が自動で読み込まれる!!!楽ちん!!!

次の画面でNS移行用のレコードが払い出されるので、それをメモっておく。

コンテンツがAWSのCloudfrontなレコードを作成する。
"レコードを追加"より以下を入力し、”保存”を押してレコードを作成する。
タイプ:CNAME
名前:任意の名前
ターゲット:cloudfrontのディストリビューションドメイン名

ここまで出来たら次はNSの設定を変更します。

2.NSをCloudflareに移行する

お名前ドットコム等のドメインを管理しているサービス上のNSを
Cloudflareのサイト登録時に払い出されたものに変更します。
メモをするのを忘れてしまってもDNSのページから確認ができます。

NSの設定変更が完了するとCloudflareにメールが届くので、メールを待ちます。(時間かかります。。。)

NSの変更が完了したら、プロキシを有効にします。

チェックを入れる
オレンジになる

Cloudflareで設定したドメイン名でcloudfrontのコンテンツを取得できる!!

移行作業を実施してみた感想

かなり簡単に移行作業を実施することができました。
あまりAWS等に詳しくない方でも作業だけなら全然できてしまうと思うので
シンプルで便利な機能だったと思います。
もちろん商用運用をしようと思うと単純にはいかないとは思いますが、簡単な個人用のwebページ等であれば簡単な作業で通信料の削減が見込めるのでとても有用なサービスであるように思いました。


Team DELTAについて

ここまで読んでくださってありがとうございます!
インフラエンジニアに限らず、幅広いメンバーが活躍しているので、一緒に働きたい、どんなことをやっているのか聞いてみたい等、なんでも答えますので、下記の申し込みフォームからご連絡ください!

この記事が気に入ったらサポートをしてみませんか?