Belajar Fiber - Sejarah, Latar Belakang & Mengapa Membutuhkan Fiber
Episode 1 of 23

Belajar Fiber - Sejarah, Latar Belakang & Mengapa Membutuhkan Fiber

Episode ini menelusuri kelahiran Fiber tahun 2019 yang terinspirasi Express.js dan dibangun di atas fasthttp, evolusinya dari v1 ke v2 lalu v3 pada Februari 2026, serta masalah yang diselesaikan Fiber dalam hal performa, routing, dan produktivitas developer.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Pendahuluan

Sebelum menulis kode, penting untuk memahami dari mana Fiber berasal dan masalah apa yang diselesaikannya. Episode 1 membahas sejarah, latar belakang, dan alasan membutuhkan Fiber — termasuk keputusan paling kontroversialnya: memakai fasthttp alih-alih net/http standar Go.

Dengan memahami konteks ini, kalian tidak sekadar menghafal API, tapi tahu mengapa Fiber didesain seperti ini dan kapan keputusan tersebut tepat. Ini juga menjadi bekal penting di episode 22 saat kita membandingkan Fiber dengan Gin, Echo, dan chi.

Evolusi Fiber

Lahir dari Inspirasi Express.js

Fiber diciptakan pada tahun 2019 oleh Fenny dengan misi sederhana: membawa ergonomi Express.js ke ekosistem Go. Express populer karena API-nya yang ringkas — routing satu baris, middleware berantai, dan respons yang mudah. Fiber mengadopsi pola ini sehingga developer Node.js bisa langsung produktif tanpa kurva belajar yang curam.

Yang membedakan Fiber sejak awal: ia dibangun di atas fasthttp, bukan net/http. Fasthttp adalah implementasi HTTP server yang menekankan zero allocation, pengelolaan buffer manual, dan performa tinggi. Konsekuensinya besar — seluruh API Fiber mengikuti semantik fasthttp, dan ini menjadi alasan mengapa Fiber terasa berbeda dari framework Go lainnya.

Perjalanan v1 ke v2 lalu v3

  • v1 (2019): fondasi routing dan middleware ala Express di atas fasthttp.
  • v2 (2021): API distabilkan, ekosistem middleware diperluas, dan performa ditingkatkan; versi yang sangat banyak dipakai di produksi.
  • v3 (Februari 2026): kelahiran kembali dengan hooks lifecycle, binding dan extractors bawaan, route constraints, domain routing, custom context, serta dukungan Go 1.25.

Perjalanan versi bisa kalian cek langsung dari module proxy Go:

Daftar semua versi Fiber v3
go list -m -versions github.com/gofiber/fiber/v3

Output menampilkan semua versi v3 yang pernah dirilis, mulai dari v3.0.0 hingga v3.4.0. go list -m -versions github.com/gofiber/fiber/v3 adalah cara cepat memetakan umur sebuah project sebelum memutuskan mengadopsinya.

Mengapa Memakai fasthttp Bukan net/http

Fasthttp didesain untuk skenario dengan lalu lintas sangat tinggi. Ia memakai sync.Pool untuk reuse buffer, menghindari alokasi di hot path, dan menyediakan API yang berorientasi byte. Hasilnya, aplikasi Fiber bisa melayani jauh lebih banyak request per detik dibanding net/http pada perangkat keras yang sama.

Trade-off yang harus dipahami: fasthttp tidak mengimplementasikan http.Handler. Artinya, library yang menuntut http.Handler standar tidak langsung bisa dipakai. Fiber menyediakan paket adaptor untuk menjembatani keduanya, dan kita akan melihat caranya di episode 7 dan 20. Keputusan inilah yang membuat posisi Fiber unik — performa tinggi, tetapi dengan konsekuensi ekosistem yang harus dikelola secara sadar.

Masalah yang Diselesaikan Fiber

Jika diringkas, Fiber menjawab tiga kebutuhan besar yang membuat Go tetap nyaman untuk membangun API modern: routing yang cepat, produktivitas yang tinggi, dan dukungan realtime. Ketiganya hadir dalam satu dependency tanpa harus merakit banyak library.

Routing, Middleware, dan Hooks

Masalah pertama yang dipecahkan Fiber adalah kecepatan routing tanpa mengorbankan fitur. Router Fiber menangani path parameter, wildcard, dan constraint dengan alokasi minimal. Di v3, router juga mendapat hooks lifecycle sehingga developer bisa menyisipkan logika pada momen tertentu: saat listen dimulai, sebelum shutdown, dan setelah shutdown.

Binding, Extractor, dan Respons Helpers

Masalah kedua adalah produktivitas. Fiber v3 menyediakan binding dari body, query, header, dan URI ke struct; paket extractor untuk mengambil token atau nilai dari berbagai sumber dengan fallback; serta helper respons seperti c.JSON, c.SendString, dan c.SendStream. Hal yang di Node.js butuh library tambahan, di Fiber tersedia secara native.

WebSocket dan Realtime

Masalah ketiga adalah kebutuhan realtime. Melalui github.com/gofiber/contrib/v3/websocket, Fiber menyediakan WebSocket tanpa meninggalkan fiber.Ctx — params, query, dan cookies tetap bisa diakses di dalam koneksi. Kombinasi inilah yang menjadikan Fiber pilihan untuk API plus fitur realtime dalam satu service.

Fiber vs Pendekatan Lain

Sekilas Perbandingan

  • Gin: framework populer berbasis net/http dengan fokus performa dan ekosistem besar.
  • Echo: berbasis net/http, API yang lengkap, sekarang memasuki versi 5.
  • chi: router minimalis di atas net/http, kompatibel penuh dengan standard library.
  • net/http polos: ServeMux bawaan Go, tanpa middleware dan tanpa parameter path di versi lama.

Posisi Fiber

Fiber memilih fasthttp sehingga berada di jalur yang berbeda dari Gin, Echo, dan chi. Keunggulannya adalah alokasi yang sangat rendah dan throughput tinggi. Konsekuensinya: sebagian library yang mengharapkan http.Handler membutuhkan adaptor (adaptor.New), dan beberapa kebiasaan net/http tidak langsung berlaku. Trade-off ini akan dibedah mendalam di episode 22.

Selain itu, ergonomi Fiber sengaja dibuat menyerupai Express sehingga pola pikir developer Node.js tetap berlaku. Struktur kode berikut menggambarkan betapa dekatnya kedua ekosistem:

Mengenali fondasi fasthttp
package main
 
import (
    "github.com/gofiber/fiber/v3"
    "github.com/gofiber/fiber/v3/adaptor"
)
 
func main() {
    app := fiber.New()
 
    app.Get("/", func(c fiber.Ctx) error {
        return c.SendString("Fiber berjalan di atas fasthttp")
    })
 
    app.Listen(":3000", fiber.ListenConfig{
        DisableStartupMessage: true,
    })
}

Contoh di atas menunjukkan aplikasi Fiber minimal. fiber.New() membuat instance App, dan setiap handler menerima fiber.Ctx yang membungkus fasthttp.RequestCtx. Perhatikan bahwa app.Listen(":3000", fiber.ListenConfig{DisableStartupMessage: true}) mengembalikan error yang harus ditangani — perilaku ini berbeda dari v2 yang memblokir tanpa nilai balik.

Callout Refleksi

Tip

Jangan memilih framework hanya dari benchmark semata. Fiber unggul dalam skenario latency rendah dan allocasi minim, tetapi pastikan ekosistem library yang kalian butuhkan kompatibel dengan fasthttp. Pertimbangan ini akan kembali kita bahas di episode 22.

Penutup

Inti yang harus dibawa pulang:

  • Fiber lahir tahun 2019, terinspirasi Express.js, dibangun di atas fasthttp.
  • Evolusinya: v1, v2 pada 2021, dan v3 pada Februari 2026.
  • Fiber memecahkan masalah routing cepat, middleware dan hooks, binding, extractor, serta WebSocket.
  • Perbedaan utama dengan Gin, Echo, dan chi adalah fondasi fasthttp.
  • Verifikasi riwayat versi lewat go list -m -versions.

Di episode 2 selanjutnya kita masuk ke konsep dasar dan arsitektur utama — bagaimana fiber.App bekerja di balik layar, apa itu fiber.Ctx, komponen App, Router, Handler, Middleware, Hooks, hingga default error handler. Ini adalah fondasi mental yang akan membuat semua episode berikutnya terasa masuk akal.

Belajar Fiber - Sejarah, Latar Belakang & Mengapa Membutuhkan Fiber | Belajar Fiber