Senior LevelPHP 8+
How do you implement CQRS and Event Sourcing in enterprise PHP using Prooph or Broadway?
❓ Interview Prompt: Explain Command Query Responsibility Segregation (CQRS), Event Sourcing, replaying immutable domain event streams, and read/write separation.
In enterprise domain-driven applications, CQRS (Command Query Responsibility Segregation) separates write operations (Commands) from read operations (Queries).
Event Sourcing Architecture:
1
No State Mutation: Domain entities do not store current state columns; instead, state is derived by replaying an immutable stream of historical Domain Events ('AccountCreated', 'MoneyDeposited').
2
EventStore Database: Events are appended sequentially to an immutable EventStore SQL/NoSQL database.
3
Asynchronous Projectors: Read views (MySQL/Elasticsearch) are updated asynchronously by Projectors listening to domain event streams, optimizing query reads.
Code Implementation Example
php
<?php
// CQRS Domain Event in PHP
readonly class MoneyDepositedEvent {
public function __construct(
public string $accountId,
public int $amountCents,
public DateTimeImmutable $occurredOn
) {}
}💡Immutable CQRS Domain Event representation in enterprise PHP.
🎯 Interview Key Takeaway
CQRS and Event Sourcing separate read/write models, deriving domain state by replaying an immutable stream of domain events.
#CQRS#Event Sourcing#DDD#Architecture#Senior
Back to all PHP 8+ Questions→