web open-source

Service Pencarian Katalog dengan Go

Microservice Go yang menyimpan seluruh katalog produk di memori dan melayani pencarian tanpa menyentuh basis data. Pembacaan bebas kunci lewat atomic pointer, sehingga penyegaran data tidak pernah memblokir permintaan.

web source only · docker· fly-io· go· postgresql
Docker Fly.io Go PostgreSQL Search Engine

Bagian pencarian dari platform Tree Coffee, dipisah menjadi service sendiri. Postgres tetap sumber kebenaran; service ini hanya memotret katalognya ke RAM lalu melayani /api/search.

Bagian yang menarik

Pembacaan tidak memakai mutex sama sekali. Snapshot katalog disimpan dalam atomic.Pointer[Snapshot], dan penyegaran menukar pointer itu secara atomik. Akibatnya:

  • Permintaan yang sedang berjalan tidak pernah terblokir oleh penyegaran.
  • Tidak ada pembacaan yang robek — sebuah permintaan melihat satu snapshot utuh, bukan campuran dua versi.
  • Kalau penyegaran gagal, snapshot lama tetap sah dan terus melayani.

Stack

Go 1.26.4, Fiber v2 untuk HTTP, pgx/v5 untuk mengambil snapshot dari Postgres. Ada Dockerfile dan fly.toml dengan health check di /healthz serta auto_stop_machines.

Angka yang terukur

Commit 5
Rentang 9 Jul 2026 – 4 Agu 2026
Baris kode 874 di 10 berkas
Test 5, semuanya lulus

go test ./... dijalankan ulang saat menulis catatan ini dan hasilnya ok. Test-nya bukan test asap: peringkat dan penyaringan hasil, paginasi, jatuh-balik nama kategori, saran pencarian, dan kasus tanpa hasil masing-masing punya assertion sendiri.

Project kecil, tetapi semua yang ada di dalamnya selesai dan teruji.

started 9 Jul 2026 · updated 20 Aug 2026