CDS Architecture & System Design 3 — Questions and Answers
Question 1: Which design principle states that a microservice should own its own database and not share it with other services?
- Database-per-Service pattern (Correct answer)
- Saga pattern
- Shared kernel pattern
- Anti-corruption layer pattern
Correct answer: Database-per-Service pattern
The Database-per-Service pattern ensures loose coupling by giving each microservice exclusive ownership of its data store, preventing tight schema dependencies.
Question 2: A data steward is reviewing a proposed architecture where operational and analytical workloads share the same database. What is the PRIMARY risk?
- Increased storage costs due to duplicate indexes
- OLTP transactions will contend with OLAP queries, degrading performance for both (Correct answer)
- The lack of a separate ETL layer will prevent data transformation
- Audit logs will be harder to maintain without a separate schema
Correct answer: OLTP transactions will contend with OLAP queries, degrading performance for both
Mixing OLTP and OLAP workloads on the same system causes resource contention, where long-running analytical queries block or slow transactional operations.
Question 3: What is 'eventual consistency' in the context of distributed data systems?
- All nodes will have identical data at the exact same moment after each write
- Given enough time without new updates, all replicas will converge to the same value (Correct answer)
- Data is consistent only after a manual reconciliation process is run
- The system guarantees consistency only during business hours
Correct answer: Given enough time without new updates, all replicas will converge to the same value
Eventual consistency is a model where replicas may temporarily diverge but are guaranteed to converge to the same state once updates stop propagating.
Question 4: In a data lakehouse architecture, what technology component typically enables ACID transactions on data lake storage?
- HDFS NameNode
- Apache Kafka
- Open table formats such as Apache Iceberg or Delta Lake (Correct answer)
- A traditional RDBMS metadata catalog
Correct answer: Open table formats such as Apache Iceberg or Delta Lake
Open table formats like Delta Lake and Apache Iceberg add a transaction log layer over object storage, enabling ACID semantics on data lakes.
Question 5: Which strategy should a data steward recommend when integrating a new system with a legacy application to prevent the new system's domain model from being corrupted by legacy concepts?
- Shared database integration
- Anti-Corruption Layer (ACL) (Correct answer)
- Published Language pattern
- Conformist pattern
Correct answer: Anti-Corruption Layer (ACL)
An Anti-Corruption Layer translates between the legacy system's model and the new system's model, isolating the new domain from legacy concepts.
Question 6: What is a 'data product' in the context of data mesh architecture?
- A commercial analytics dashboard sold to customers
- A self-contained, discoverable data asset with defined SLAs owned by a domain team (Correct answer)
- A denormalized table optimized for BI reporting
- A packaged ETL workflow managed by the central data engineering team
Correct answer: A self-contained, discoverable data asset with defined SLAs owned by a domain team
A data product is an autonomous, domain-owned data asset that is discoverable, addressable, understandable, trustworthy, and natively accessible.
Question 7: Which architectural decision directly supports data lineage tracking across a complex pipeline?
- Using columnar storage formats for all analytical tables
- Implementing an event-driven architecture with immutable event logs (Correct answer)
- Partitioning tables by ingestion date
- Using stored procedures for all data transformations
Correct answer: Implementing an event-driven architecture with immutable event logs
Immutable event logs in an event-driven architecture preserve a complete, auditable history of data changes that can be replayed to reconstruct lineage.
Which design principle states that a microservice should own its own database and not share it with other services?