Learning Outcomes:
At the end of this module student will:
•Appreciate the main issues and principles associated with distributed systems from an architectural perspective.
•Understand key distributed programming models and architectural styles, focusing on their underlying principles and trade-offs.
•Be aware of current trends in distributed system design, particularly modern architectural patterns like microservices and event-driven systems.
•Develop the ability to specify, design, and reason about the architecture of a distributed system.
•Engage with theoretical concepts through the lens of practical architectural challenges.
Indicative Module Content:
The content covers approximately 12 weeks and includes key areas such as:
* Introduction & Architectural Thinking: Exploring what distributed systems are, their challenges (Concurrency, Partial Failure, Latency, Heterogeneity), why architecture matters for properties like scalability, availability, consistency, and resilience, foundational concepts like the CAP Theorem, and an introduction to Architectural Trade-off Analysis.
* Communication & Coordination Architectures: Discussing Synchronous Communication (Request/Response patterns like REST, gRPC) and Asynchronous Communication (Messaging, Publish/Subscribe), including Event-Driven Architecture.
* Data Architecture: Addressing challenges of distributed data management, Data Replication Strategies, various Consistency Models (revisiting CAP), and Distributed Transactions patterns.
* Resilience & Observability: Identifying common failure modes and introducing Resilience Patterns (Circuit Breakers, Retries, etc.) and the importance of Observability (Logging, Metrics, Distributed Tracing).
* Architectural Patterns & Trade-offs: Taking a deep dive into modern styles like Microservices and structured methodologies for Architectural Trade-off Analysis.
* Advanced Topics: Brief introduction to concepts like Cloud-Native and Serverless architectures, and Security considerations.
The module engages with theoretical concepts through practical architectural challenges. Assessment includes Labs (20%), a Research Article Review (20%), and a significant Group Project (60%) where students apply learned principles to design and implement a distributed system.