< cd ../
Backend go microservice

Go untuk Microservice: Studi Kasus Sederhana

Contoh membangun microservice kecil dengan Go, dari HTTP handler sampai graceful shutdown.

AUTHOR: code.santuy DATE: 2026-09-16 READ: 1m
Go untuk Microservice: Studi Kasus Sederhana

Kenapa Go untuk microservice

Go punya binary hasil compile yang kecil, startup cepat, dan concurrency model (goroutine, channel) yang ringan. Cocok untuk microservice yang perlu footprint kecil dan performa konsisten.

HTTP handler minimal

func healthHandler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("ok"))
}

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/health", healthHandler)

    srv := &http.Server{Addr: ":8080", Handler: mux}
    log.Fatal(srv.ListenAndServe())
}

Tidak perlu framework besar untuk kasus sederhana, standard library net/http sudah cukup untuk banyak microservice.

Graceful shutdown

ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()

go func() {
    if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
        log.Fatal(err)
    }
}()

<-ctx.Done()
shutdownCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
srv.Shutdown(shutdownCtx)

Graceful shutdown penting di lingkungan container/orchestrator seperti Kubernetes, supaya request yang sedang berjalan tidak terputus paksa saat pod di-terminate.

Kapan Go, kapan Node/NestJS

Go unggul di beban kerja CPU-bound dan concurrency tinggi dengan resource terbatas. Untuk tim yang sudah kuat di ekosistem JavaScript/TypeScript dan butuh kecepatan development lebih dari raw performance, Node atau NestJS tetap pilihan yang wajar.

~ $ e.hary_

© 2026 Eko Haryono > @code.santuy

GitHub TikTok Instagram