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.