アプリケーションとクライアントのブラウザの間にあるのは何か?その答が"インターネット"である時、Cloudflareは、彼らのWorkersプラットフォームが役に立つことを願っている。同社は先日、180以上のエッジロケーションで利用可能な、分散形式で結果整合(eventualy-consistent)型のキーバリューストアであるWorker KVによって、自社のプラットフォームを拡張した。
Cloudflare Workersは、JavaScriptコードとWebAssemblyによるアプリケーションを、Cloudflareの広範なデータセンタ全体にデプロイすることを可能にする、サーバレスプラットフォームである。数千単位のインスタンスに拡張が可能で、ユーザのサイトへのHTTPリクエストをインタセプトする。インスタンスは5ミリ秒未満で起動し、最大50ミリ秒の実行が可能である。これまでは、Workerがデータを取得する必要のある場合、開発者はそれをWorkerのスクリプト自体に記載するか、あるいはCloudflareキャッシュからデータファイルをロードする必要があった。Cloudflareチームは 、Workersプラットフォームをローンチした直後に、顧客から、永続性データを保存するよい方法について相談を受けたことを明らかにしている。それこそが、Workers KVの起源なのだ。
Workers KVにはシンプルな読み込み/書き込みAPIがあり、HTTPおよびWorker内部から呼び出すことができる。値はテキスト、JSON、arrayBuffer、あるいはストリームとして取得される。サービスは高速読み取り用に設計されており、応答時間の中央値は12ミリ秒である。Workers KVに書き込まれるすべての値(2MBのサイズまで)は、保存中、転送中、およびディスク上で暗号化されている。Cloudflareは、ベータ期間中に一括読み込み用のエンドポイントを追加することで、書き込みエクスペリエンスを向上させた。Workers KVに書き込まれたキーは、Cloudflareネットワーク全体に自動的にレプリケーションされ、全体的な一貫性は60秒以内に完了する。ただし、グローバルにレプリケーションされるのは最も一般的なキーのみであり、Cloudflareのドキュメントにもあるように、読み取り頻度の低い値は一元的に保存されている。"サーバレス"サービスであるので、インフラストラクチャの運用が顧客に公開されることはなく、完全に管理されている。プロビジョニング、アップグレード、拡張、データ複製などは、すべてCloudflareによって処理される。
Workers KVのプロダクトマネージャは、このサービスに使用されている補助記憶装置やテクノロジについては意識的に公開しないようにしていたが 、サービス保証については事前に発表されていた。このサービスを発表したブログ記事では、CAP定理について簡単に説明した上で、設計上の決定について取り上げられていた。
Workers KVは、可用性とパーティションの許容範囲の保証を選択しています。この組み合わせは、結果整合性と呼ばれるもので、2つのユニークな競争上の優位性をWorkers KVに実現しています。
- 当社のキャッシング技術を活用することにより、読み取りは極めて高速(中央値12ミリ秒)です。
- データは175以上のエッジデータセンタにまたがって利用可能で、リージョン単位の機能停止に対して回復力を持ちます。
ただし、結果整合性にはトレードオフがあります。2つのクライアントが同じキーで異なる値を同時に書き込んだ場合、最後に書き込んだクライアントが最終的に"勝利"して、その値がグローバルに一貫性のあるものになるのです。
これらを考慮した場合、どのようなユースケースが推奨されるだろうか?Cloudflareでは、顧客が過去に構築したものに基づいて、いくつかの例を紹介している。
- 一括リダイレクト — 数十億のHTTPリダイレクトの処理
- ユーザ認証 — APIに対するユーザ要求の検証。
- 翻訳キー — Webページの動的なローカライズ。
- 設定データ — オリジンへのアクセス権の管理。
- ステップ関数 — 複数のAPI関数間での状態データの同期。
- エッジファイルストア — 大量の小さなファイルをホスト。
2018年9月のサービス発表時、Cloudflareは、WorkersとWorkers KVについて、Amazon API Gatewayなどに比較して大幅に安価な、高性能API Gatewayとして提供することも同時に示唆していた。同じ記事では、その他のユースケースとして、再デプロイメントを伴わないWorkerの動作変更、A/Bテスト、さらにはeコマースサイトにおけるショッピングカートデータの保存などを挙げている。
Workers KVは現在、公開価格での一般利用が可能である。すでに5ドルのWorkersサブスクリプションを持っている場合は、1GBのストレージ、1000万回の読み取り、100万回の書き込みなど、いくつかの方法でWorkers KVを使用することができる。これらの量を越えて使用する場合のコストは、ストレージでは1か月GBあたり0.50ドル、100万回の読み取りで0.50ドル、100万回の書き込みで5ドルとなっている。キーと値のペアのコンテナはネームスペースと呼ばれており、開発者は最大20のネームスペースを作成して、それぞれに数十億のキーと値のペアを格納することが可能である。ユーザは、キー単位で1秒間に回数無制限の読み取りと、最大1回の書き込みを実行することができる。
この新しいサーバーレスキーバリューストアは、"開発者に対して、サーバ、クライアント、インターネットの役割分担という面で、ソフトウェア構築に関する新たな考え方を提案する"ものだ、とCloudflareは述べている。