The Week-by-Week Syllabus
This syllabus is designed to take you through a structured approach, balancing theory and practical exercises over a 6-week period.
Week 1: Understanding Core Concepts
What to learn: Concepts such as CAP Theorem, Consistency Models, and Scalability Techniques.
Why this comes before the next step: Mastering these core concepts will provide the foundation you need to evaluate and design systems effectively.
Mini-project/Exercise: Create a simple document that explains the CAP theorem with examples and potential implications for system design choices.
Week 2: Designing for Scalability
What to learn: Load balancing techniques, caching strategies using Redis, and horizontal vs. vertical scaling.
Why this comes before the next step: Understanding how to scale applications is pivotal for high-traffic systems and essential for designing systems that can grow.
Mini-project/Exercise: Design and implement a basic web service that integrates Redis for caching and analyze performance improvements.
Week 3: Distributed Systems Architecture
What to learn: Microservices, service discovery, and API gateways using tools like Kubernetes and Istio.
Why this comes before the next step: Mastering distributed architecture prepares you for the complexities of modern web systems where multiple components interact.
Mini-project/Exercise: Deploy a sample microservices application on Kubernetes and implement an API Gateway to route traffic.
Week 4: Data Storage Solutions
What to learn: NoSQL vs SQL databases, data modeling for Cassandra and MongoDB, and designing for reads vs writes.
Why this comes before the next step: Understanding data storage is crucial for making informed choices that directly affect system performance and scalability.
Mini-project/Exercise: Design and implement a schema for a social media application using MongoDB and demonstrate data retrieval optimization.
Week 5: Handling Asynchronous Communication
What to learn: Message queuing with RabbitMQ and event sourcing.
Why this comes before the next step: Asynchronous communication is key to decoupling services and improving system resilience.
Mini-project/Exercise: Create a simplistic task processing system using RabbitMQ that demonstrates message queuing and processing.
Week 6: Review and Mock Interviews
What to learn: Review all concepts and participate in mock interviews focusing on system design.
Why this comes before the next step: Consolidating your knowledge through review and practice is essential for retention and confidence building.
Mini-project/Exercise: Conduct a peer mock interview where you design a system on the spot, receive feedback, and iterate on your approach.