This video demonstrates a system design interview for analyzing Snapchat filter usage. We are tasked with designing a system to track and analyze filter usage data for executives and product managers. Here's what we do:
Gather requirements: We clarify the scope of the system, including the number of filters, their dynamic nature, and the desired metrics (daily, weekly, monthly usage, and potentially hourly breakdowns).
Design the system: We propose a write-heavy system with separate read and write paths to optimize performance. The write path handles incoming events from users, while the read path aggregates and transforms data for querying.
Consider scalability: We discuss sharding and using a write-optimized database like Cassandra to handle the high volume of incoming events.
Address data aggregation: We explore using Apache Spark to process and aggregate data based on time and user demographics, storing the results in a database like DynamoDB.
Differentiate query types: We propose separate APIs for common, pre-aggregated queries and custom queries, acknowledging the potential latency differences between the two.
Gaurav Sen has conducted 1000s of system design interviews while working at Uber and building his YouTube channel to 500K+ subscribers. His platform InterviewReady combines video explainers, live Zoom classes, and an automated System Design Judge.