Kata SUHU

Golang + Firebase Realtime Database

11 Nov 2024

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

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

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

Golang + Firebase Realtime Database

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

 
 
func InitialFCMServer() {
	var err error

	opt := option.WithCredentialsFile("file_service_account.json")
	conf := &firebase.Config{
		DatabaseURL: "https://your-project.firebaseio.com",
	}

	app, err = firebase.NewApp(context.Background(), conf, opt)
	if err != nil {
		log.Fatal(err)
	}

	ctx := context.Background()
	initDb, err := app.Database(ctx)
	if err != nil {
		log.Fatal(err)
	}

	db = initDb.NewRef("blogs")
}

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

Kata SUHU Pilihan

Loading...