Cloudflareの事例について話す会
まずそもそもCDNとしてのコストメリットが半端ないって話したいtan_t.icon
AWS Cloudfront5000ドル => 900ドルの事例あるtan_t.icon
CDNの全体感はこんな感じ↓
https://scrapbox.io/files/6425b8d701ee0d001b3b6cde.png
エニーキャスト(近いエッジにつなぐやつ
AWSからの移行だとこんな感じでやる↓
https://scrapbox.io/files/6425b85a4452ab001b0ae13e.png
前に置くだけでそんなに安くなるの?!mrsekut.icon
キャッシュが効けばね!tan_t.icon
速度面は体感意外と変わらないtan_t.icon
cloudfrontもエッジだからかっぽい
赤いところが課金対象
Cloudflareが間に挟まるとユーザーエッジ間の通信が無料になる
なのでエッジのキャッシュがきいてればきいてるほど安くなる
どういう場合に有効なのか
https://scrapbox.io/files/6425b9187328ff001cc7fd7a.png
今のegress料金 * Cloudfront側のキャッシュヒット率 が削減の期待値
移行ってどうやんの
DNSをCloudflareに移行する場合は無料プランでできる
CloudflareのDNS上で、CNAMEレコードの「Proxied」をオンにするだけ
CNAMEのレコードごとにproxied or dns onlyが選べる
proxyにすると、DNSが実際はcloudflareのipを指すようになり、名前の通りプロクシしてくれる
https://scrapbox.io/files/6426a1e0dd8a2f001c3a8a70.png
DNSを移行したくない場合は200$/monthのPartial Setupを利用しよう
このあたりのDNSの動き面白いのでデモします tan_t.icon
S3直オリジンは意外と大変
そうなんだmiyamonz.icon
なんかドメインがどうとかで、、、
バケット名がドメインと一致しない場合、Host ヘッダーを書き換える必要があるが、Hostヘッダーの書き換えはフリープランだとできないとかなんとかtan_t.icon
R2は意外とストレージ料金が高いのでプロダクションレベルのアセット管理してるとS3のほうがいいじゃんってなりがち
どちらかというと少量かつトラフィックヘヴィなケースか、Workersから簡単に取り回したい場合など
実はglob likeな範囲指定でのInvalidationがついてない(Enterpriseプランになった)
hogehoge/* をキャッシュclearしてね!みたいなのはEnterpriseプランじゃないとできない
URL直刺し = フルパス指定の個別パージのみ
頻繁にアップロードが走るS3オリジンなどだった場合は対応する実装が必要になる
https://scrapbox.io/files/6425bf1098f0c4001be404fd.png
こういうアーキテクチャで本番運用してます tan_t.icon
Workersとかの話
事例紹介
Stable Diffusionが流行ったとき一個プロダクト作ってみた話(社内のPoCだけど)tan_t.icon
https://scrapbox.io/files/6425c14e25fa36001cabba3c.png
このときはCloudflare Workers as a BFFと、バックエンドとしてAWS SagemakerにSDのモデルをデプロイしてたtan_t.icon
sagemakerは、なんか機械学習動かしたりするやつ
DOのwebsocketとかを使って非同期の生成画像のハンドリングとか、あとは将来的にはピュアなロジックよりはもう少し周縁の課金とかフィルタリングとかのロジックを持たせるみたいな構想だった(結局プロダクションにはならなかったけど)
まぁ結局BFFって話になるけど、でも従来のBFFサーバーより圧倒的に速く、そして独立して動ける(なんならフルスタックアプリも作れるぐらいのポテンシャルがある)というところが特色か?tan_t.icon
逆に言うとそれビジネスロジックじゃんというものを変に抱えないようにする必要がある
1クライアント1durable objects
フレームワーク
superflare
remix
hono
miyamonz.iconが話します
Cache Reserve使って普通のWordpressをSSGにする話
Wordpressはデフォのレスポンスヘッダがキャッシュ拒否しているので意外と大変
Cache系のOrigin Response Headerを無視するオプションあった気がするんだがなくなった?
あった
Page Rules
PoC作ってみたので紹介します
ゼロスケールするサービス(Cloud Runとか)と相性良さそう。
Cache Reserveで使われてるバケットは見られない、、、tan_t.icon
RoRインスパイアな感じのフルスタックFW
個人的にはフルスタックを載せることについては懐疑派なので悩み中tan_t.icon
作者はLaravel触ってたっぽい
コードを読むだけ読みましたmiyamonz.icon
本体3000Lもないので、まだ薄いし、読んで分かる量
方針の悪さは感じないものの、どのくらい便利なんだ?というのはいまいちピンとこなかった
素振りはいてないので使い加減については分かってない
でも、D1なりR2なり、各々のところを薄いwrapperとして使うのは便利そう?
miyamonz.iconの意見
経験ない状態での考えだけど
エッジを含むアーキテクチャでやりたいことって
ユースケースやコスト感に合わせて、ユーザ←→サーバの間をいい感じにイベントの流れを設計したい
CloudFlareが提供するパーツってそんな感じだし
そういったことを快適にするフレームワークってなんだろう?
そのうち、worker上でもnode.js動くようになる?
どういうユースケースに効くんだろうか
なんかフルスタックを取りに行っている印象(QueueやR2、D1など)だけど本当にフルスタックを載せるべきなのか?tan_t.icon
CMSみたいな読み取りが多くて書き込みがマイルドなサービスにはドンピシャ感tan_t.icon
あとはコアコアなロジック(特に最近だとGenerative AIとか?)とその周辺のサービスを切り分けて周辺部分を高速に動作させるとかは向いている印象tan_t.icon
誰かGraphQLのDelegation Serverとか作ってくれないかな,,,tan_t.icon
V8 Isolate
isolate単位で動くようなアプリは今後コスト面で優位性tan_t.icon
denoはGCP kubernetes
D1はdurable objects上にある
また、Durable Objectsの冗長化ストレージ上に構築されているため、データベースは必要に応じて物理的に場所を移動することができ、結果的に最も壊滅的な問題からも数秒で自己回復することができるのです。
本番事例だと時雨堂さんが思いつく
すべての HTTP リクエストは Cloudflare 経由で処理する