My default architecture for multi-tenant B2B SaaS is event-sourced: commands produce immutable events, read models are projections you can rebuild anytime. Why I like it — audit trail, full history, and strict tenant isolation aren't features I bolt on later, they fall out of the model itself.
But I keep meeting sharp devs who think ES is over-engineering for most SaaS: more moving parts, eventual-consistency headaches, harder onboarding — and a plain CRUD + audit_log table would've shipped faster.
Genuinely trying to find the line, not defend a position:
Not selling anything — this is the reference architecture I keep reaching for and I want it stress-tested.