Estimate the scale of the system you are going to design...
Define what APIs are expected from the system...
Defining the system data model early on will clarify how data will flow among different components of the system. Also you could draw an ER diagram using the diagramming tool to enhance your design...
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
The Data Processing Layer forms the core of any Big Data architecture, serving as the engine that transforms raw data into actionable insights. It encompasses both batch and real-time processing components, enabling organizations to handle diverse data sources and processing requirements. By leveraging technologies like Apache Spark, Apache Flink, and Apache Kafka Streams, the Data Processing Layer orchestrates the ingestion, transformation, and analysis of large volumes of data with efficiency and scalability. Its seamless integration with storage solutions such as data warehouses, data lakes, and operational data stores ensures that processed data is stored appropriately for downstream analytics and decision-making.
In data processing pipelines, data can undergo multiple processing stages to derive deeper insights or refine analyses iteratively. Each processing stage applies specific transformations or algorithms to the data, refining its quality and relevance. The Medallion data architecture exemplifies this iterative processing approach, where data passes through multiple layers, including raw data ingestion, staging, transformation, and analytics, before being stored in a data warehouse or data lake. At each stage, data is refined and enriched, allowing for iterative refinement of analytical models and the generation of increasingly valuable insights for decision-making.
The Data Storage Layer serves as the repository for storing both raw and processed data in a structured and accessible manner within a Big Data architecture. It encompasses various storage solutions designed to accommodate the diverse needs of storing and managing large volumes of data efficiently.
Data Warehouse:
A Data Warehouse is a centralized repository that stores structured and organized data from various sources, optimized for analytical querying and reporting. It consolidates data from disparate sources, cleanses and transforms it into a consistent format, and enables business users to perform complex queries for insights and decision-making. In the context of the Medallion architecture, the Data Warehouse serves as a crucial component for storing refined and aggregated data ready for analytics and reporting.
Medallion Architecture:
The Medallion architecture follows a multi-layered approach to data processing and storage, facilitating iterative refinement and analysis of data. Within this architecture, the Data Storage Layer plays a pivotal role in storing data at different stages of processing, including raw data, intermediate data, and refined data. The Medallion architecture emphasizes the importance of data warehouses as a centralized repository for storing processed data, making it accessible for analytics and decision-making across the organization.
With Medallion Architecture data is divided into different layers as below
Bronze Layer:
Silver Layer:
Gold Layer:
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?