2013年12月29日日曜日

組み合わせると安くなる CDNの例

SaaSで使った分だけのCDNといえばAmazon CloudFrontがいい感じですよね。

Amazon CloudFront(コンテンツ・ストリーミング配信ネットワーク) | アマゾン ウェブ サービス (AWS 日本語)

CDNの老舗 Akamai には憧れます。F5 Big-IPくらい憧れます。
ほかに気軽に始めることのできるCDNってどんなものがあるんでしょうね。

Compare CDN | CDN Comparison, CDN Performance, CDN Providers

いっぱいあるなー。
パフォーマンスももちろんだけど、可用性が気になるところです。さらに言えば、先日の仕入れの話に戻って、お値段なんていうのももちろん気になりますよね!

CDNの機能として、ぜひとも提供しておいて欲しいものってどんなものでしょう。

  • オリジン指定での透過アクセス(PUSHしない)
  • HTTP GET以外のリクエストも転送
  • ワイルドカード証明書でのHTTPS
  • カスタムドメイン証明書でのHTTPS
  • ログの取得

とかかなー。
あとは、そうねリアルタイムレポートとか、自動フェールオーバー(エッジ間とかで)とか、Cookie対応、CORS、Dynamic IP Restrictみたいな動的にDoS判定して拒否(これはぜひとも欲しいけど、こんなことすると商売あがったりだぜ、という気もしなくもなく)とか?

なんにせよ日本にエッジがないことにはちょっと辛いですよね。
そんなあなたにおすすめなのが↓ここ。

KeyCDN - Content Delivery Network

なんか、聞いたことないよー、ってなるでしょ。スイスで頑張ってるベンチャーだってさ。
不思議なことに日本にもエッジ(POP:Point Of Presence)があってね。
とにかく安い。
しかもプリペイ。事前にチャージしとく。チャージが尽きたら止まるのかよ!って、そーなんだけど、すぐには止まりません。と、言われました。
なんにせよですよ、とにかく安いんですよ。

KeyCDN - Content Delivery Network

トラフィック$0.04/GB、ストレージ$0.9/GB。ストレージはちょっと謎なんだけど、ログの保持料と、たぶんキャッシュ。ただ、何にどのくらい使ってるのかはわからない。けど、まぁ、変な感じになってはないです。

月額10TBで$400、CloudFrontだとトラフィックだけで、その倍額なうえにリクエスト数にも課金なので、いくらお安いとはいえ、KeyCDNと比べると高いなー、って思える。ドメインいくつあろうとエイリアスで別名どんだけつけようと値段はトラフィック(とストレージ)のみっていうわかりやすい価格設定。

ただね、このKeyCDN。ちょいちょい落ちる。結構がっつり。最近はそんなことないけど、これがびっくりするくらい最初は落ちまくってた。
いくら安くてもこれじゃー、ちょっと。って思ったんだけど、そこでふと思ったですよ。

Amazon Route 53でフェールオーバーさせちゃえば、そこそこ乗り切れるんじゃね?って。

ワイルドカード証明書(カスタムは高いのよー)でのHTTPSはあきらめなきゃいけないけど、HTTPでのアクセスが圧倒的に多い場合、それだけでもKeyCDNに飛ばして、HTTPSはCloudFront。KeyCDNがおちたら、CloudFrontにフェールオーバー。そういう構成にすればいいじゃんねー。

Amazon Route 53(SLA100%のDNSサービス) | アマゾン ウェブ サービス(AWS 日本語)

別名つけないといけないから、それようにドメイン(サブドメインでも)用意しておいて、KeyCDN/CloudFrontのDNS名をそれぞれCNAMEで登録。
でもって、Route 53のヘルスチェック機能を使いたいんだけど、CDNがIP直さしなわけないので、別途固定IPをふれるサーバーから、Reverse Proxyさせて、KeyCDNへのアクセスを固定IPで見えるように(ヘルスチェック専用ね)。
CloudFrontは一応SLAもあって99.9%で頑張るって言ってるんで、そこはもうそれ。それで!
万が一でもCloudFrontがえらいことになったら(CDN参照はUrlRewriteのoutboundRulesに書いてHTMLそのものの書き換えで参照切り替えるようにしてるから)人力でWeb.Config書き換えてCDNをOffにする。
トラフィックさばけるのか怖いけど、サービス停止のほうがもっとこわいー。まぁ、2つの会社のサービスが同時に落ちることはそんな確率も高くないだろうから、なんとかなんじゃん。どうせSLA100%なんておかしな契約をすることなんてありえないんだしね。こういうところでもバランス大事だと思います。

やってることは単純だけど、文字にするとわかりにく。
つまり、組み合わせていいとこどりすれば、CDNの費用を5分の1とか10分の1に落とせるよ!CDNのサービスだって落ちるのを前提にして組み合わせることで、身の丈に合った費用対効果を出せて、うへへな気持ちで年を越せます。

これでなんとか5エントリー...。
来年はもう少し書きたいです...。
書かないと忘れちゃうから。

dotnetConf2015 Japan

https://github.com/takepara/MvcVpl ↑こちらにいろいろ置いときました。 参加してくださった方々の温かい対応に感謝感謝です。