Golang + Firebase Realtime Database
Memanfaatkan Firebase Realtime Database sebagai media penyimpanan data. Solusi Simpel, Hemat Biaya, dan Powerful!
Mengembangkan sebuah aplikasi gak cuma nulis kode aja. Tantangan sesungguhnya sering muncul saat kita harus memilih teknologi:
Bahasa pemrograman apa yang dipakai?
Database apa yang digunakan?
Bagaimana biaya operasionalnya?
Seberapa mudah di-maintain?
Nah, di artikel ini, kita akan berbagi pengalaman memanfaatkan Golang sebagai backend service yang terhubung dengan Firebase Realtime Database. Kombinasi ini cukup menarik terutama untuk developer yang ingin solusi ringkas, scalable, dan relatif hemat biaya.
Buat teman-teman yang masih baru, tenang saja. Kita mulai dari konsep dasarnya dulu sebelum masuk ke case study.
Apa Itu Golang (Go)?
Golang, atau biasa disebut Go, adalah bahasa pemrograman open source yang dikembangkan oleh Google. Go banyak digunakan untuk:
-
Backend service & REST API
-
Aplikasi web
-
Microservices
-
Command Line Interface (CLI)
Salah satu keunggulan utama Go adalah goroutine, yang memudahkan kita membuat aplikasi concurrent dengan performa tinggi tanpa ribet.
📌 Singkatnya: Go itu cepat, sederhana, dan sangat cocok untuk aplikasi backend modern.
👉 Dokumentasi resmi: https://go.dev
Apa Itu Firebase Realtime Database?
Firebase Realtime Database (FRD) adalah database NoSQL berbasis JSON yang juga dikembangkan oleh Google.
Keunggulannya adalah data bisa sinkron secara realtime ke semua client yang terhubung.
Firebase Realtime Database mendukung berbagai platform:
-
Web
-
Android
-
iOS
Dan semuanya sudah disediakan client library resmi, sehingga integrasi jadi jauh lebih mudah.
👉 Dokumentasi resmi: https://firebase.google.com/docs/database
Kenapa Menggunakan Golang?
Jujur saja, alasan awal saya menggunakan Golang karena sudah nyaman 😄
Walaupun banyak yang beranggapan Go “kurang cocok” dengan Firebase dibandingkan Node.js atau PHP, justru di sinilah letak menariknya.
Dengan Go, kita bisa:
-
Mengelola data Firebase secara lebih terstruktur
-
Membuat API yang ringan dan cepat
-
Menjaga logic bisnis tetap rapi di backend
Go digunakan sebagai data manager & API layer, bukan sebagai pengganti client Firebase di sisi frontend.
Kenapa Menggunakan Firebase Realtime Database?
Memilih database itu soal kebutuhan, bukan soal mana yang paling populer.
Firebase Realtime Database cocok jika:
-
Ingin setup cepat tanpa ribet server
-
Butuh sinkronisasi data realtime
-
Mengembangkan aplikasi lintas platform
-
Ingin fokus ke fitur, bukan infrastruktur
Firebase juga menyediakan:
-
Authentication
-
Security Rules
-
Integrasi mudah dengan aplikasi mobile & web
Stydy Case: Membuat API CRUD dengan Go + Firebase
Pada studi kasus ini, kita akan membuat API CRUD sederhana untuk data blog menggunakan Golang dan Firebase Realtime Database.
1️⃣ Persiapan Koneksi Firebase
Pastikan teman-teman sudah memiliki Firebase Project dan mengunduh Service Account Key dari:
Firebase Console → Settings → Service Accounts
var (
db *db.Ref
app *firebase.App
)
Inisialisasi Firebase
Fungsi ini bertugas:
-
Menghubungkan aplikasi Go ke Firebase
-
Menentukan root reference (
blogs) pada database
2️⃣ Mendefinisikan Model Data
Model digunakan sebagai representasi struktur data di Firebase.
type BlogModel struct {
ID uuid.UUID
URI string
ImageURL string
Category string
Title string
Author string
Content string
TotalView int64
IsActive bool
CreatedAt time. Time
UpdatedAt time. Time
CreatedBy uuid.UUID
UpdatedBy uuid.UUID
}
3️⃣ Mengambil Semua Data (List)
func GetAllBlog(ctx context.Context) (map[string]BlogModel, error) {
var Blogs map[string]BlogModel
if err := db.Get(ctx, &Blogs); err != nil {
log.Error(err)
return Blogs, err
}
return Blogs, nil
}
db.Get() akan mengambil seluruh data berdasarkan refName (blogs).
4️⃣ Menambahkan Data (Insert)
func Insert(ctx context.Context) (*BlogModel, error) {
blog := &BlogModel{
ID: uuid.NewV4(),
URI: url.QueryEscape("title"),
ImageURL: "image url here",
Category: "category",
Title: "title",
Author: "author",
Content: "Blah blah blah",
TotalViews: 100,
IsActive: false,
CreatedAt: time.Now(),
}
err := db.Child(blog.ID.String()).Set(ctx, blog)
if err != nil {
log.Error(err)
return nil, err
}
return blog, nil
}
-
db.Child()→ menentukan node berdasarkan ID -
Set()→ menyimpan data ke Firebase
5️⃣ Mengambil Detail Data
func GetOneBlog(ctx context.Context, id string) (BlogModel, error) {
var blog BlogModel
err := db.Child(id).Get(ctx, &blog)
if err != nil {
log.Error(err)
return blog, err
}
return blog, nil
}
6️⃣ Update Data
func (blog *BlogModel) Update(ctx context.Context) error {
err := db.Child(blog.ID.String()).Set(ctx, blog)
if err != nil {
log.Error(err)
return err
}
return nil
}
Jika node belum ada, Firebase akan otomatis membuatnya.
7️⃣ Menghapus Data
func BlogDelete(ctx context.Context, id string) error {
err := db.Child(id).Delete(ctx)
if err != nil {
log.Error(err)
return err
}
return nil
}
8️⃣ Testing dengan Postman
Setelah API selesai:
-
Gunakan Postman
-
Uji endpoint:
-
List
-
Detail
-
Insert
-
Update
-
Delete
-
Pastikan data di Firebase ikut berubah secara real-time 🎯
kesimpulan
Kombinasi Golang + Firebase Realtime Database bisa menjadi solusi untuk developer yang ingin:
-
Backend ringan dan cepat
-
Integrasi mudah
-
Setup minim infrastruktur
-
Fokus ke pengembangan fitur
Semoga artikel ini bisa jadi bahan belajar dan inspirasi. Jika Anda berminat untuk mempelajari tentang Golang + Firebase Realtime Database in-depth, silakan mengikuti pelatihannya bersama SUHU disini :
Silakan konsultasikan kebutuhanmu dengan kami, klik link https://bit.ly/kontaksuhu
