The Week-by-Week Syllabus
This path is designed to be completed in 8 weeks, with each week building on the previous one to deepen your understanding and skills.
Week 1: Understanding Core Principles
What to learn: Core principles of system design, including scalability, consistency, and availability.
Why this comes before the next step: Grasping these principles provides the foundation required for effective architecture, enabling you to make informed decisions when designing systems.
Mini-project/Exercise: Create a one-page design document for a scalable e-commerce application, clearly outlining core principles.
Week 2: Microservices Architecture
What to learn: Microservices architecture using Spring Boot and Docker.
Why this comes before the next step: Mastering microservices is crucial for designing distributed systems that are maintainable and scalable.
Mini-project/Exercise: Build a simple microservices application that handles user authentication and product management.
Week 3: Caching Mechanisms
What to learn: Implement caching strategies using Redis and Memcached.
Why this comes before the next step: Efficient caching can greatly improve system performance and understand how to balance between cache and database interactions.
Mini-project/Exercise: Enhance your microservices application by implementing caching for frequently accessed data.
Week 4: Data Storage Solutions
What to learn: Using Cassandra and PostgreSQL for varying data storage needs.
Why this comes before the next step: Understanding different databases helps you choose the right tool for the job, depending on the requirements.
Mini-project/Exercise: Refactor your application to use both Cassandra for transactional data and PostgreSQL for analytical queries.
Week 5: Asynchronous Processing
What to learn: Implementing message queues with RabbitMQ or Kafka.
Why this comes before the next step: Asynchronous processing is essential for handling high loads and improving system responsiveness.
Mini-project/Exercise: Integrate a messaging system into your application for processing orders asynchronously.
Week 6: API Design and Security
What to learn: Designing RESTful APIs and implementing security measures using OAuth and JWT.
Why this comes before the next step: A solid API design is crucial for the integration of various components of your system.
Mini-project/Exercise: Create a secure API for your existing application with authentication and authorization mechanisms.
Week 7: Monitoring and Performance Testing
What to learn: Setting up monitoring using Prometheus and performance testing with JMeter.
Why this comes before the next step: Monitoring allows you to identify bottlenecks and ensure your system can handle expected loads.
Mini-project/Exercise: Set up monitoring for your application and run performance tests to identify areas for improvement.
Week 8: System Design Interviews Practice
What to learn: Practicing system design interviews with peers, focusing on articulating design decisions.
Why this comes before the next step: Practical experience in interviews reinforces your understanding and prepares you for real-world scenarios.
Mini-project/Exercise: Conduct mock interviews with peers, focusing on feedback and iterative improvement of your design communication.