Membangun REST API dengan Edge Computing: Panduan Menggunakan Hono, Drizzle, dan Cloudflare Workers untuk Developer Indonesia
Pelajari cara membangun REST API berperforma tinggi dengan memanfaatkan edge computing menggunakan Hono, Drizzle ORM, dan Cloudflare Workers. Panduan praktis untuk developer Indonesia yang ingin mengurangi latensi dan biaya server.
Kenapa Edge Computing Penting untuk Developer Indonesia?
Kamu pasti pernah mengalami lag saat mengakses aplikasi web yang servernya di Amerika atau Eropa. Buat pengguna Indonesia, jarak fisik ke server utama sering bikin waktu respon jadi lambat. Di sinilah edge computing jadi solusi: dengan menjalankan kode di server yang tersebar di banyak lokasi (edge), data bisa diproses lebih dekat ke pengguna. Bayangkan API-mu merespon dalam puluhan milidetik, bukan ratusan.
Untuk developer Indonesia, edge computing bukan cuma soal kecepatan, tapi juga efisiensi biaya. Cloudflare Workers, misalnya, menawarkan eksekusi serverless dengan harga yang sangat terjangkau, bahkan ada free tier yang cukup buat proyek skala kecil. Kombinasi Hono (framework web minimalis) dan Drizzle ORM (type-safe dan ringan) membuat pengembangan API di edge jadi makin praktis.
Dalam artikel ini, kita akan membangun REST API sederhana untuk mengambil dan menyimpan data artikel—mirip seperti yang kamu butuh buat blog atau portofolio. Kita pakai Cloudflare Workers sebagai runtime, Hono sebagai framework, dan Drizzle untuk berinteraksi dengan database (misalnya PlanetScale atau Neon, yang kompatibel dengan Drizzle).
Persiapan Awal: Tools dan Akun
Sebelum mulai coding, pastikan kamu punya:
- Node.js versi 18 atau lebih baru (gunakan LTS).
- Akun Cloudflare (daftar gratis di cloudflare.com).
- Wrangler CLI:
npm install -g wrangler. - Database: Untuk tutorial ini kita asumsikan pakai Neon (PostgreSQL) dengan koneksi SSL. Dukung Drizzle secara native.
Setelah itu, login ke Wrangler: wrangler login. Ini akan membuka browser untuk otentikasi.
Setup Proyek dengan Hono dan Wrangler
Buat proyek baru:
mkdir edge-api-hono-drizzle
cd edge-api-hono-drizzle
wrangler init
Pilih "yes" untuk TypeScript, lalu pilih opsi default. Setelah itu, install dependencies:
npm install hono drizzle-orm @cloudflare/workers-types
npm install -D drizzle-kit
Buat file src/index.ts sebagai entry point:
import { Hono } from 'hono'
import { cors } from 'hono/cors'
const app = new Hono()
app.use('/*', cors())
app.get('/', (c) => c.text('Edge API with Hono and Drizzle!'))
export default app
Update wrangler.toml dengan binding database (nantinya):
name = "edge-api-hono-drizzle"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[[d1_databases]]
binding = "DB"
database_name = "my-articles-db"
database_id = "your-database-id"
Untuk sementara, kita akan gunakan D1 (SQLite) atau Neon? D1 lebih native di Cloudflare, tapi Drizzle juga support. Kita gunakan D1 agar lebih sederhana. Buat database D1: wrangler d1 create my-articles-db. Copy database ID ke wrangler.toml.
Mendefinisikan Skema dengan Drizzle
Buat folder db dan file schema.ts:
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'
export const articles = sqliteTable('articles', {
id: integer('id').primaryKey({ autoIncrement: true }),
title: text('title').notNull(),
content: text('content').notNull(),
created_at: text('created_at').default('CURRENT_TIMESTAMP'),
})
Generate migration:
npx drizzle-kit generate --schema db/schema.ts --out migrations
Terapkan migrasi ke database D1:
wrangler d1 execute my-articles-db --file=./migrations/xxxxx_create_articles_table.sql
Routing API dengan Hono
Sekarang kita buat endpoint CRUD. Update src/index.ts:
import { Hono } from 'hono'
import { drizzle } from 'drizzle-orm/d1'
import { articles } from '../db/schema'
import { eq } from 'drizzle-orm'
type Bindings = {
DB: D1Database
}
const app = new Hono<{ Bindings: Bindings }>()
// Create article
app.post('/articles', async (c) => {
const db = drizzle(c.env.DB)
const { title, content } = await c.req.json()
const result = await db.insert(articles).values({ title, content }).returning()
return c.json(result[0], 201)
})
// Read all articles
app.get('/articles', async (c) => {
const db = drizzle(c.env.DB)
const allArticles = await db.select().from(articles).all()
return c.json(allArticles)
})
// Read single article
app.get('/articles/:id', async (c) => {
const db = drizzle(c.env.DB)
const id = Number(c.req.param('id'))
const article = await db.select().from(articles).where(eq(articles.id, id)).get()
if (!article) return c.json({ error: 'Not found' }, 404)
return c.json(article)
})
// Update article
app.put('/articles/:id', async (c) => {
const db = drizzle(c.env.DB)
const id = Number(c.req.param('id'))
const { title, content } = await c.req.json()
const result = await db.update(articles).set({ title, content }).where(eq(articles.id, id)).returning()
if (result.length === 0) return c.json({ error: 'Not found' }, 404)
return c.json(result[0])
})
// Delete article
app.delete('/articles/:id', async (c) => {
const db = drizzle(c.env.DB)
const id = Number(c.req.param('id'))
await db.delete(articles).where(eq(articles.id, id)).run()
return c.json({ message: 'Deleted' })
})
export default app
Testing Lokal dan Deploy
Jalankan server lokal dengan:
wrangler dev --remote
Uji endpoint menggunakan curl atau Postman. Misalnya:
curl -X POST https://your-worker.dev/articles -H 'Content-Type: application/json' -d '{"title":"Belajar Edge Computing","content":"Panduan lengkap..."}'
Jika semua berjalan, deploy ke Cloudflare:
wrangler publish
Voila! API-mu sekarang berjalan di edge, siap melayani pengguna dari server terdekat.
Mengoptimalkan Performa dan Biaya
- Gunakan caching: dengan middleware Hono seperti
cache, kamu bisa cache respon untuk endpoint GET. - Batasi ukuran payload: edge functions punya batas memori (128 MB default), jadi pastikan respon tidak terlalu besar.
- Pilih database yang tepat: D1 cocok untuk read-heavy, Neon untuk write-heavy. Pertimbangkan kebutuhanmu.
- Manfaatkan free tier: Cloudflare Workers memberikan 100.000 permintaan per hari gratis. Ini cukup buat prototipe atau aplikasi personal.
Kesimpulan
Edge computing bukan lagi konsep futuristik—dengan tools seperti Hono, Drizzle, dan Cloudflare Workers, developer Indonesia bisa membangun API cepat dan murah. Mulailah dengan proyek kecil, eksplorasi, dan rasakan sendiri perbedaan latensi. Selamat mencoba!