API untuk Memeriksa Jumlah Tayangan Velog (Beta)
(github.com/day1swhan)Latar belakang pengembangan dan ide implementasi
- Saya penasaran dengan jumlah tayangan postingan yang saya tulis di Velog, tetapi merepotkan jika harus login setiap kali untuk memeriksanya
- Bisa saja melakukan reverse engineering pada API tayangan internal Velog, tetapi terasa merepotkan dan kurang fleksibel untuk dikembangkan lebih lanjut (mis. notifikasi pengunjung)
- Saya teringat layanan email lokal di masa lalu yang menyediakan fitur konfirmasi baca dengan memanfaatkan gambar piksel
- Velog mendukung penulisan postingan menggunakan sintaks Markdown
- Browser tidak memblokir pemanggilan gambar sederhana meskipun berasal dari domain cross-site
- Jika menyisipkan gambar transparan 1x1 piksel ke dalam postingan, server dapat menyimpan log panggilan setiap kali postingan tersebut dibuka
- Sebagian besar postingan pengguna Velog tidak mendapat lebih dari 1.000 pengunjung per hari. Untuk trafik sebesar ini, Workers KV sudah cukup memadai
- Ini tidak terbatas pada Velog saja; dapat digunakan di platform mana pun yang mendukung penyisipan gambar dengan sintaks Markdown (dan memungkinkan penyajian gambar dari domain pengguna)
Cara kerja
- Setelah memberikan nilai identifikasi (slug) pada gambar, respons disajikan melalui Workers yang dapat diprogram alih-alih CDN, lalu riwayat panggilan disimpan dengan menggunakan nilai identifikasi sebagai
Key prefixdi KV; dengan cara ini, page view bisa dihitung dengan sederhana - Jika tanggal, ip, userAgent, dan nilai identifikasi gambar dijadikan nilai key menggunakan fungsi
Hash, maka penanganan minimum untuk kunjungan duplikat dapat dilakukan- HASH: Hash 128-bit berbasis SHA-256 yang dienkode ke base64url (22 karakter).
- KEY:
view:${slug}:${hash}. - VALUE: UserAgent, Date...
- Paket gratis Workers KV mendukung 1.000 PUT dan LIST per hari.
- PUT: Dapat menyimpan informasi penghitungan pengunjung hingga 1.000 per hari
- LIST: Dapat menyediakan informasi page view sebanyak lebih dari 1.000 per hari
- Permintaan untuk melihat page view menggunakan perintah LIST; cukup ambil data dengan memakai informasi nilai identifikasi (slug) sebagai
prefix, lalu hitung jumlahnya secara sederhana- Karena pengambilan page view tidak terlalu membutuhkan real-time, dengan melakukan caching respons secara tepat, permintaan lebih dari 1.000 per hari pun bisa ditangani
Keterbatasan
Karena demi pengembangan cepat digunakan KV yang merupakan penyimpanan sederhana, ada beberapa keterbatasan berikut.
- Eventual consistency: Permintaan PUT ke Workers KV tidak bersifat real-time. Jika benar-benar membutuhkan real-time, harus menggunakan Durable Objects(DO).
- Ketergantungan pada LIST: Metode penghitungan yang menggunakan perintah LIST akan makin lambat seiring waktu karena jumlah KEY yang harus diambil terus bertambah (dengan asumsi page view terus masuk). Perlu mempertimbangkan pembaruan struktur penyimpanan secara berkala melalui pekerjaan Cron, atau penggunaan DO maupun Analytics Engine.
Dukungan yang direncanakan
Sebisa mungkin dalam waktu dekat, fitur-fitur berikut akan ditambahkan.
- Pengurutan berdasarkan tanggal: Dengan memanfaatkan Unix Time, metode yang digunakan untuk mengurutkan komentar terbaru di Membuat API komentar blog serverless dalam 30 menit, daftar yang diurutkan berdasarkan sesi terbaru dapat disediakan
- Keamanan API: Akan didukung melalui penambahan middleware. Rencananya menggunakan header HTTP Authorization
- Rate Limit: Jika pengguna Velog sangat populer, pengguna yang dibutakan oleh rasa iri mungkin bisa mengirim permintaan berbahaya, jadi perlu langkah antisipasi. Mungkin akan ditambahkan paling akhir karena tampaknya saya sendiri bukan termasuk kasus itu...
- Pencarian: Akan didukung melalui penambahan API
- Tanggal: Fitur pencarian berdasarkan tanggal tertentu atau rentang tanggal. Perlu perubahan struktur KEY
- Sesi: Fitur pencarian informasi aktivitas sesi tertentu. Saat ini informasi sesi berlaku selama satu hari untuk setiap postingan. Perlu meninjau kebijakan perlindungan data pribadi
- Browser/OS: Akan disediakan berdasarkan informasi yang diparsing dari UserAgent. Mungkin tidak terlalu presisi, tetapi cukup untuk mendapatkan gambaran umum
- API layanan: API akan disediakan dalam bentuk layanan agar siapa pun bisa menggunakannya dengan mudah melalui verifikasi email + penerbitan private key
- Webhook: Menyediakan permintaan POST saat event page view terjadi. Notifikasi menjadi memungkinkan melalui Slack yang disukai para developer
- Email: Fitur notifikasi yang klasik tetapi praktis untuk pengguna yang malas menangani webhook
- Custom campaign: Menyediakan nilai identifikasi gambar (slug) terintegrasi untuk event yang dikonfigurasi (mis. mencapai jumlah tayangan tertentu)
Tambahan
- Bagi yang tertarik dengan cara kerja internalnya, silakan lihat Catatan pengembangan API pemeriksa jumlah tayangan Velog yang dimulai dari piksel 1x1.
- Cara instalasi dan deployment, referensi API terperinci, serta seluruh kode dapat dilihat di repositori Github.
Belum ada komentar.