この中から、個人的に気になったものたちをさっくりまとめ。つまりWorkersとかPagesとかに関連するものが多く、それ以外のStreamingとかWeb3系はスルーしてる。
The next chapter for Cloudflare Workers: open source
コードとして公開されたとして、誰しもが簡単に扱えるものではないよなーとも思いつつ、各エッジランタイムの差分が減るといいですね。
10 things I love about Wrangler v2.0
- CLI`wrangler`のメンテナより、`v2`のリリース記念記事
- いくつかピックアップすると、
- 4. `miniflare`が内包されたよ
- `--local`フラグだけでローカルで開発できるよ
- まぁそのために`wrangler`をRustからTypeScriptで書き直したようなもんやし
- 8. バンドラ同梱になったよ
- 設定いらずにポンできるよ路線
- 内部的には`esbuild`を使ってる
- JSX、TS、WASM、HTMLがフォーマットとして自動で使える
- https://developers.cloudflare.com/workers/wrangler/module-system/
- 独自のビルドコマンドも引き続き使えるのでご安心を
For CFWとしての`wrangler`は元からそんなに不満なかったので、いまだβなFor CFPとしての`wrangler pages`コマンドもこの勢いでいい感じにしてほし〜。
A Community Group for Web-interoperable JavaScript runtimes
- ブラウザ以外のJS実行環境の互換性を向上させよう委員会発足のお知らせ
- Node, Deno, CFW, ...etc
- 通称、Winter CGとのこと
- まずは最小公倍数としてのAPIを取り決めるところから
さすが御大やで!
Introducing Direct Uploads for Cloudflare Pages
- Cloudflare Pagesが、Gitリポジトリ連携以外でも使えるようになったよ
- `wrangler page publish`コマンドでもできるし
- これによって、CIからデプロイしたりもできる
- GUIからドラッグドロップもできる
- Netlifyみたいに手軽に使える
これはいい改善やと思うし、Netlify並に敷居下がった感あるやね。
A new era for Cloudflare Pages builds
- Cloudflare Pagesのビルドプロセスがアップデートされたよ
- ビルド自体の高速化
- 今まではびっくりするくらい遅かった(数ページの静的サイトが3分とか)けど、それが3秒くらいに
- ログがストリームで見れるようになった
- ビルド失敗して全部終わったことになってからエラー表示ではなく
- プレビュー対象のブランチが指定できるようになった
- CI skipができるように
- 以下のいずれかを含めたメッセージでコミットすればよい
- `[CISkip], [CI-Skip], [Skip CI], [Skip-CI] or [CF-Pages-Skip]`
- これからの改善予定
- インクリメンタルビルド(ご要望にお応えして)
- 実行環境のアップデート(2021のままでNodeとかも古いので)
- エラーメッセージの詳細化
自分で有効化しなくても速くなっていい感じ。個人的にはスキップできるのがうれしい。
Workers visibility: announcing Logpush for Worker’s Trace Events
Workers visibility: announcing Logpush for Worker’s Trace Events
- CFWの実行ログやメトリクスが、Logpushに連携されるように
- Logpushは、Cloudflareのサービスのひとつ
Service Bindings are generally available, with efficient pricing
Service Bindings are generally available, with efficient pricing
- Worker同士をシームレスに連携できるアレが待望のGA
- 通称、Service Bindings
- サービスとして登録したWorker間の通信はノーコスト
While the interface among Service bindings is HTTP, the networking is not. Unlike the typical microservice architecture, where services communicate over a network and can suffer from latency or interruption, Service bindings are a zero-cost abstraction. When one Worker invokes another, there is no network delay and the request is executed immediately.
https://developers.cloudflare.com/workers/platform/bindings/about-service-bindings
ついに待望のやつが来てくれました!
Announcing Workers for Platforms: making every application on the Internet more programmable
Announcing Workers for Platforms: making every application on the Internet more programmable
- 地味に説明が難しいやつ
- CFWのテックリード氏の説明がわかりやすいのでそれを
- https://twitter.com/KentonVarda/status/1524033314448891905
- SaaS事業者の抱える課題として、自分たちのAPI(webhookとか)を使ってほしい気持ちがある
- ただしそのためには、利用者がコードの実行環境を用意して、APIキーを管理して・・みたいな手間が必要
- これが地味に面倒で、敷居が高い(いやほんどに面倒よ)
- そこで、CFWと連携(間借りみたいな)すれば、コードだけアップロードすればいいようにできるよ
- もちろん利用者はCFWのあれこれを意識する必要はない
- 利用してみたい事業者はフォームから登録してね
どんどん便利な世の中になってほしいですね。
Durable Objects Alarms — a wake-up call for your applications
Durable Objects Alarms — a wake-up call for your applications
- DOにいわゆるアラーム機能が追加された
- DO内で`setAlarm(scheduledTime)`すると、その時がきたら`alarm()`ハンドラが呼ばれるようになる
- これによって、Workerから呼びにいかなくても、DOが抱える値にアクセスできるように
- DOの値を定期的に永続化するとか、集計してどっかに送るとか、レポートするとか
- Workerでは3つしか設定できないCron Triggersの代わりにもなるとのこと
The alarm() handler has guaranteed at-least-once execution and will be retried upon failure using exponential backoff, starting at 2 seconds delay for up to 6 retries.
https://developers.cloudflare.com/workers/runtime-apis/durable-objects/#alarm-handler-method
やはりこれを期にDO再入門するかな〜。
Introducing Cache Reserve: massively extending Cloudflare’s cache
Introducing Cache Reserve: massively extending Cloudflare’s cache
- Cache Reserveっていう機能が追加されて、ダッシュボードでONにするだけで使えるように
- オリジンとCDNエッジキャッシュの"間"に新たに配置されるキャッシュレイヤー
- そこで、自分でCache Reserveを置くことでそれを回避できる
- もちろんエッジにキャッシュがあればそれが返る
- Cache ReserveはR2の上に実装されてる
なるほどそういう需要もあるのだなあ。
A New Hope for Object Storage: R2 enters open beta
- S3互換のR2がついにオープンβに
- Workerからも呼べるし、署名付きURLによってRESTでも呼べる
- S3互換なので、世のS3向けクライアント実装でもURLを変えれば動く
- β中の制約としては、
- バケットごとに、1,000 GET/秒、100 PUT/秒の呼び出し制限
- 合計で約5TB、ファイルあたり5GBまでのサイズ制限
- 無料で使えるのは、
- 10GB/月
- 1,000,000/月(put, list, write, delete)
- 10,000,000/月(read)
- 今後の改善予定
- TTLのサポート(自動で消せる)
- パブリックにできる設定
- etc...
いやほんと全方位的やね・・・。
Announcing D1: our first SQL database
- SQLite for Workers!
- R2ときてD2ではなく、D1
- `wrangler d1 execute`でローカルからSQLも流せる
- WorkerからはBindingsとして登録して使う
- `MY_DB.get("SELECT * FROM products")`みたいに書く
- `MY_DB.exec(["UPDATE users SET ..."])`みたいにバッチも
- DBの本体としては1つだが、同期したREAD用のレプリカに対してアクセスするイメージらしい
- これ、つまりKVと一緒でラグありってこと・・?
- かと思えば、本体インスタンス横のWorkerに処理を委譲できる的なことも書いてあるし・・?
- 定期的にR2へスナップショットをバックアップしてくれる
- 1クリックで復元もできるので、本番データをローカルでデバッグするとかも容易い
- βの招待は6月にも
噂はあれど、整合性まわりの詳細がわからんとなんともなので、続報に期待。
Introducing Workers Analytics Engine
- Workersにメトリクスを取る機能が追加
- Bindingsとして`analytics_engine`を登録して使う
- それをWorkerから呼んで書き込み
- `MY_AE.writeDataPoint({ labels: ["Seattle", "USA", "pro_sensor_9000"], metrics: [25, 0.5] });`
- `labels: string`で`metrics: number`とのこと
- ちなみにこれはNon-blockingなので`waitUntil()`しなくていいらしい
- データの取得はSQLのAPIかGraphQLのAPIで
- ダッシュボードでもいい感じに見れるようにしていく
- パフォーマンスが特徴で
- データ反映までのレイテンシーが数秒
- クエリの実行も速い
クローズドβではあるけど、これは気になるやつ。
Introducing Pages Plugins
- CFPのFunctionsで使える公式ミドルウェアを公開したよって話
- 新しい機能が追加されたわけではない
- お作法に則って書かれたミドルウェアを公開すれば、誰でも簡単に使えるっていうだけ
- `npm`からインストールして自分で設定する
- 現時点での公式プラグインがいくつか
別に自分で書けば今までもできたことを、あえてこういう形で提供するように表現するあたり、Pagesの利用者層を拡大しようとしてる感じかな?
Introducing Custom Domains for Workers
- CFWに独自ドメインが貼れるようになったよ
- `/*`みたいなRouteを指定せずとも、まとめて受けられるように
- ドメインを気にして元リクエストを引き回してたりしてたのも不要に
- WorkerからWorkerを呼ぶのも問題なくできるように
- Service Bindingsを使わずとも
オープンβ!
Send email using Workers with MailChannels
- MailChannels社とパートナーシップを結んで、CFWからEメール送信できるようにしたよ
- `https://api.mailchannels.net/tx/v1/send`にJSONをPOSTするだけ
- 雑に送信APIを叩いても、SPAMと判断されたなら送信しないのでお気軽に使える
- しかもすべて無料
- 制約があるとすれば、CloudflareのIPからしか送信できないようにしてあること
- つまり実際のWorkerでしか送信できない
- ローカルからは送信できない
- より簡単に使うために、先日発表したPagesのプラグインにもラインナップしてあるよ
地味に嬉しいやつ。ただ、送信ログとかバウンスとかそういうの見たい場合はどうすればいいんやろう・・・?
Part 1: Rethinking Cache Purge, Fast and Scalable Global Cache Invalidation
Part 1: Rethinking Cache Purge, Fast and Scalable Global Cache Invalidation
- CDNのキャッシュ管理とそのパージについて
- 現状の構成では、中央のDCがコアとなり、世界中のDCに対してパージの司令を送るイメージ
- この構成を変更して、もっと速く効率よくキャッシュをパージできるようにしていきたい
- という進捗を定期的にお知らせしていくよ
- その名も、Corelessパージ
- 中央のDCがないということ
- 代わりに、WorkerとDOを使って、それぞれのDCでコアの代わりをする
自分たちのプロダクトを使い倒す姿勢、すごい良いなって思った。
Network performance update: Platform Week
- なんたらWeek恒例のパフォーマンス計測の記事
- 前回よりも計測対象のネットワークを増やしたり、指標のアップデートなどを行った
- Catchpointを使用
- 3000ネットワークでTCPコネクションの速さを計測
- インドとロシアはGoogle
- 欧米とアフリカではCloudflare
- 中国はCloudfront
- エッジランタイムのパフォーマンスを計測
- 対戦相手は例によってFastly Compute@Edge
- 基本的にCloudflareが速い
またFastlyからのアンサーソングが出るんかな?
まとめ
俺得だった発表TOP5はこんな感じ。
- Announcing D1: our first SQL database
- Service Bindings are generally available, with efficient pricing
- Introducing Workers Analytics Engine
- A new era for Cloudflare Pages builds
- A New Hope for Object Storage: R2 enters open beta
引き続きやっていき。