PROJECT / 06
Audit Trail Service
Who changed what, when — answered in one query.
- ROLE
- Software Architect
- YEAR
- 2026
- STACK
- Laravel, PostgreSQL, Queues
- STATUS
- SHIPPED ✓
THE PROBLEM
Setiap module mencatat log dengan format berbeda. Investigasi insiden berarti membuka 5 tempat berbeda.
CONTEXT
Kebutuhan compliance dan debugging lintas unit bisnis.
CONSTRAINTS
- •Minimal write overhead
- •Cross-module
- •Queryable
- •Retention policy
SOLUTION
Event-based audit: model memancarkan event, listener antrean menulis ke tabel audit terpusat dengan JSONB diff.
ARCHITECTURE
SVG/HTML diagram — accessible, selectable, SEO-friendly. No WebGL here on purpose.
TECHNICAL DECISIONS
WHY THIS STACK?
Queue memisahkan write path kritis dari pencatatan. JSONB PostgreSQL membuat diff tetap queryable.
WHY NOT SEPARATE SERVICE?
Skala saat ini belum butuh network hop tambahan. Library + konvensi memberi 80% manfaat dengan 20% biaya.
TRADE-OFF?
Audit bersifat eventual-consistent (detik). Untuk kasus ini dapat diterima dan didokumentasikan.
WHAT WOULD I CHANGE AT 10× SCALE?
Ekstraksi menjadi service sendiri dengan stream (Kafka/Redpanda) dan cold storage.
RESULT
- ✓ Single audit query
- ✓ Consistent format
- ✓ Negligible write overhead
- ✓ Faster incident investigation
LESSONS
Observability adalah fitur produk, bukan tambahan. Audit yang bagus membuat semua orang lebih tenang.