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 migrasi database dari MySQL → PostgreSQL + TimescaleDB.

Arsitektur #

Request → Controller → UseCase → Repository → PostgreSQL/TimescaleDB
                       ↕
                    Gateway → External API / Kafka

Setiap layer punya tanggung jawab yang jelas:

Stack Teknis #

Komponen Teknologi
Language Go 1.24
HTTP Framework GoFiber v2
Database PostgreSQL + TimescaleDB (hypertable untuk device data)
ORM/Driver pgx/v5 (raw SQL performance)
Messaging Apache Kafka (Sarama)
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 + continuous aggregate menggantikan query reporting yang sebelumnya butuh menit menjadi detik