Deploy Full-Stack App dengan Cloudflare Workers dan D1 Database
Taufiq M
Taufiq M

Dipublikasikan 27 Mei 2026

Deploy Full-Stack App dengan Cloudflare Workers dan D1 Database

Cloudflare Workers telah berevolusi dari sekadar platform edge function menjadi solusi full-stack yang lengkap. Dengan adanya D1, database SQLite yang dioptimalkan untuk edge, dan framework Flagship yang baru dirilis, developer kini bisa membangun dan deploy aplikasi complete tanpa harus mengelola infrastruktur server sama sekali. Tutorial ini akan membahas cara membangun REST API dengan autentikasi menggunakan Workers dan D1.

Referensi utama berasal dari dokumentasi Cloudflare Workers dan Cloudflare D1 Documentation.

Langkah 1: Setup Project dengan Wrangler CLI

Wrangler adalah command-line tool resmi dari Cloudflare untuk mengelola project Workers. Install melalui npm dan inisialisasi project baru:

npm create cloudflare@latest my-api -- --template hono
 cd my-api
 npm install
 npx wrangler login

Kita menggunakan template Hono karena framework ini ringan, cepat, dan memiliki DX yang excellent untuk API development. Setelah login, Wrangler akan menyimpan credential di ~/.config/.wrangler/.

Langkah 2: Inisialisasi D1 Database

Buat database D1 baru melalui CLI. D1 menggunakan SQLite di belakang layar, sehingga query yang familiar akan langsung bisa digunakan:

npx wrangler d1 create my-api-db
npx wrangler d1 execute my-api-db --local --file=./schema.sql

Buat file schema.sql dengan struktur tabel sederhana untuk sistem todo:

CREATE TABLE IF NOT EXISTS todos (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  title TEXT NOT NULL,
  completed INTEGER DEFAULT 0,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Tambahkan binding D1 ke wrangler.toml:

[[d1_databases]]
binding = "DB"
database_name = "my-api-db"
database_id = "your-database-id-here"

Langkah 3: Membuat API Endpoint dengan Hono

Edit src/index.ts untuk membuat routing CRUD. Hono menyediakan middleware dan routing yang intuitive:

import { Hono } from hono
import { bearerAuth } from hono/bearer-auth

export interface Env {
  DB: D1Database
}

const app = new Hono()
const token = supersecrettoken123

app.use('/api/*', bearerAuth({ token }))

app.get('/api/todos', async (c) => {
  const { results } = await c.env.DB.prepare('SELECT * FROM todos ORDER BY created_at DESC').all()
  return c.json(results)
})

app.post('/api/todos', async (c) => {
  const { title } = await c.req.json()
  const result = await c.env.DB.prepare('INSERT INTO todos (title) VALUES (?) RETURNING *').bind(title).first()
  return c.json(result, 201)
})

app.patch('/api/todos/:id', async (c) => {
  const id = c.req.param('id')
  const { completed } = await c.req.json()
  await c.env.DB.prepare('UPDATE todos SET completed = ? WHERE id = ?').bind(completed ? 1 : 0, id).run()
  return c.json({ success: true })
})

export default app

Langkah 4: Local Development dengan Wrangler

Salah satu kelebihan Cloudflare ecosystem adalah kemampuan untuk menjalankan environment production secara lokal. Jalankan perintah development Wrangler untuk testing local. Endpoint akan tersedia di URL local yang ditampilkan di terminal. Untuk menguji API, gunakan HTTP client dengan bearer token. Contoh request menggunakan fetch:

fetch('/api/todos', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer supersecrettoken123',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ title: 'Deploy ke Cloudflare' })
})

Langkah 5: Deploy ke Cloudflare Edge Network

Deploy hanya membutuhkan satu perintah. Wrangler akan secara otomatis membaca konfigurasi dari wrangler.toml dan mengunggah worker ke 300+ data center Cloudflare:

npx wrangler deploy

Setelah deploy berhasil, Wrangler akan menampilkan URL production. Endpoint API kini tersebar di edge network global dengan latency di bawah 50ms untuk pengguna di Asia Tenggara. Untuk custom domain, tambahkan konfigurasi routes di wrangler.toml atau setup melalui dashboard Cloudflare.

Langkah 6: Monitoring dan Analytics

Cloudflare menyediakan analytics bawaan untuk setiap worker. Akses melalui dashboard untuk melihat metrik seperti request count, error rate, CPU time, dan memory usage. Untuk logging real-time, gunakan fitur logs streaming di dashboard. Integrasi dengan external observability tools seperti Sentry juga didukung melalui middleware. Dengan arsitektur edge ini, aplikasi kamu otomatis scalable tanpa perlu konfigurasi tambahan. Pelajari lebih lanjut tentang best practices di Cloudflare Workers Limits Documentation.