Laravel

Membangun Sistem Anti-Mainstream: Implementasi Event Sourcing di Laravel dengan Verbs

Kholil · 28 Jul 2026 · 4 min read · 1 views
Membangun Sistem Anti-Mainstream: Implementasi Event Sourcing di Laravel dengan Verbs

Pelajari cara implementasi Event Sourcing di Laravel menggunakan framework Verbs untuk menjaga data tetap immutable, aman, dan mudah di-audit.

Pernah nggak sih kamu merasa database aplikasi kamu itu kayak kertas catatan yang dicoret-coret? Kamu update data, terus data lama hilang, dan tiba-tiba ada bug yang bikin datanya jadi nggak konsisten. Kamu bingung nanya, "Siapa yang ngubah ini? Kapan? Kenapa?" Nah, di sinilah konsep Event Sourcing datang sebagai pahlawan kesiangan. Daripada cuma nyimpen 'state' terakhir, kita nyimpen sejarah perubahannya.

Kalau di Laravel, biasanya kita pakai Eloquent yang sifatnya CRUD (Create, Read, Update, Delete). Tapi, gimana kalau kita bisa bikin data kita jadi immutable (nggak bisa diubah) dan bisa di-audit dengan sempurna? Itulah kenapa framework Verbs hadir. Verbs bikin implementasi Event Sourcing di Laravel jadi jauh lebih manusiawi, nggak se-seram yang dibayangkan di buku teks arsitektur.

Apa Itu Event Sourcing dan Kenapa Harus Peduli?

Secara sederhana, Event Sourcing adalah cara menyimpan perubahan data sebagai rangkaian events (kejadian). Bayangin rekening bank. Bank nggak cuma nyimpen saldo kamu Rp 1.000.000. Mereka nyimpen: 'Setor 500k', 'Tarik 100k', 'Setor 600k'. Kalau saldo kamu saat ini Rp 1.000.000, itu cuma hasil kalkulasi dari semua history tadi.

Dengan cara ini, kamu punya audit log yang permanen. Kalau ada yang aneh, kamu bisa 'replay' kejadiannya dari nol. Ini sangat ampuh buat sistem finansial, sistem reservasi, atau sistem apa pun yang datanya krusial dan butuh transparansi tinggi.

Kenapa Harus Pakai Verbs?

Framework Verbs, yang dikembangkan oleh tim di balik Spatie, adalah game-changer untuk Laravel. Verbs menangani kerumitan infrastruktur event-store, snapshots, dan project-state sehingga kamu bisa fokus ke logika bisnis. Alih-alih pusing memikirkan bagaimana cara menyimpan ribuan event, Verbs sudah menyiapkan struktur yang rapi dan developer-friendly.

Langkah Pertama: Persiapan

Pertama, pastikan kamu sudah punya project Laravel yang fresh. Instalasi Verbs cukup mudah via Composer:

composer require spatie/laravel-verbs

Setelah itu, jalankan migrasi bawaannya. Verbs bakal bikin tabel untuk nyimpen semua event kamu secara otomatis. Ini adalah langkah kunci agar data kamu tetap terjaga integritasnya.

Mendefinisikan Event

Di Verbs, kamu mendefinisikan event sebagai kelas PHP sederhana. Contohnya, kita buat sistem 'Deposit' untuk sebuah akun:

namespace App\Events;

use Spatie\Verbs\Event;\n
class MoneyDeposited extends Event
{
    public function __construct(
        public int $accountId,
        public int $amount,
    ) {}
}

Menggunakan State

Nah, di sini serunya. State adalah representasi dari data kamu saat ini. Berbeda dengan model biasa, state ini dibentuk dari event yang pernah terjadi.

namespace App\States;

use Spatie\Verbs\State;\n
class AccountState extends State
{
    public int $accountId;
    public int $balance = 0;

    public function applyMoneyDeposited(MoneyDeposited $event)
    {
        $this->balance += $event->amount;
    }
}

Keuntungan Utama: Audit dan Time-Travel

Karena setiap tindakan disimpan sebagai event, kamu bisa kapan saja melihat sejarah akun. Mau tahu saldo kamu tiga bulan lalu? Gampang banget. Kamu tinggal replay event sampai tanggal tersebut. Fitur ini hampir mustahil dilakukan dengan arsitektur CRUD tradisional kecuali kamu membuat sistem logging manual yang ribet banget.

Event Sourcing bukan cuma tentang teknik simpan data, tapi tentang mengubah pola pikir kita dalam mendokumentasikan bisnis proses.

Tantangan yang Harus Dihadapi

Tentu saja, nggak ada teknologi yang sempurna. Event Sourcing punya kurva belajar yang cukup curam. Debugging bisa jadi lebih menantang karena datanya tersebar di banyak event. Kamu juga harus memikirkan strategi 'Snapshotting' supaya performa aplikasi nggak drop pas sistem sudah punya jutaan event.

Selain itu, arsitektur ini memakan storage yang lebih banyak karena setiap perubahan disimpan. Tapi, dengan harga storage yang makin murah saat ini, ini biasanya jadi kompromi yang sangat layak demi keamanan dan histori data yang valid.

Kesimpulan

Mengimplementasikan Event Sourcing di Laravel dengan Verbs adalah langkah besar bagi developer yang menginginkan sistem lebih robust dan transparan. Meskipun terdengar kompleks, Verbs menyederhanakan prosesnya sehingga kita bisa mendapatkan keuntungan dari arsitektur event-driven tanpa harus menulis boilerplate yang terlalu banyak.

Buat kamu yang sedang membangun sistem dengan persyaratan audit ketat atau sekadar ingin belajar arsitektur modern, cobain deh Verbs. Siapa tahu, sistem kamu yang tadinya sering error jadi jauh lebih stabil setelah beralih ke pola ini.