Mencoba Cloudflare Workers KV data store — Pengganti Redis di Ekosistem Cloudflare

Armedi
Hyperjump Tech
Published in
4 min readDec 21, 2020

Pertengahan November lalu, Cloudflare mengumumkan free tier untuk lini produk Workers KV mereka. Workers KV ini adalah key-value store yang highly distributed dan merupakan pelengkap bagi layanan Cloudflare Workers yang sudah ada terlebih dahulu. Sebagai key-value database, Workers KV ini serupa dengan Redis, namun dengan kemampuan query yang lebih sederhana.

Ada dua keunggulan unik yang ditawarkan oleh Workers KV:

  1. Kecepatan akses yang sangat tinggi (median 12ms) karena didukung oleh teknologi caching dari Cloudflare yang kemampuannya tentu sudah tidak diragukan lagi dalam hal ini.
  2. Ketersediaan data dari seluruh 200 lokasi data center sehingga tahan terhadap terjadinya outage regional.

Tapi yang perlu juga menjadi pertimbangan adalah Workers KV ini mengadopsi model Eventual Consistency. Propagasi perubahan data ke seluruh node di jaringan Cloudflare bisa membutuhkan waktu hingga 60 detik. Jika aplikasi yang kamu buat tidak bermasalah dengan model ini karena datanya jarang berubah tapi sering diakses maka Workers KV bisa menjadi solusi yang optimal.

Beberapa contoh use case yang disebutkan oleh Cloudflare antara lain:

  • Menangani miliaran http redirect.
  • Menyimpan data konfigurasi.
  • Sebagai penyimpanan file dalam skala besar.
  • API Gateway dan Access Tokens.
Sumber: https://blog.cloudflare.com/building-with-workers-kv/

Free tier yang diberikan tersedia dengan limit yang cukup untuk sekedar mencoba-coba atau untuk proyek sederhana dengan traffic yang tidak tinggi.

Limit Workers KV free tier

Beberapa waktu lalu saya sudah sempat mencoba menggunakan Cloudflare Workers sebagai backend untuk sebuah url-shortener, tapi waktu itu Fauna lah yang dipilih sebagai database-nya. Dan sekarang mari kita buat implementasi menggunakan Workers KV.

Prerequisites

Sebelum memulai ada beberapa hal yang perlu dipersiapkan terlebih dahulu

  1. Tentunya kamu perlu memiliki akun Cloudflare, kemudian tambahkan domain yang kamu miliki melalui dashboardnya. [Baca lebih lanjut].
  2. Install Wrangler CLI tool

Workers KV Setup

Jika kamu belum familiar dalam menggunakan Cloudflare Workers, silakan ikuti tutorialnya terlebih dahulu di sini atau di artikel saya yang lain di sini.

Pertama jalankan command berikut ini untuk membuat namespace baru

$ wrangler kv:namespace create "REDIRECTS"🌀  Creating namespace with title "REDIRECTS"
✨ Success!
Add the following to your configuration file in your kv_namespaces array:
{ binding = "REDIRECTS", id = "da11bf9b9c6244d3baa88bceb0a6e1ff" }

Lalu tambahkan konfigurasi untuk key kv_namespaces pada file wrangler.toml sesuai dengan value output dari command diatas seperti berikut:

...kv_namespaces = [
{ binding = "REDIRECTS", id = "da11bf9b9c6244d3baa88bceb0a6e1ff" }
]

Dalam namespace inilah kamu akan menyimpan data sebagai pasangan key-value. Pada contoh di atas saya membuat namespace dengan nama “REDIRECTS”.

Selain melalui command line interface, KV namespaces juga bisa dikelola melalui web dashboard. Buka tab Workers, lalu klik tombol “Manage KV namespaces”

Cloudflare web dashboard

Workers KV API

Selanjutnya kita akan menyimpan dan mengakses data dari Workers KV.

Namespace yang tadi telah dikonfigurasi pada file wrangler.toml akan tersedia sebagai variabel global. Pada contoh ini, tadi kita telah mengkonfigurasi namespace dengan nama REDIRECTS.

Untuk menyimpan data, gunakan method put yang menerima key dan value sebagai inputnya.

await REDIRECTS.put('/hyperjump', JSON.stringify({ from: '/hyperjump', to: 'https://hyperjump.tech/' })

Disini saya menggunakan JSON string sebagai value, tapi selain itu kamu juga bisa menyimpan value dengan tipe data ReadableStream dan ArrayBuffer. Batas maksimum ukuran data yang diizinkan untuk masing-masing value adalah sebesar 25MB, lebih dari cukup untuk kebutuhan-kebutuhan penyimpanan data yang umum.

Data yang tersimpan dilihat di Cloudflare web dashboard

Kemudian untuk mengakses data, gunakan method get dengan key yang ingin di-retrieve beserta tipe datanya (text, json, arrayBuffer, ataustream).

const value = await REDIRECTS.get('hyperjump', 'json')

Mudah sekali bukan? Jika kamu tertarik untuk melihat lebih lanjut project lengkapnya, silakan akses repository ini

Hyperjump is an open-source-first company providing engineering excellence service. We aim to build and commercialize open-source tools to help companies streamline, simplify, and secure the most important aspects of its modern DevOps practices.

--

--