Digital Transformation
Event Sourcing
TL;DR: Event Sourcing menyimpan setiap perubahan data sebagai event yang tidak bisa diubah, lalu state saat ini dihitung ulang dari urutan event tersebut. Pola ini dipakai di sistem yang butuh audit trail penuh, seperti pembayaran, asuransi, atau tracking inventory. Trade-offnya adalah kompleksitas baca dan kebutuhan strategi snapshot.
Apa itu Event Sourcing?
Pada aplikasi tradisional, ketika pelanggan mengubah alamat, kolom alamat di tabel pelanggan ditimpa nilai baru. Nilai lama hilang. Event Sourcing membalik logika ini. Setiap aksi disimpan sebagai event seperti AlamatDitambahkan, AlamatDiganti, atau AlamatDihapus, dengan stempel waktu dan metadata. State terkini diturunkan dengan memutar ulang event dari awal.
Pola ini sering disandingkan dengan CQRS untuk memisahkan model tulis (event) dan model baca (projection). Untuk konteks performa, projection biasanya disimpan di tabel terpisah dan di-cache lewat stale-while-revalidate.
Karakteristik Utama
| Aspek | CRUD biasa | Event Sourcing |
|---|---|---|
| Sumber kebenaran | Tabel state akhir | Log event imutable |
| Audit trail | Harus dibuat manual | Otomatis, lengkap |
| Replay riwayat | Sulit | Native, mudah |
| Kompleksitas baca | Rendah | Tinggi (perlu projection) |
| Storage | Lebih hemat | Lebih besar, butuh snapshot |
Kenapa Penting?
Di proyek fintech atau e-commerce dengan transaksi tinggi, regulator sering meminta jejak audit yang lengkap. Event Sourcing menjadikan audit trail sebagai produk sampingan natural, bukan fitur tambahan. Dari pengalaman saya membantu tim engineering memutuskan arsitektur, pola ini cocok untuk domain dengan banyak transisi state, misal status pesanan atau klaim asuransi. Tidak cocok untuk CRUD sederhana karena overhead-nya besar.
Pendekatan ini juga selaras dengan [observability](/glosarium/observability-coming-soon) modern karena setiap perubahan punya konteks lengkap untuk diinvestigasi saat insiden.
Pertanyaan Umum
Apakah Event Sourcing sama dengan log tabel biasa?
Tidak. Log tabel biasa hanya pencatat tambahan. Pada Event Sourcing, log adalah satu-satunya sumber kebenaran dan state lain diturunkan darinya.
Bagaimana menangani volume data yang terus bertambah?
Pakai snapshot berkala. Setiap N event, simpan state akumulatif sehingga rebuild tidak harus dari event pertama.
Apakah cocok untuk semua aplikasi?
Tidak. Aplikasi CRUD sederhana cukup pakai pendekatan biasa. Event Sourcing memberi nilai pada domain dengan jejak audit penting atau analitik historis.
Istilah Terkait