円安の世の中AWSのドル支払は痛いです。最近お客さんのためにコスト削減できないかと調査したところなんと1ヶ月に1,400ドル以上もコストを下げる結果となりました。年間にしたら16,800ドルの節約です!

S3からの画像配信

コスト削減を思い立って、まずお客さんが使用しているAWSサービスのコストを再検討しました。EC2やRDSはもうすべて1年間のリザーブを購入しているので、オンデマンドに比べて30%以上の節約はしています。となると節約できるのは転送量や使用量ベースのコストです。ウェブのアクセスやS3の画像のアクセスを私がコントロールできないので、AWSジャパンの無料のコスト解析のおにいさんたちに相談してみました。しかし、セーブしているところはしっかりセーブしていますよ!と逆に褒められる始末。

そのときに、そのおにいさんに1つ勧められたのは、S3から直接画像を配信するのではなく、そこをオリジンとしてCloudFrontから配信すれば良いということです。CloudFrontを使えばユーザーから一番近いデータセンターから配信されます。でもTokyoとOsakaしか日本にはデータセンターないのではと尋ねると、公開できないけれどあちこちにあるのですよと。しかし小さい日本、そんなに変わるかなと思っていると、今度は1ヶ月の最初の1TBは無料なのですよ、とびきりいい話をくれました。ちなみに、私のお客さんのAWSのS3には、ウェブで閲覧できる画像だけでなく、配信するメルマガに含まれるリンク先の画像も置いています。ここ1年間メールの配信数が増加しているのでS3のアクセスがかなり多いのは確かです。

早速、AWS Cost ExplorerでS3の使用量をチェックしたところ、なんと1ヶ月のS3の使用量は、13,000GB(12TB以上)ありました。最初の1TBが無料はいい話だけれど、削減率はたった10%以下ですか。

ということで、本格的にCDNの市場調査とあいなりました。

Bunny(ウサギ)のCDNサービス

いろいろ調査してわかったのは、CDNに関しては世界的スケールなので英語圏のサービスとなるとAWSより安いのがたくさんあることです。問題は、お客さんのサイトは日本語で日本に住む人だけが対象なので(商品は日本しか発送しません)、CDNのデータセンターが日本にあることが必須条件です。その条件でとびきり安いのが今回紹介するBunnyのCDNサービスです。

まず、どれだけ安いかというと、

アジア向けのスタンダードプランは、1GBあたり0.003ドル!

AWSのS3やCloundFrontは1GBあたり0.114ドルだから、すでに73%以上のディスカウント率です。

さらに、月1TB以上の大量消費のお客様のためにボリュームプランもあります。

超安の1GBあたり0.005ドル

再度、AWSと比べると95%以上のディスカウントです。

彼らの計算機を使うと、1ヶ月のコストは、

ちなにに、AWS S3のコストは、1,482ドルです。

POPS

CDNのクォリティの基準として、POP (Points of Presence)の数、つまりデータを配信するデータセンターの数の多さというものがあります。

Bunnyのスタンダードプランを見てみましょう。

世界中に123のデータセンターが散らばっています。日本周辺では、Tokyo, Osaka, Seoul, Hong Kong, Taipei, Singaporeがロケーションです。

ボリュームプランでは、POP数はぐっと少なり10となりました。しかし、日本ではTokyoが含まれているではないですか(2023年かららしい)!

日本周辺では、Tokyo, Hong Kong, Singaporeがデータセンターのロケーションです。
先に話したように日本に住む日本の対象ならこれでも十分ですね。もちろん、どこのデータセンターもBunnyが一部をどこかから借りているのは確かです。

CDNの設定

早速、登録して使用してみましょう。
登録して14日間は無料で使用可能なので試してみましょう。

登録したと仮定して、すでにAWSのS3バケットをお持ちなら、CDNの設定はいたって簡単です。以下のように、Bunnyで希望するCDNのアドレスとS3のアドレスを入れて、High Volumeを選択するだけです。

これで、例えば、https://larajapan.b-cnd.net/test.jpgにアクセスが可能となります。

CDNのPull Zoneを作成すれば、キャッシュの期間の設定、オリジンの認証、画像のクォリティの自動操作、Jpeg画像のwebpへの自動変換、など細かな設定がたくさんありますが、いろいろな対応が可能です。もちろん、CDN Pull Zoneは複数作成可能で、S3バケットごとに作成も可能です。

CDNのキャッシュの削除

お客さんのサイトでBunnyのCDNを使用してみました。使用の前にプログラムが必要だったのは、サイトの商品画像の差し替えでした。以前はS3の画像を取り換えるだけでしたが、今度はそれとともに、Bunnyで対応する画像のキャッシュの削除です。これをやらないとBunnyのキャッシュ保持の期間があるために、すぐには画像が変わりません。もちろん、ブラウザでのキャッシュの問題もありますが。

Bunnyでのキャッシュの削除のプログラムは簡単です。

まず、APIキーが必要です。以下の矢印の部分をクリックしドロップダウンメニューから登録した自分の名前をクリックします。そこのAccount Settingの画面でAPI Keyのメニューをクリックすれば以下のようにキーの取得が可能となります。シンプルなことにBunnyの他のサービスはすべてこのキーひとつで操作可能です。

キーを取得しところで、パージの削除は、Laravelなら以下のようにHttpのファサードを使用します。


$url = 'https://larajapan.b-cdn.net/test.jpg'; //キャッシュ削除の対象のurl
$purgeUrl = 'https://api.bunny.net/purge'; // Bunnyの削除のためのurl

$response = Http::withHeaders([
    'AccessKey' => 'ここにAPIキーを入れる',
    'accept'    => 'application/json',
])->get($purgeUrl, [
    'url'   => $url,
    'async' => 'false',
]);

使用した感想は?

ここが、皆さんが一番知りたいところでしょうね。

お客さんのサイトでS3からの画像配信をBunnyのCDNへ変えて、かれこれ3ヶ月になります。良いニュースは、冒頭で書いた通りの凄いコスト削減となりました。不思議なのは、すべて日本のTokyoのデータセンターから配信されると思いきや、以下のようにTokyoとSingaporeからの配信が半々くらいです。アメリカでの配信があるのは、どうもメルマガに含まれる画像リンク(画像ではない)の画像をGoogleが彼らのデータセンターでキャッシュするからのようです。

さて良いニュースがあれば悪いニュースもあります。それほど悪いニュースという訳でもないのですが、困ったのは、先に書いたBunnyのCDNのキャッシュの削除がうまく行かないときが数回ありました。つまり、お客さんのところでS3の画像の差し替え(同じファイル名で画像の内容を変える)の前に、既存の画像をS3から削除しBunnyのCDNのキャッシュの削除を行っても、このキャッシュがすぐに削除されないのです。ひどいときは削除まで1日近くかかりました。この間差し替えたのにも関わらず、以前の画像が表示されるのです。

この件に関してサポートへ連絡しました。受け答えは即座でいいのですが、いつまでも解決されない。しつこく尋ねると、「海底ケーブルが切れて障害が生じている」と壮大なことを言ってきます。画像の差し替えの頻度はとても低いのですが、お客さんが困っているのでS3からの画像配信に戻しました。サポートからの連絡がなかったのですが、1週間くらい経過してから問題が解決したのでBunnyのCDNに戻しました。もちろんその間はコストありましたが、いざという時に切り替えるようにプログラムを設定しておくのはいいことです。

しかし、それで解決と思いきや最近また発生しました。私の方も準備万端ですでにキャッシュの削除の問題をモニターするプログラムも作成してありますので問題が発生すればすぐわかります。今回は前回よりはベターでキャッシュは最高1時間くらいで削除されました。しかしそれでも1時間はかかりすぎです。今回も対応されないと思いましたが、ダメもとでサポートに連絡しました。しかし今度は担当がいいのか、まじめに取り組んでくれてサーバーの調整をしてくれました。さらに、私がどうモニターしているかも尋ねてくれて、最終的には彼ら自身もTokyoにS3バケットを持ちTokyoのサーバーでキャッシュの削除時間をモニター作成したということです。すぐには復旧となりませんでしたが24時間以内に復旧となりました。前回に比べてかなりのサービスの改善です。まあ、将来はわからないので私のモニターは続きます。

最後に

AWSに比べて削減できたコストは信じられないレベルです。私のお客さんはEコマースのサイトなので配信速度に関してはそうセンシティブはありませんゆえに、速度の比較はしていません。ここはケースバイケースでしょう。私は経験がありませんが、BunnyのCDNにはビデオのストリーミングやS3と似たようなファイル保存のサービスも提供しています。コストが気になるなら無料で試してみるのがベストです。

By khino