2System architecture design
- 2.1Fundamentals of system architecture design
Covers functional allocation—deciding whether a required function is realized in hardware, software, or a manual procedure—and the practice of method selection, choosing the most appropriate architecture by weighing trade-offs across performance, cost, availability, and maintainability.
- 2.2Centralized vs. distributed processing & client/server
Covers the trade-off between centralized processing, which concentrates processing in one place, and distributed processing, which spreads it across multiple sites or machines, and how to judge processing placement between two-tier (logic held on the client) and three-tier (separating presentation, application, and data) client/server architectures.
- 2.3Web multi-tier architecture
Covers the presentation, application, and data tiers as the Web evolution of three-tier client/server, stateless design in which a server holds no client state, externalizing session state to an external store, and scaling out—adding server instances to handle load.
- 2.4SOA and microservices
Covers SOA, which loosely couples functionality as services, its evolution into microservices—services split fine enough to deploy independently—how to judge service boundaries along domain lines, and how to accept the distribution tax of eventual consistency and operational complexity.
- 2.5Event-driven architecture and messaging
Covers the differing roles of message queues (MQ), ESB, and API Gateway for asynchronous service integration, loosely coupled integration via event-driven architecture, and the ever-present concerns of message ordering, duplicate delivery, and eventual consistency in asynchronous integration.

