GPS Fleet Tracking API, Laravel ke Go

Masalah #

Sistem GPS fleet tracking yang menangani pelacakan kendaraan secara real-time berjalan di atas Laravel (PHP) dengan MySQL. Seiring pertumbuhan jumlah device dan volume data lokasi, sistem mengalami bottleneck:

Solusi #

Konversi total backend dari Laravel → Go menggunakan Clean Architecture pattern, dengan pemisahan peran database: MySQL untuk data domain, PostgreSQL + TimescaleDB untuk data lokasi (time-series).

Arsitektur #

Request → Controller → UseCase → Repository → MySQL (domain) / PostgreSQL+TimescaleDB (lokasi)
                       ↕
                    Gateway → External API / RabbitMQ

Setiap layer punya tanggung jawab yang jelas:

Stack Teknis #

Komponen Teknologi
Language Go 1.26
HTTP Framework GoFiber v2
Database MySQL (data domain) + PostgreSQL/TimescaleDB (data lokasi/time-series)
ORM/Driver pgx/v5 (raw SQL performance)
Messaging RabbitMQ (amqp091-go)
Cache Ristretto (in-memory)
Migration golang-migrate
Validation go-playground/validator
Auth JWT + unified auth

Fitur Utama #

Hasil #

Pelajaran #

  1. Clean Architecture membantu migrasi bertahap: setiap endpoint bisa dikonversi satu per satu tanpa breaking changes, memungkinkan v2 (Laravel) dan v3 (Go) berjalan paralel selama transisi
  2. pgx/v5 > ORM untuk high-throughput: kontrol penuh terhadap SQL query memberikan performa yang lebih predictable dibanding ORM abstraction
  3. TimescaleDB mengubah permainan: hypertable + compression membuat jutaan record lokasi per hari tersimpan hemat dan tetap cepat dibaca.