System Architecture and Distributed Architectures
Objective and Context
The lecturer aims to include at least one objective slide per lecture to highlight high points and takeaways. Some lectures will have multiple slides serving as a quick reminder of key takeouts.
Today is definition-heavy: focus on defining what a system is, what architecture means, the environment the system exists in, and what system architecture encompasses.
The goal is to understand how fundamental properties and patterns of relationships, connections, constraints, and environmental interactions form a system’s architecture.
Definitions: System, Boundary, Subsystems, and Environment
System: a collection of components linked together and organized to accomplish a task, with a defined boundary that separates it from the environment.
Formal idea: a system is a grouping of things connected to achieve a purpose, with a boundary that differentiates the system from everything outside it.
Subsystems: many systems contain subsystems. Example: a computer as a system with a case boundary containing multiple components, each with their own sub-systems.
Computer-level subsystems example:
CPU (central processing unit) contains subcomponents for processing instructions: decode, execute, etc.
Memory stores values; within memory there are cells that store data, track free space, move data between storage and CPU, etc.
Boundary and environment:
The boundary is important because it distinguishes the system from the environment.
The environment interacts with the system in ways that differ from internal components; this external interaction is a key consideration in architecture.
System Architecture: Definition and Scope
System architecture is the set of fundamental properties and patterns of relationships, connections, and constraints that define how the system is linked together and how it interacts with its environment.
It answers:
What composes the system and what does not compose the system?
How do the components and non-components (non-constituents) interact?
What is the system’s behavior, and how do all pieces work together over time?
The definition is lofty and abstract, but in practice it becomes clearer and more well-defined when applied to real systems.
Distributed Process Systems: Where the Action Happens
In many real-world systems, actions occur both locally and remotely, i.e., distributed process systems.
The most common distributed pattern is the client-server architecture, which will be discussed in detail.
The emphasis is on how distributed architectures organize tasks across multiple devices or locations rather than a single monolithic computer.
Client-Server Architectures: Concepts and Variants
Core idea: a client requests services or data from a server; the server provides the service or data.
Simple example often used: a web client (your browser) requests a page from a web server (e.g., on Brightspace).
In a typical simple flow:
You as a web client request a page from a web server.
The web server serves the page that contains data (e.g., content) but may need additional data from other services.
Email example to illustrate multi-tier interactions:
A web client requests your mail page from a web server (e.g., mail.google.com or outlook.office.com).
The page contains mail data which the web server must retrieve from a mail server, turning a single client-server interaction into a multi-tier interaction.
This brings the scenario to a 3-tier architecture: client → web server → mail server (data source).
Real-world complexity often involves many more entities; modern requests can involve around 10 different entities or services.
Authentication and security add layers: logging in triggers credential checks and MFA (multi-factor authentication), complicating the interaction flow beyond a simple client-server model.
Cloud computing is described as an evolved version of client-server where most work happens on the server side (in the cloud) and less on the client.
The term "cloud" will be revisited and clarified in a future lecture.
Two-Tier, Three-Tier, and Multi-Tier Architectures
Dual (two-tier) architecture: two entities involved – typically a client and a server.
Notation: 2-tier architecture.
Three-tier architecture: adds an intermediate server (e.g., a web server) between the client and the data source/server-side service.
Notation: 3-tier architecture.
Example flow: web client requests a page from a web server; the web server may request data from a separate mail server to populate the page (as in the mailbox example).
In practice, modern requests can involve many more than three tiers and entities; the term "tier" is used to describe logical separation of roles and services, not just physical machines.
Cloud Computing: Evolved Client-Server Model
Cloud computing moves more processing and data storage to remote servers, reducing the work required on the client side.
Key idea: most or all of the work is done on the cloud/server side rather than on the client device.
Why cloud is a "fun word": it represents a shift in where computation and data reside and how services are delivered, not a single technology.
Peer-to-Peer (P2P) Computing: Equal Partners in a Network
P2P involves multiple peers that are equal and can both request and provide resources/services to others in the network.
Contrast with client-server: in P2P, peers are not strictly clients or servers; they can act as both.
Common associations:
P2P is often described in the context of torrenting and piracy, where files are shared across a network without a central server.
Even in typical downloads, many download servers may be peered together to distribute load and improve availability; this is a form of distributed sharing behind the scenes (e.g., content delivery networks rely on distributed resources).
Practical takeaway: P2P is a premier pattern for many file-sharing and content-distribution scenarios, leveraging multiple equal participants to improve resilience and scalability.
Real-World Examples and Scenarios Mentioned
Brightspace web page: a typical web client request to Brightspace’s web server, illustrating client-server interaction.
Authentication flow: logging in triggers credential checks, MFA, and other security steps, showing how security layers integrate with architecture beyond the basic client-server model.
Gmail/Outlook flows: client to web server and the need to fetch mail from a separate mail service, illustrating cross-service interactions and multi-tiered design.
General reminder: modern web services often involve a web client, a web server, authentication services, data services (e.g., mail servers), and possibly cloud-based backends.
Connections to Foundational Principles and Real-World Relevance
Boundary vs environment: understanding where the system ends and the environment begins helps define interfaces and interaction points, which is critical for design, security, and integration.
Modularity and subsystems: recognizing that large systems contain nested subsystems (e.g., CPU, memory) supports the concept of encapsulation and separation of concerns.
Layering and interactions: client-server and multi-tier architectures illustrate how responsibilities are separated across layers to improve scalability, maintainability, and flexibility.
Evolution from local to distributed to cloud: the progression highlights architectural trade-offs between client load, latency, control, and cost.
Ethical, Philosophical, and Practical Implications
P2P and piracy discussions: P2P networks enable sharing among equals, which has practical benefits (distribution, resilience) but ethical and legal implications when used for pirated content.
Centralization vs. decentralization: cloud computing centralizes trust and control on the provider side, raising privacy and dependency considerations, while P2P distributes load and data but can raise security and trust concerns.
Privacy and security: multi-tier and MFA add security layers but also complexity; security design must account for cross-service interactions and potential single points of failure.
Scalability and load balancing: real-world systems rely on distributing work across multiple entities to avoid overloading any single component, a principle evident in the discussion of CDNs and multi-entity flows.
Quick Takeaways
A system is a boundary-defined collection of components that work together to accomplish a task; boundaries separate the system from its environment.
Subsystems are common (e.g., CPU has decoders/executors; memory has cells for data and management).
System architecture combines the components, how they interact, their constraints, and their environmental interactions to define behavior.
In distributed systems, client-server is dominant, with several tiers (two-tier, three-tier, and multi-tier) to support complex services.
Cloud computing pushes more work to the server side and relies on centralized or distributed cloud resources.
Peer-to-peer networks distribute roles among peers, enabling scalable and resilient file sharing and content delivery.
Real-world flows include authentication, MFA, and cross-service data access, illustrating the complexity beyond simple client-server models.