← Back to lessons|architecture
Passkeys not supported in this browser
Event Sourcing over CRUD for Audit Trails
Migrated financial transaction audit from CRUD to Event Sourcing using Kafka for immutable events and Postgres materialized views, satisfying compliance requirements.
lesson_learnedevent-sourcingaudit-trailcompliancekafkapostgres
Created 7/27/2026, 3:56:16 AM
Content
Decided to migrate from standard CRUD in PostgreSQL to Event Sourcing for financial transaction audit trails. The current approach loses business context on updates (e.g., status changes from pending to approved without user intent). Event Sourcing stores immutable domain events (TransactionCreated, TransactionApproved, StatusUpdated) via Kafka as the event log, with materialized views in Postgres for fast reads. Rejected database triggers because they lack business context. Reference: Martin Fowler's 'Event Sourcing Pattern'. Implementation in src/services/transactionService.ts (producers) and src/events/eventStore.ts (consumer/store).