Cloudflare Workers KVとUpstash Redis徹底比較:料金・レイテンシ・機能の違いを解説
はじめに
Cloudflare Workersを使っているなら、データの保存先としてはUpstash Global RedisとWorkers KVが最有力候補になるでしょう。本記事では、Cloudflare Workersの関数向けデータストアとして、両者を機能・料金・パフォーマンスなどの観点から簡潔に比較します。
機能セット(API)
Workers KVは、有効期限(TTL)指定に対応したシンプルなキーバリューストアAPIを提供します。
put(key, value, {expiration: secondsSinceEpoch})
get(key)
delete(key)
list({prefix?: string, limit?: number, cursor?: string})
一方のUpstash Redisは、Strings・Sets・Lists・Hashes・Sorted Setsなど、はるかに豊富なデータ型とAPIを備えています。詳細はUpstashの公式APIドキュメントをご確認ください。
料金
Upstash Global Redis
- 読み取り:10万リクエストあたり0.4ドル
- 書き込み:10万リクエストあたり2ドル
- ストレージ:0.25ドル/GB・月
Cloudflare Workers KV
- 読み取り:100万リクエストあたり0.5ドル
- 書き込み:100万リクエストあたり5ドル
- ストレージ:0.50ドル/GB・月
※両サービスで課金単位が異なる(10万リクエスト vs 100万リクエスト)ため、想定するアクセス規模に合わせて実際のコストを試算してから選定することをおすすめします。
ポータビリティ(移植性)
UpstashはRedisプロトコルと互換性があるため、自分のノートPCを含め、Redisを動かせる環境であればどこへでもデータを簡単に移行できます。
その一方で、Workers KVはCloudflare Workers上でしか利用できません。
読み取りレイテンシ
Upstash Globalはデータを5つのリージョン(バージニア北部、オレゴン、フランクフルト、シンガポール、サンパウロ)に分散配置しており、クライアントの所在地に応じて読み取りレイテンシは10〜80ミリ秒程度になります。
主な地域ごとの読み取りレイテンシは以下のとおりです。
- アメリカ:10〜20ミリ秒
- ドイツ:10〜20ミリ秒
- ブラジル:10〜20ミリ秒
- イギリス:20〜30ミリ秒
- スペイン:30〜40ミリ秒
- インド:50〜60ミリ秒
- 南アフリカ:100〜200ミリ秒
Workers KVでは、アクセス頻度の低い値は中央のストレージに保持され、よく読まれる値はすべてのCloudflareデータセンターにキャッシュされます。初回読み取りのレイテンシは高め(200ミリ秒以上)ですが、2回目以降は10〜30ミリ秒程度に収まります。多数のPoP(Point of Presence)を擁するため、Workers KVは世界中のどこからアクセしてもほぼ均一な読み取りレイテンシを実現できるのが大きな特徴です。
クライアントがUpstashの5リージョンの近くにあれば、UpstashもWorkers KVと遜色ない読み取りレイテンシを発揮します。これは筆者にとって意外な結果でした。CloudflareがWorkersとKVを同じデータセンターで運用しているなら、Workers KVのほうが格段に速いはずだと考えていたからです。より詳細なベンチマークは別記事として公開する予定です。
逆に、南アフリカのようにUpstashリージョンから離れた地域のクライアントに対しては、Cloudflare Workers KVのほうが優れた読み取りレイテンシを示します。
整合性(Consistency)
Workers KVとUpstash Global Redisは、どちらも結果整合的(eventually consistent)なモデルを採用しています。つまり、クライアントは最終的に最新の値を取得できますが、特定の時点ですべてのクライアントが同じ値、あるいは最新の値を読んでいることは保証されません。
グローバルに分散しつつ強い整合性を求める場合は、Google Cloud Spanner、CockroachDB、Faunaなどの検討をおすすめします。
書き込みレイテンシ
Upstashは更新内容を即座に各リージョンへ複製し、すべてのリージョンへの反映は300〜500ミリ秒で完了します。一方、Cloudflareの場合は更新が他のすべてのデータセンターへ伝播するまで最大60秒かかることがあります。
書き込みスループット
Cloudflare Workers KVには「同一キーへの書き込みは毎秒1回まで」というハードリミットがあります。Upstash Redisにはこうした制限がなく、契約プランの容量(Pay-as-you-go、Enterpriseなど)に応じて、毎秒数千件の書き込みコマンドを実行できます。
この毎秒1書き込みの制限により、Workers KVは読み取り専用、あるいは読み取り中心のユースケースに向いたストアといえます。
まとめ
豊富なデータ型・Redis互換性・高い書き込みスループットが必要ならUpstash Redis、世界中どこでも均一な読み取り性能が求められる読み取り中心の用途ならWorkers KVが適しています。ユースケースに合わせて最適な方を選びましょう。
関連リンク
- How Workers KV Works(Workers KVの仕組み)
- Workers KV Runtime APIs(Workers KVランタイムAPI)
- Upstash Global Database(Upstashグローバルデータベース)
-
Cloudflare WorkersとUpstash Redisで作る、Webサイト独自の待合室(Waiting Room)
この記事では、Cloudflare WorkersとUpstash Redisを組み合わせて、Webサイト向けの待合室(Waiting Room)ページを実装する方法を解説します。 なぜ待合室が必要なのか? Webサイトへの訪問者数が増えるのは本来喜ばしいことですが、必ずしもそうとは限りません。突発的な大量トラフィックはアプリケーションを容易に圧倒し、最悪の場合、サービス全体が停止してしまうこともあります。待合室は、トラフィック急増時にアクセスを制御し、リソースを保護するための有効なソリューションです。 Cloudflareには公式の「Waiting Room」機能がありますが、残念ながらBu
-
Cloudflare WorkersとRedisで実現するエッジコンピューティング活用術
エッジコンピューティングは、近年もっとも注目されている技術のひとつです。CDNがファイルをユーザーの近くに配置できるようにしたのと同じように、エッジコンピューティングはアプリケーションそのものをユーザーの近くで実行できるようにします。これにより、開発者はグローバルに分散され、高いパフォーマンスを発揮するアプリケーションを構築できるようになります。 Cloudflare Workersとステートレス性の課題 現在この分野をリードしている製品がCloudflare Workersです。コールドスタートのないサーバーレス実行環境を提供し、Cloudflareのグローバルネットワークを活かすことで、ア