The document discusses four architectural patterns:
1) Domain-driven design which focuses on structuring a system around the domain and collaborating with domain experts.
2) Command-query segregation which separates interfaces that mutate data from those that read data for clean and reusable code.
3) Command-query responsibility segregation which further separates systems for creating and reading data at a domain level.
4) Event sourcing which uses a series of events as the source of truth for a domain and materializes views from the event stream.
Related topics: