Modern System Architectures (L11) Flashcards
(20 cards)
Differentiate between Software Architecture and System Architecture.
Software Architecture: The logical organization and interaction of software components.
System Architecture: The instantiation of a software architecture on real machines.
What are the types of system architectures based on deployment?
Centralized, Decentralized, and Hybrid.
What is a key characteristic of a Centralized System Architecture?
Typically involves a client making requests to a central server (e.g., for a book catalog).
Give examples of Decentralized System Architectures or technologies.
- Peer-to-peer networks (e.g., BitTorrent )
- Decentralized storage solutions (e.g., Arweave, Filecoin, Sia, Storj )
- Device-to-Device (D2D) communications.
Differentiate between Stateful and Stateless system components.
Stateless: Does not keep information about the client’s status after a request is handled (e.g., doesn’t record if a file is open).
Stateful: Keeps track of the client’s status (e.g., records opened files, knows what data a client has cached). HTTP cookies are a primary way stateful interactions have been managed on the web.
What is an Architectural Style?
A family of architectures constrained by its components/connectors vocabulary, topology, and semantic constraints (rules for interacting).
What are important architectural styles for distributed systems?
- Layered architectures (e.g., TCP suite)
- Object-based architectures (e.g., RMI)
- Resource/Data-centered architectures (e.g., REST)
- Event-based architectures (e.g., Publish/Subscribe)
- Modern architectures (e.g., Microservices and serverless)
Describe the Layered Architectural Style.
Components are organized in layers. A component at layer L_i can call components at the underlying layer L_i-1, but not the other way around. Requests generally flow down, and results flow up.
What are the typical levels in Application Layering (e.g., for an internet search engine)?
User-interface level: Allows end-users to interact with applications (often client-side).
Processing level: Contains the core functionality of an application.
Data level: Contains programs that maintain the data, ensuring persistency and consistency.
Describe the Object-Based Architectural Style.
Components are objects connected through (remote) procedure calls (RPC, RMI, gRPC). Objects can be on different machines.
Describe the Resource-Centered Architectural Style (e.g., REST).
Views the system as a collection of resources managed by components. Resources are identified by a single naming scheme. Services offer a uniform interface, messages are self-described, and services are stateless after an operation.
What is a Multitiered Architecture?
An architecture where a single server is replaced by multiple servers running on distributed machines. A server can sometimes act as a client. A common example is a three-tiered architecture (presentation, application, database).
Describe the Event-Based Architectural Style (e.g., Publish/Subscribe).
Processes/Components communicate through the propagation of events. Processes publish events, and only subscribed processes receive them. This allows for loose coupling (referential decoupling).
What is the essence of Microservices architecture?
Splitting large software applications into multiple small, independently deployable services. Containerization tools like Docker and Kubernetes are often used. Communication often uses REST by default.
What is the “Database per service” pattern in microservices?
Each microservice has its own dedicated database, reducing conflicts, replication issues, and improving data access speed by avoiding locking.
Name some design patterns common in Microservices architectures.
- Database per service pattern
- Saga pattern
- API Gateway pattern
- Command Query Responsibility Segregation (CQRS)
- Asynchronous messaging pattern
What is the “API Gateway” pattern in microservices?
Hides internal service APIs behind a public one that acts as a façade or proxy, providing features like routing, composition, and translation.
What is CQRS (Command Query Responsibility Segregation)?
A pattern that decouples read operations from write (Create, Update, Delete - CUD) operations in an application.
What is Serverless Architecture?
An architecture where functions are triggered based on events. Often relies on cloud vendor tools. Individual functions can be deployed and scaled independently.
What is a Broker in distributed systems?
Middleware that manages communication among distributed objects. Messages may be transformed to match specific formats.