cdnjs Sekarang Menggunakan Cloudflare Workers

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Cloudflare Workers Logo
Cloudflare Workers – Serverless platform dari Cloudflare (Credit gambar: Cloudflare)

TeknoCerdas.com – Salam cerdas untuk kita semua. cdnjs adalah salah satu penyedia Content Delivery Network (CDN) popular untuk Javascript. cdnjs berisi pustaka Javascript populer seperti jQuery, Vue, React dan lain-lain yang disediakan lewat jaringan Cloudflare. Pada 10 September lewat blog resminya Cloudflare mengumumkan mereka memindahkan cdnjs ke Cloudflare Workers.

Awalnya rencana memindahkan dikarenakan insiden pada salah satu data center Cloudflare yang menyimpan cdnjs. Untungnya beberapa file sudah berada pada global cache Cloudflare yang sudah tersebar ke berbagai edge location atau lokasi terdekat dari pengguna. Sehingga efek dari insiden tersebut minimal.

Developer cdnjs berpikir untuk menggunakan Cloudflare Workers sebuah layanan serverless yang dapat dideploy ke edge location. Mereka juga memanfaatkan Workers KV yang mana adalah sebuah penyimpanan distributed key-value yang dioptimasi untuk aplikasi dengan intensitas baca tinggi.

cdnjs cloudflare sebelum Cloudflare Workers
Arsitektur cdnjs Cloudflare sebelum menggunakan Cloudflare Workers
cdnjs cloudflare setelah Cloudflare Workers
Arsitektur cdnjs Cloudflare setelah menggunakan Cloudflare Workers

Alasan lain kenapa menggunakan Cloudflare Workers selain karena adanya insiden seperti disebutkan sebelumnya adalah untuk memudahkan developer dalam berkontribusi pada GitHub cdnjs. Sebelumnya jika ingin berkontribusi maka developer harus melakukan clone repository cdnjs/cdnjs yang berukuran 300GB. Tidak semua developer punya kesabaran dan waktu untuk melakukan clone repo sebesar itu.

Untuk itu diciptakan repository baru bernama cdnjs/packages dimana repo ini hanya berisi JSON file yang dapat diedit oleh para developer jika ingin berkontribusi ke cdnjs.

Selanjutnya ada bot khusus yang akan melakukan pengecekan terhadap JSON yang ada pada repository tersebut kemudian maintainer melakukan persetujuan. Bot kemudian melakukan push versi yang sudah dikecilkan dengan Brotli atau gzip ke Cloudflare Workers KV.

Cloudflare Workers akan melakukan cek pada ETag atau Last-Modified header dari versi file yang diminta ke Workers KV. Jika versi tersebut belum tersedia maka Workers akan melakukan request ke origin server GitHub. Terakhir tentu saja file tersebut akan disimpan oleh Cloudflare global cache agar dapat diakses lebih cepat oleh pengguna.