Cloudflare WorkersKV 夢あって、個人サービスに導入してみたので感想
uploader.xzy.pw
TOC
Cloudflare WorkersKV について
Cloudflare WorkersKV の説明の前に、Cloudflare Worker の説明を。
Cloudflare の色んなとこにあるエッジでコードを実行することで、よりユーザーに近いとこで低レイテンシでコンテンツを提供できる。
この色んなとこにあるエッジを生かして、Key-Value Store を提供したのが Cloudflare WorkersKV
Workers KV is a global, low-latency, key-value data store. It supports exceptionally high read volumes with low-latency, making it possible to build highly dynamic APIs and websites which respond as quickly as a cached static file would.
これだけみると、キャッシュ用途としても使えそうなイキフンがある。
料金
月 $5 からで下記が含まれる。
1 GB of Worker KV storage
10 million Worker KV reads per month
1 million Worker KV writes per month
1 million Worker KV deletes per month
1 million Worker KV list operations per month
超過すると
$0.50 per GB of additional Worker KV storage per month
$0.50 per million additional Worker KV reads
$5.00 per million additional Worker KV writes
$5.00 per million additional Worker KV deletes
$5.00 per million additional Worker KV list operations
始め方
これで、KVS(Namespace) が作られる。ID をメモっておく。
他にも、API と、Organization ID が必要。
公式 SDK で WorkersKV の操作
// client api, err := cloudflare.New(os.Getenv("CF_API"), os.Getenv("CF_EMAIL"), cloudflare.UsingOrganization(os.Getenv("CF_ORG_ID"))) // write api.WriteWorkersKV(context.Background(), NamespaceID, key, []byte("value")) // read api.ReadWorkersKV(context.Background(), NamespaceID, key)
memcache と同じでシンプルな KVS なので、Redis にあるような INCR とかはない。
ベンチマーク
コードはここから確認してください。不備があったら教えてください。
github.com
BenchmarkWriteKV-16 3 420761100 ns/op 58597 B/op 125 allocs/op BenchmarkReadKV-16 5 362196140 ns/op 12107 B/op 102 allocs/op BenchmarkWriteKV_Parallel160-16 5 1077852620 ns/op 94801 B/op 722 allocs/op BenchmarkReadKV_Parallel160-16 5 247583660 ns/op 14038 B/op 143 allocs/op
逐次書き込み:0.4s/op
逐次読み込み:0.4s/op
並列書き込み:1.1s/op
並列読み込み:0.25s/op
同じネットワーク内にある KVS に比べたらもちろん全体的に遅い。
並列にしたときの書き込みが 1.1s/op が気になる。
並列がどれぐらい許容できるのか分からんので、コードを弄ってテストしてみてください。
Ah… damn, I've just seen the cloudflare workerskv write limit of 1 per second…. shit 🙁
— StopForumSpam (@StopForumSpam) 2019年6月4日
この人も同じことを言っているので決してクライアントのネットワークが悪いとかではなさそう。
本番で Cloudflare WorkersKV を使うのはやめたほうが良いかもしれない
最初に紹介した個人サービスで Cloudflare WorkersKV を導入したけど、困っていることがある。
uploader.xzy.pw
本番で使ってもいい?
良いよ!(支離滅裂)