1. Konsep Dasar CQRS
CQRS (Command Query Responsibility Segregation) adalah pola arsitektur yang memisahkan operasi **Command** (penulisan, pembaruan, penghapusan data) dan **Query** (pembacaan data).
- Command Side (Write Model): Berfokus pada validasi bisnis, transaksi ACID, dan integritas data. Menggunakan RDBMS (misal PostgreSQL).
- Query Side (Read Model): Berfokus pada pencarian super cepat, penampilan laporan, dan denormalisasi data. Menggunakan Read Store yang dioptimalkan (misal Elasticsearch atau Redis).
- Synchronization Engine: Menggunakan Asynchronous Event Stream (Kafka / Change Data Capture) untuk meng-update Read Store secara real-time saat Write DB berubah.
Alur Arsitektur CQRS
[ Client Write ] ───> ( Command API ) ───> [ Write DB (PostgreSQL) ]
│
( Domain Event )
│
▼
[ Event Bus / Kafka ]
│
▼
[ Client Read ] <─── ( Query API ) <─── [ Read DB (Elasticsearch) ]