Nyoba Deno buat bikin server kecil
Halo Guys! Apa kabar? Semoga pada sehat semua ya. Kali ini kita mau ngobrolin sesuatu yang seru nih, terutama buat kamu yang lagi asyik ngoprek atau kepikiran buat bikin server sendiri, tapi bingung mau pakai teknologi apa. Pernah denger Deno? Kalau belum, pas banget nih artikel buat kamu. Kalau udah, mungkin ada info baru yang bisa kamu dapetin.
Jadi gini, banyak banget pilihan buat bikin server kecil, mulai dari yang udah senior kayak Node.js, Python dengan Flask atau Django-nya, Ruby on Rails, sampai yang lagi naik daun kayak Go. Tiap pilihan punya kelebihan dan kekurangannya sendiri. Nah, Deno ini hadir sebagai "adik" atau "evolusi" dari Node.js, yang digagas juga oleh Ryan Dahl, orang yang bikin Node.js pertama kali.
Kenapa sih kita mau bahas Deno buat bikin server kecil? Ada beberapa alasan menarik nih. Pertama, Deno itu didesain biar secure dari sananya. Secara default, dia nggak bisa sembarangan akses file di komputermu, sembarangan akses network, atau sembarangan akses environment variables tanpa kamu kasih izin. Ini penting banget buat server, biar nggak gampang jebol.
Kedua, Deno udah built-in banyak hal yang biasanya di Node.js kamu butuh instal paket eksternal. Contohnya, Deno udah support TypeScript secara native, jadi nggak perlu lagi tuh setup compiler ribet. Dia juga udah punya built-in formatter, linter, tester, bahkan dependency inspector. Keren kan? Jadi, buat bikin server kecil, kamu nggak perlu pusing mikirin setup tools tambahan. Tinggal fokus ke kodenya aja.
Ketiga, Deno itu simple. Dia pakai standar web yang udah umum, kayak fetch
API buat request HTTP atau Web Crypto API
buat urusan kriptografi. Jadi, kalau kamu udah familiar sama JavaScript di browser, adaptasi ke Deno bakal terasa lebih mudah.
Oke, sebelum lanjut ke cara bikin servernya, gimana sih cara pasang Deno? Gampang kok. Kamu bisa cek di website resminya Deno (deno.land), di sana ada panduan instalasi buat berbagai sistem operasi (Windows, macOS, Linux). Biasanya sih cukup buka terminal terus jalanin satu baris perintah aja. Misalnya di macOS atau Linux pakai Homebrew: brew install deno
. Atau pakai script: curl -fsSL https://deno.land/install.sh | sh
. Gampang kan?
Setelah Deno terpasang, coba deh buka terminal baru terus ketik deno --version
. Kalau muncul versi Deno-nya, berarti instalasimu berhasil. Selamat! Kamu udah siap buat ngoprek.
Membuat Server "Hello, Deno!" Pertama Kita
Nah, sekarang bagian serunya. Mari kita bikin server HTTP paling sederhana pakai Deno. Deno itu unik karena dia nggak pakai require()
kayak Node.js, tapi pakai import
yang langsung dari URL atau path lokal. Ini konsep yang namanya ES Modules. Jadi, kamu bisa import module dari website lain langsung! Tapi buat module built-in, biasanya dia pakai prefix deno:
.
Bikin file baru, kasih nama misalnya server.ts
(pakai .ts
ya, karena Deno support TypeScript langsung). Isi kodenya kayak gini:
typescript
import { serve } from "deno:std/http";// Ini fungsi handler buat tiap request yang masuk
async function handler(req: Request): Promise {
const url = new URL(req.url);
const pathname = url.pathname;console.log(Request masuk ke: ${pathname});if (pathname === "/") {
// Kalau path-nya root, kasih response "Hello, Deno!"
return new Response("Hello, Deno!", { status: 200 });
} else if (pathname === "/about") {
// Kalau path-nya /about
return new Response("Ini halaman about Deno", { status: 200 });
} else {
// Kalau path lain, kasih not found
return new Response("Halaman tidak ditemukan", { status: 404 });
}
}console.log("Server berjalan di http://localhost:8000/");
Oke, kita bedah kodenya dikit ya. Pertama, kita import fungsi serve
dari module deno:std/http
. deno:std
itu kayak standard library-nya Deno, isinya module-module yang sering dipakai. Kedua, kita bikin fungsi handler
. Fungsi ini bakal dipanggil setiap ada request HTTP yang masuk ke server kita. Fungsi ini menerima objek Request
dan harus mengembalikan Promise
yang resolve ke objek Response
. Ini sesuai standar Web Fetch API lho! Di dalam handler
, kita ambil URL dari request, terus cek pathname
-nya. Kalau /
, kita kasih Response
dengan teks "Hello, Deno!". Kalau /about
, teksnya beda. Kalau yang lain, kita kasih status 404 Not Found. Terakhir, kita panggil serve(handler, { port: 8000 })
. Ini artinya kita minta Deno untuk menjalankan server HTTP, menggunakan fungsi handler
yang kita buat untuk memproses request, dan servernya dijalankan di port 8000.
Nah, gimana cara jalanin kode ini? Buka terminal di folder tempat kamu simpan file server.ts
tadi. Terus ketik perintah ini:
bash
deno run --allow-net server.ts
Perhatiin argumen --allow-net
. Ini penting! Karena Deno itu secure secara default, dia nggak akan ngasih izin programmu buat akses jaringan (networking) kecuali kamu kasih izin eksplisit. --allow-net
ngasih izin program server.ts
buat akses jaringan. Kalau nggak pakai ini, Deno bakal nolak dan muncul error.
Setelah kamu jalanin perintah itu, harusnya di terminal muncul output: Server berjalan di http://localhost:8000/
. Nah, sekarang buka browser terus akses http://localhost:8000/
. Kamu bakal lihat tulisan "Hello, Deno!". Coba akses http://localhost:8000/about
, kamu bakal lihat tulisan lain. Kalau akses URL lain, misalnya http://localhost:8000/apa-aja
, kamu bakal dapat tulisan "Halaman tidak ditemukan" dengan status 404.
Gampang banget kan bikin server HTTP dasar pakai Deno? Kode kita cuma sedikit, tapi udah bisa jadi server yang merespons request di beberapa path.
Tips Membangun Server Kecil dengan Deno
Sekarang kita masuk ke bagian tips nih. Kalau mau bikin server yang lebih serius, ada beberapa hal yang bisa kamu perhatikan:
- Pahami Permissions Deno: Ini krusial banget buat keamanan. Selalu kasih izin (dengan flag
--allow-*
) seminimal mungkin sesuai kebutuhan aplikasimu. Contoh:--allow-net=:8000
(hanya izinkan akses network di port 8000),--allow-read=/path/to/data
(hanya izinkan baca file di path tertentu),--allow-env
(izinkan akses environment variables). Ini bikin aplikasimu lebih tahan banting dari serangan atau celah keamanan yang nggak sengaja. - Manfaatkan TypeScript: Karena Deno support TypeScript out-of-the-box, manfaatkan fitur ini! TypeScript bantu banget buat nulis kode yang lebih rapi, terstruktur, dan minim error karena ada type checking. Apalagi kalau projectmu mulai membesar, TypeScript itu penyelamat. Kamu nggak perlu setup
tsconfig.json
yang rumit, Deno udah punya setting default yang bagus. Kalaupun mau custom, bisa bikin filedeno.json
ataudeno.jsonc
. - Gunakan Standard Library (deno:std): Sebelum nyari module dari luar, cek dulu di
deno:std
. Standard Library Deno itu lumayan lengkap lho. Ada module buat HTTP, file system, testing, encoding/decoding, date/time, dll. Menggunakan standard library lebih aman dan stabil karena dikelola langsung oleh tim Deno. Kode dideno:std
juga udah dioptimalkan. - Asynchronous Adalah Kunci: Sama kayak di Node.js, operasi I/O (kayak baca file, akses network, akses database) di Deno itu asynchronous. Gunakan
async
/await
atauPromise
biar aplikasimu nggak nge-block saat nunggu operasi I/O selesai. Kode di contohhandler
kita tadi sudah pakaiasync function
dan mengembalikanPromise
, ini praktik yang bagus. - Struktur Kode yang Rapi: Walaupun cuma server kecil, tetap penting buat bikin struktur folder dan file yang rapi. Pisahin logic request handling, business logic, dan akses data. Mungkin kamu bisa bikin folder
handlers
,services
,utils
, dll. Ini memudahkanmu nanti kalau mau nambah fitur atau melakukan maintenance. - Jangan Takut Pakai Framework/Middleware: Buat server yang lebih kompleks, mungkin kamu butuh framework atau library middleware. Ada beberapa framework populer di ekosistem Deno, misalnya Oak atau Hono. Framework ini biasanya nyediain fitur routing yang lebih canggih, parsing request body (JSON, form data), session management, dll. Hono itu lagi nge-hype banget karena performanya cepat dan bisa jalan di berbagai platform (termasuk Edge Workers). Kamu bisa coba-coba salah satunya.
- Testing Itu Penting: Deno punya built-in testing framework. Kamu bisa bikin file test (biasanya pakai
.test.ts
atau.spec.ts
), terus jalanin pakai perintahdeno test
. Jangan malas bikin unit test atau integration test buat bagian-bagian penting di servermu. Ini bantu banget buat memastikan kodenmu jalan sesuai harapan dan nggak ngerusak fitur lain saat ada perubahan. - Kelola Dependencies dengan Bijak: Salah satu hal unik Deno adalah dia import langsung dari URL. Ini keren karena nggak butuh
nodemodules. Tapi, URL bisa berubah atau hilang. Solusinya, gunakan deno.lock file untuk mengunci versi dependencies yang kamu pakai. Saat pertama kali jalanin deno run atau deno cache, Deno bakal nge-cache module yang diimport dan bikin deno.lock. Commit file ini ke Git biar semua orang yang kerja di projectmu pakai versi dependencies yang sama. Kamu juga bisa pakai fitur importmap
dideno.json
biar import URL-nya jadi lebih pendek dan mudah dikelola. - Monitoring dan Logging: Untuk server yang udah jalan di production (meskipun kecil), penting buat punya mekanisme monitoring dan logging. Di kode contoh kita tadi, kita pakai
console.log
. Di Deno, kamu bisa pakai module logging darideno:std/log
yang lebih canggih, bisa atur level log (info, error, debug, dll) dan output-nya (console, file). Untuk monitoring, kamu bisa pakai tools eksternal atau service cloud. - Pertimbangkan Deployment: Kalau servermu udah jadi dan siap dipakai orang lain, gimana cara deploy-nya? Ada beberapa pilihan:
* Deno Deploy: Ini layanan resmi dari tim Deno, didesain khusus buat deploy aplikasi Deno. Gampang banget, tinggal konekin ke repository Git, terus dia otomatis deploy. Cocok banget buat server API kecil atau static site server. * VPS Biasa: Kamu bisa deploy Deno app di Virtual Private Server (VPS) kayak DigitalOcean, Linode, AWS EC2, atau Google Cloud. Tinggal install Deno di servernya, terus jalanin aplikasimu di background (pakai PM2 atau Systemd misalnya). * Docker: Kamu bisa bikin Docker image dari aplikasimu, terus deploy container itu di mana aja yang support Docker (Docker Hub, Kubernetes, dll). Deno punya Docker image resmi kok.
Use Case Server Kecil dengan Deno
Server kecil yang dibuat pakai Deno ini bisa dipakai buat berbagai macam hal lho:
- Backend API Sederhana: Misalnya buat aplikasi mobile atau frontend web yang butuh API simple buat ngambil data atau nyimpen data ke database. Deno cocok banget buat bikin RESTful API atau bahkan GraphQL API.
- Serving Static Files: Kamu bisa bikin server Deno buat nyajiin file HTML, CSS, JavaScript, gambar, dll. Ini berguna kalau kamu punya static website tapi butuh server yang bisa dikustomisasi dikit, atau mau nyajiin file dari folder lokal di jaringan internal.
- Microservices: Kalau kamu lagi bangun arsitektur microservices, Deno bisa jadi pilihan yang bagus buat bikin service-service kecil yang independen. Performanya yang cepat dan resource usage yang efisien cocok buat skenario ini.
- Webhook Handlers: Menerima data dari layanan lain via webhook (misalnya dari GitHub, Stripe, atau service lainnya). Deno bisa dengan mudah setup server kecil yang siap menerima POST request dari webhook.
- Server Internal/Tools: Bikin server kecil buat kebutuhan internal tim, misalnya buat nampilin dashboard data internal, tool buat otomatisasi sesuatu, atau server buat nerima log dari aplikasi lain.
Perbandingan Singkat Deno dengan Pilihan Lain
Gimana Deno dibandingin sama pilihan lain buat server kecil?
vs Node.js: Deno lebih modern, secure by default, support TypeScript native, dan punya built-in* tools lengkap. Node.js punya ekosistem package (npm) yang jauh lebih besar dan matur, serta komunitas yang sangat besar. Kalau kamu udah nyaman banget sama Node.js dan butuh package-package spesifik yang belum ada di Deno, Node.js mungkin masih pilihan yang solid. Tapi buat project baru atau yang mau coba hal baru, Deno patut dicoba.
- vs Python (Flask/Django): Python itu bahasa yang gampang dibaca dan powerful buat data science atau scripting. Flask cocok buat server web/API kecil. Django lebih ke framework buat aplikasi web yang besar. Deno fokusnya di runtime JavaScript/TypeScript dengan performance tinggi (karena pakai V8 engine kayak Chrome). Kalau timmu lebih familiar JavaScript, Deno adaptasinya lebih gampang daripada belajar Python.
- vs Go: Go itu bahasa yang compile, performanya sangat cepat, dan kuat buat concurrency. Cocok banget buat high-performance services atau low-level stuff. Deno pakai V8 engine, yang juga performanya bagus, tapi Go biasanya unggul di raw speed dan efisiensi resource untuk aplikasi yang sangat traffic-heavy. Tapi Go syntax-nya beda banget sama JavaScript, butuh adaptasi lumayan.
Intinya, Deno ini pilihan yang menarik banget buat bikin server kecil, terutama kalau kamu suka JavaScript/TypeScript dan pengen cobain runtime yang lebih modern, secure, dan minim setup awal.
Penutup
Membangun server kecil itu bisa jadi langkah awal yang seru banget buat kamu yang mau terjun ke dunia backend development atau sekadar butuh backend simpel buat project pribadi. Deno nawarin pengalaman yang fresh dengan fitur-fitur built-in yang ngebantu banget.
Cobain deh bikin server HTTP sederhana pakai Deno seperti contoh di atas. Eksplorasi module-module lain di deno:std
. Cari tahu framework atau library lain yang bisa bantu kamu bangun server yang lebih powerful. Jangan takut buat eksperimen!
Setiap teknologi punya tempatnya masing-masing, dan Deno hadir sebagai alternatif yang kuat dan menarik di landscape backend development. Siapa tahu, Deno ini jodohmu buat bikin server kecil yang handal dan aman.
Selamat mencoba dan happy coding! Kalau ada pertanyaan atau mau share pengalaman nyoba Deno, jangan ragu ya!