Dalam beberapa tahun terakhir, Rust semakin populer sebagai bahasa pemrograman yang menawarkan kecepatan, keamanan memori, dan efisiensi tinggi. Seiring meningkatnya adopsi Rust, kebutuhan akan framework web yang mampu memaksimalkan potensinya juga ikut naik. Di sinilah Axum adalah salah satu framework modern yang mulai banyak dibicarakan oleh developer backend.
Dibangun di atas ekosistem Tokio dan Hyper, Axum dirancang untuk menangani aplikasi web dan API dengan performa tinggi, struktur yang rapi, serta dukungan asynchronous yang kuat. Jika Anda penasaran bagaimana Axum bekerja dan mengapa semakin banyak developer mulai meliriknya, baca artikel ini sampai selesai.
Ringkasan Cepat
- Axum adalah library routing HTTP dan request-handling untuk Rust yang fokus pada ergonomi dan modularitas.
- Axum menyediakan API yang macro-free untuk routing ke handler, parsing request via extractor, model error handling yang sederhana, dan response dengan boilerplate minimal.
- Axum memanfaatkan ekosistem middleware Tower dan tower-http, bukan membuat sistem middleware sendiri.
- Tokio adalah runtime untuk menulis aplikasi asinkron yang reliabel di Rust, menyediakan I/O, networking, scheduler, timers, dan lain-lain.
- Hyper adalah library HTTP untuk Rust yang protektif dan efisien, mendukung HTTP/1 dan HTTP/2, dan menjadi fondasi banyak framework web.
Apa Itu Axum?
Axum adalah library (sering juga disebut framework) di bahasa Rust yang digunakan untuk membangun API dan web service. Sederhananya, Axum membantu Anda menangani request HTTP, mengatur routing, dan mengelola response dengan cara yang lebih rapi dan modular.
Also Read
Di dokumentasinya, Axum adalah “HTTP routing and request-handling library” yang berfokus pada ergonomi dan modularitas. Artinya, Axum tidak mencoba mengatur semuanya secara kaku, tetapi justru memberi fondasi yang fleksibel agar developer bisa merangkai arsitektur aplikasi sesuai kebutuhan masing-masing.
Axum: Framework atau Library?
Secara praktik, banyak developer menyebut Axum sebagai framework. Tapi secara desain, Axum lebih dekat ke library.
Kenapa? Karena Axum dibuat sebagai lapisan tipis di atas Hyper (library HTTP di Rust), dengan tambahan fitur routing dan handler yang ergonomis. Pendekatan ini membuat Axum:
- Lebih “Rust banget” (eksplisit, tidak banyak magic)
- Lebih ringan (overhead kecil)
- Lebih fleksibel (tidak memaksa arsitektur tertentu)
3 Fondasi utama Axum
Axum tidak bekerja sendirian. Ia berdiri di atas “tiga pilar” yang membuat ekosistemnya sangat solid:
- Tower (Middleware): Jalur pipa untuk menambahkan fitur. Jika Anda ingin menambahkan logging, rate limiting, authentication, atau timeout, semuanya bisa diintegrasikan melalui komponen dari Tower.
- Tokio (Runtime): Mesin eksekusi asynchronous yang menjalankan seluruh proses async di Rust. Tokio memungkinkan server menangani ribuan koneksi secara bersamaan tanpa mudah bottleneck atau macet.
- Hyper (HTTP): Fondasi utama protokol HTTP di Axum. Hyper bertanggung jawab menangani proses low-level seperti menerima dan mengirim data mentah melalui HTTP dengan cepat dan efisien.
Kenapa developer memilih Axum?
Ada dua alasan utama yang membuat Axum terasa lebih unggul dibanding kompetitornya:
1. Macro-Free (lebih transparan)
Banyak framework menggunakan macro (kode yang menghasilkan kode lain secara otomatis) yang terkadang sulit didebug. Axum menggunakan API Rust biasa. Hasilnya? Kode lebih mudah dibaca, unit test lebih gampang dibuat, dan jika ada error, pesan yang muncul lebih manusiawi.
2. Extractors: ambil data request lebih mudah
Di Axum, Anda tidak perlu repot mem-parsing data dari request secara manual. Framework ini sudah menyediakan cara yang lebih rapi melalui konsep extractor.
Caranya cukup sederhana: Anda tinggal mendeklarasikan data apa yang dibutuhkan langsung di parameter fungsi handler.
Contohnya:
- Butuh ID dari URL? gunakan
Path - Butuh data JSON dari body? gunakan
Json - Butuh parameter query? gunakan
Query
Menariknya, Axum juga akan otomatis melakukan validasi tipe data. Jika input tidak sesuai format yang diharapkan, request akan langsung ditolak tanpa perlu Anda menulis validasi tambahan.
4 Pilar utama dalam Kode Axum
Saat mulai menulis kode Axum, Anda akan selalu bertemu dengan konsep ini:
- Response: Apa pun yang dikembalikan oleh handler (teks, JSON, atau status error) yang otomatis dikonversi menjadi balasan untuk pengguna.
- Router: Peta jalan yang menentukan: “Jika ada yang akses
/produk, arahkan ke fungsi A.” - Handler: Fungsi async tempat Anda menulis logika bisnis (misalnya: ambil data dari database).
- Extractor: Cara Anda “menarik” data dari request masuk.
Cara kerja request di Axum
Di Axum, alur request bisa dibayangkan seperti sistem pabrik dengan jalur perakitan yang rapi dari awal sampai akhir.
- Request datang
Request masuk melalui pintu utama aplikasi. - Middleware (pre-processing)
Sistem melakukan pengecekan awal, misalnya validasi user sudah login atau mencatat log aktivitas. - Router
Request diarahkan ke jalur atau endpoint yang sesuai. - Extractor
Data penting diambil dari request, seperti ID, JSON, atau query parameter. - Handler
Di tahap ini logika utama dijalankan untuk memproses data tersebut. - Middleware (post-processing)
Response bisa diproses lagi, misalnya dikompresi sebelum dikirim. - Response
Hasil akhirnya dikirim kembali ke pengguna.
Hello world di Axum: simpel dan aman
Memulai server Axum minimalis hanya membutuhkan tiga langkah utama. Secara struktur, kodenya akan menyusun Router, mengikat listener, lalu menjalankannya di atas runtime Tokio.
Alur ringkasnya:
- Buat Router: Tentukan alamat (misal:
/) dan hubungkan ke fungsi pemroses (handler). - Bind Address: Tentukan di IP dan port mana server akan berjalan (misal:
0.0.0.0:3000). - Serve: Jalankan perintah
axum::serveuntuk mulai menerima kunjungan.
Itulah kenapa Axum terasa menarik: strukturnya tetap jelas, ringan, dan terasa seperti Rust “murni” tanpa banyak abstraksi yang tersembunyi.
Middleware: Fitur produksi dengan mudah
Dalam dunia nyata, API tidak hanya soal kirim-terima data. Anda butuh pengamanan dan pemantauan. Di Axum, Middleware adalah cara paling praktis untuk menambah fitur tanpa mengotori logika utama di setiap handler.
Axum memanfaatkan ekosistem Tower, sehingga Anda bisa memasang fitur berikut secara global:
- Auth: Verifikasi keamanan di satu pintu sebelum masuk ke data sensitif.
- Request Logging: Mencatat setiap aktivitas pengunjung.
- Timeout: Membatasi waktu tunggu agar server tidak menggantung.
- Rate Limiting: Mencegah serangan traffic tinggi atau bot.
- Compression: Mengecilkan ukuran data agar pengiriman lebih cepat.
Pendekatan ini membuat arsitektur tetap bersih. Anda tidak perlu menyentuh semua handler hanya untuk menambahkan satu fitur seperti rate limit. Cukup pasang di satu layer, dan semua request ikut terkontrol.
Sharing State di Axum: kenapa penting untuk API Nyata
Di aplikasi nyata dengan Axum, hampir semua endpoint biasanya membutuhkan akses ke “state bersama”, seperti koneksi database, cache, atau client ke service lain.
Untuk itu, Axum menyediakan pola yang rapi dan tetap sesuai filosofi Rust yang eksplisit dan aman secara tipe.
Komponen utamanya:
- AppState: Berisi data bersama seperti database pool, konfigurasi, atau service eksternal
- Router: Menyimpan dan membagikan state ke seluruh endpoint
- Handler: Mengambil state melalui extractor saat request diproses
Dengan pendekatan ini, Anda tidak perlu menggunakan global variable atau pola yang sulit dilacak. Semua dependency tetap jelas, terstruktur, dan aman secara tipe.
Kapan Sebaiknya Menggunakan Axum?
Axum cocok digunakan ketika Anda ingin membangun backend yang:
- Performa tinggi dan efisien
- Aman dari sisi memory (memory safety)
- Modular dan mudah di-scale
- Tidak “terlalu banyak magic”
Beberapa use case yang sering cocok:
- REST API untuk produk SaaS
- Backend dengan concurrency tinggi (misalnya event ingestion)
- Microservices internal
- API gateway dengan kebutuhan middleware kuat (auth, rate limit, tracing)
Pendekatan yang sering berhasil adalah memulai dari API kecil, memastikan logging dan observability sudah rapi, lalu berkembang secara bertahap. Axum mendukung pola ini dengan sangat baik.
Kapan Axum kurang cocok dipakai?
Axum bukan selalu pilihan terbaik untuk semua situasi, terutama jika kebutuhan proyek lebih menekankan kecepatan eksekusi daripada fleksibilitas jangka panjang.
Ada beberapa kondisi di mana Anda perlu mempertimbangkan ulang:
- Tim belum familiar dengan Rust
- Membutuhkan time to market yang sangat cepat
- Membutuhkan ekosistem plugin siap pakai yang sangat luas
Hal yang perlu dipertimbangkan secara realistis:
- Kurva belajar Rust yang cukup curam
- Beberapa ekosistem library belum selengkap bahasa lain
- Ketersediaan developer Rust di tim yang masih terbatas
Meski begitu, Axum tetap fleksibel untuk diadopsi bertahap. Banyak tim memulainya dari use case sederhana, lalu memperluas penggunaannya seiring kebutuhan sistem berkembang.
Tabel perbandingan (ringkas): Axum vs opsi lain di ekosistem Rust
| Kriteria | Axum | Opsi Rust lain (umum) |
|---|---|---|
| Gaya API | Macro-free, modular | Ada yang macro-heavy / model berbeda |
| Middleware | Tower ecosystem | Ada yang punya sistem sendiri |
| Fokus | Ergonomics + composability | Beragam |
| Cocok untuk | API production yang butuh kontrol | Tergantung kebutuhan |
Catatan: tujuan tabel ini bukan “menang-kalah”, tetapi membantu Anda memilih berdasarkan style dan kebutuhan.
Checklist production-ready untuk API Axum
Sebelum deploy, pastikan Anda punya minimal logging/tracing, error handling yang konsisten, timeout, rate limit, dan konfigurasi yang aman.
Checklist praktis:
- Logging/tracing aktif (request id)
- Error handling konsisten (mapping error -> status code)
- Timeout per request
- Rate limiting (minimal untuk endpoint sensitif)
- Authentication/authorization
- Input validation (JSON, query)
- CORS (kalau dipakai dari browser)
- Observability: metrics + dashboards
Pro tip dari tim: mulai dari “boring reliability” dulu, baru optimasi performa. Banyak API jatuh bukan karena lambat, tetapi karena sulit di-debug.
API yang bagus butuh server yang stabil
Axum memberikan kecepatan di sisi kode, namun performa layanan tetap sangat bergantung pada kestabilan infrastruktur yang Anda gunakan. Kontrol penuh atas konfigurasi, jaringan, dan sumber daya server menjadi faktor penentu agar backend Anda benar-benar bisa diandalkan dalam skala produksi.
Untuk mendukung skalabilitas dan fleksibilitas deployment aplikasi Anda, VPS murah dari Rumahweb adalah solusi yang tepat. Dapatkan lingkungan server yang stabil dengan performa tinggi untuk memastikan setiap API yang Anda bangun berjalan optimal setiap saat.
FAQ
Cocok untuk pemula yang serius belajar backend Rust, tetapi tetap perlu waktu memahami konsep Rust dan async.
Axum dirancang untuk bekerja dengan Tokio dan Hyper, dan runtime independence bukan fokusnya saat ini.
Axum adalah lapisan tipis di atas Hyper dan overheadnya kecil, sehingga performanya umumnya sebanding dengan Hyper, tergantung desain aplikasi dan middleware.
Middleware adalah komponen yang berjalan sebelum/atau sesudah handler untuk tugas seperti logging, timeout, auth, compression, rate limit.
Extractor adalah cara deklaratif mengambil data dari request (path, query, JSON, headers) langsung ke parameter handler.
Ya. Axum memang umum dipakai untuk membangun API HTTP di Rust.
Umumnya Anda build binary Rust, jalankan sebagai service (systemd/container), dan letakkan reverse proxy jika perlu.
Pasang rate limit dan timeout, pantau metrics, dan gunakan load test sebelum scale.
Kesimpulan
Axum adalah framework web di Rust yang menekankan ergonomi, modularitas, dan struktur yang jelas. Di baliknya, Axum dibangun di atas ekosistem yang solid seperti Tokio sebagai async runtime, Hyper untuk HTTP layer, dan Tower untuk sistem middleware dan service.
Dengan kombinasi tersebut, Axum cocok untuk membangun backend yang:
- Rapi dan terstruktur
- Type-safe berkat sistem tipe Rust
- Siap produksi dengan pipeline middleware yang matang
Jika Anda mencari backend Rust yang seimbang antara performa, keamanan tipe, dan fleksibilitas arsitektur, Axum adalah salah satu pilihan yang sangat masuk akal untuk dipertimbangkan.







