FastlyとOCI連携

皆様、メリークリスマス。
何歳になってもクリスマスの朝に枕元を確認してしまいます。id-nakamuraaです。

この記事は「 Oracle Cloud Infrastructure(その2) Advent Calendar 2019 - Adventar」の12月25日の記事として掲載されます。最終日記事です!

弊社はFastlyの リファーラルパートナー です。
が、私はyamagoya2019のハンズオンに参加した以外でFastlyに触れたことがないので色々試してみよう!と思い、今回はFastlyとOCIを連携してみました。

参考記事 docs.fastly.com

yamagoya2019の参加レポート cloudii.atomitech.jp

目次

【1】CDN、Fastlyについて

1.CDNとは

CDNとはContents Delivery Networkの略です。 Web上のコンテンツのキャッシュを各地域に配置したキャッシュサーバーに保存し、ユーザーに返すことでオリジンサーバーの負荷軽減やコンテンツの高速表示が可能になるサービスです。
OCIにはCDNがないため、使用する場合は他のCDNサービス(Fastly、Akamai、Amazon Cloud Front 等)と連携する必要があります。

2.Fastlyとは

FastlyとはCDNサービスのうちの一つで、他のCDNサービスと比較して高速処理が可能なところが特徴です。
高速処理が可能なことで、即時反映が必要なコンテンツでもCDNが利用できます。

Fastlyの標準機能
・インスタントパージ
 150ms以下でキャッシュ削除が可能。
 また、Surrogate Keyでタグ管理が可能なため、タグ単位のキャッシュ削除なども実行できます。

・リアルタイム設定
 設定変更を数秒で全世界へ適用が可能。また、VCLでプログラミング可能なため柔軟な設定ができます。

・リアルタイム・ログストリーミング
 ログをクラウドストレージやログ解析サービスにリアルタイムストリーミングすることが可能。

Fastlyと他のCDNサービスとの処理時間比較

Fastly 他のCDNサービス
キャッシュの削除 150ミリ秒 5秒、数分、数時間
設定変更 5秒 15分から数時間 プロフェッショナルサービスへ作業依頼
ログ配信 100%を数秒以内に配信 1%程度のログファイルをリアルタイムで配信

【2】設定手順

1.OCI側の事前準備

Fastlyと連携させるwebサーバーをOCI側で準備しておきます。
・OCI でインスタンスを作成
・独自ドメインのhttpリクエストで画面が表示可能

私は、作成したインスタンスにnginxをインストールして、「dtest.work」ドメインに紐付けをしました。
「dtest.work」の画面 f:id:a-nakamuraa:20191223124931j:plain

参考記事 community.oracle.com cloudii.atomitech.jp

2.Fastlyのトライアルアカウント登録

Fastlyを利用するためにトライアルアカウント登録していきます。
トライアルアカウントは最大50ドル相当のトラフィックを無償で利用できる開発用アカウントです。

Fastly.com にアクセスして「Sign Up」をクリック f:id:a-nakamuraa:20191223125352j:plain

登録フォームに必要事項を記載すると、登録が完了します。 f:id:a-nakamuraa:20191223125427j:plain

3.Serviceを作成

登録後に受け取ったメールの「Verify your account」をクリックして、登録したアカウントにログインします。
Fastlyにログインすると以下の画面が表示されます。 f:id:a-nakamuraa:20191223142535j:plain

「GET STARTED」を押すと、「Unnamed Service」という名前のサービスが作成されます。
この名前は編集可能ですが、今回はこのまま進めていきます。 f:id:a-nakamuraa:20191223142555j:plain

4.ドメインの設定

「Domails 」の 「Dmain name your website… 」に連携したいドメインを記載して 「ADD」 をクリックします。
私の場合は www.dtest.work を記載しました。 f:id:a-nakamuraa:20191223125736j:plain

追加したドメインが表示されます。 f:id:a-nakamuraa:20191223142845j:plain

5.キャッシュサーバーを確認

「Test domaim」をクリック f:id:a-nakamuraa:20191223142900j:plain

キャッシュサーバーにアクセスしていることを確認して、URLをメモしておきます。
私の場合は「http://www.dtest.work.global.prod.fastly.net/」がキャッシュサーバーのURLです。
 ※この段階ではerrorのメッセージが表示されます f:id:a-nakamuraa:20191223130019j:plain

6.Hostsを登録

Fastlyの設定画面に戻ります。
「Origins」のメニューを開いて、「Hosts 」にOCIで作成したwebサーバーのIPアドレスを入力して「ADD」を押します。 f:id:a-nakamuraa:20191223130045j:plain

追加したHostsが表示されます。 f:id:a-nakamuraa:20191223130215j:plain

7.OCIでDNSゾーンのCNAMEレコードを設定

OCIコンソールに移動します。
対象のDNSゾーンの詳細画面からCNAMEレコードを追加します。

「TARGET」は 5.Fastlyのキャッシュサーバーを確認 でメモしておいた、FastlyのキャッシュサーバーURLを入れます。 f:id:a-nakamuraa:20191223130419j:plain

レコードを追加したら、「変更の公開」をします。

8.FastlyのServiceを開始する

Fastlyの設定画面に戻ります。
「ACTIVATE」をクリック f:id:a-nakamuraa:20191223130534j:plain

サービスが開始しました。 f:id:a-nakamuraa:20191223130613j:plain

「Your test URL」をクリックして、Fastlyのキャッシュサーバーで画面が表示されることを確認します。
5.Fastlyのキャッシュサーバーを確認 の時点ではerrorのメッセージが表示されていましたが、nginxのページが表示されるようになりました。 f:id:a-nakamuraa:20191223130706j:plain

9.キャッシュの状態を確認する

Fastlyの設定画面から、「CONFIGURE」「CHECK CACHE」の順でクリックして、確認するURLを入力します。 f:id:a-nakamuraa:20191223143105j:plain

キャッシュの対象が出てきました。
f:id:a-nakamuraa:20191223143119j:plain

もしContent hashが各キャッシュサーバーで違っている場合、キャッシュに問題があることを示しています。
上記の確認画面で全て同じContent hashだったので、正しい状態ということが確認できました。

【3】さいごに

今回はOCIとFastlyを連携させてみました。思っていたよりも簡単にできてしまった気がします。 私はCDNを触ったことがないので他製品との比較はできないのですが、FastlyはGUIが使いやすいと感じました。
Fastlyを利用している方は「キャッシュの設定が柔軟にできるところがいい」と仰っていた印象が強いので、次はVCLで色々なキャッシュの設定を試してみたいと思います。