System Architecture & Design Flashcards
7 cards from real CPA practice questions. Tap to flip, then mark Knew It or Still Learning โ missed cards come back until you master them.
Read the first 7 System Architecture & Design flashcards as text
What is database sharding?
Answer: Partitioning a database horizontally across multiple servers
Sharding splits a large database into smaller partitions (shards), each stored on a separate server, distributing the load and improving scalability.
Which of the following is a key characteristic of event-driven architecture?
Answer: Components react to events published to a message broker or bus
In event-driven architecture, components (producers) emit events to a broker, and other components (consumers) react to those events asynchronously, enabling loose coupling.
What is the main trade-off when choosing an eventually consistent system over a strongly consistent one?
Answer: Temporary inconsistency in exchange for better availability and partition tolerance
Eventual consistency accepts that replicas may temporarily differ, gaining higher availability and fault tolerance, which is the CAP theorem trade-off.
In software architecture, what is a 'facade'?
Answer: A simplified interface over a complex subsystem
The Facade design pattern provides a simplified, unified interface to a complex set of interfaces or subsystems, reducing client complexity.
Which term describes the degree to which one software component depends on the internals of another?
Answer: Coupling
Coupling measures the degree of dependency between software components; low coupling is desirable because it makes components easier to change independently.
What is the purpose of a load balancer in a distributed system?
Answer: To distribute incoming traffic across multiple servers
A load balancer distributes client requests evenly across a pool of servers, preventing any single server from becoming overwhelmed and improving availability.
Which design approach involves defining system behavior in terms of inputs, outputs, and transformations rather than step-by-step instructions?
Answer: Declarative/functional design
Declarative and functional design describe what the system should do (transformations on data) rather than how to do it step by step, improving clarity and testability.