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:
Once the data arrives in Gold Layer, multiple consumers can start consuming the data and perform various experiments over it. Processes like Demand Forecasting, Deeper insights using machine learning, recommendation generation etc. can be done using the data.
This layer is similar to Data Processing Layer, where multiple pipelines are created to get the data from Gold Layer and passed on to Machine Learning Algorithms.
For this layer pre-trained models can be used which are available with most cloud service providers. the output of these models can be stored in a different layer. This will be consumed further by Data Visualization Tools and other pipelines.
The Data Visualization Layer serves as a critical component within a data architecture, transforming complex datasets and analytical findings into intuitive and visually engaging representations. It plays a pivotal role in facilitating understanding, decision-making, and communication of insights derived from data analysis. By leveraging various visualization techniques and tools, organizations can effectively convey patterns, trends, and relationships within data to stakeholders across different levels of expertise. Ultimately, the Data Visualization Layer acts as a bridge between raw data and actionable insights, empowering users to derive meaning and make informed decisions based on data-driven evidence.
Tools like Tableau, Power BI, Graphana etc are used to create various visuals.
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?