21 - 25 Apr 2025
Amsterdam (Netherlands)
Hotel : Grand Hotel Amrâth Amsterdam
Cost : 6000 € Euro
System design is the cornerstone of building robust, scalable, and high-performing applications in today's technology landscape. This training program provides participants with a comprehensive understanding of system design fundamentals, architectural patterns, and advanced concepts like scalability, high availability, and communication between services. With a blend of theoretical knowledge and hands-on exercises, participants will gain practical insights into creating systems that can meet the demands of modern applications.
This training is ideal for:
Software engineers and developers aiming to enhance their system design skills.
IT architects and solution designers responsible for designing scalable systems.
Technical managers and team leads overseeing software development projects.
Students or professionals aspiring to enter technical roles involving system architecture.
By the end of this training program, participants will be able to:
Understand Key Concepts: Grasp the foundational concepts of system design, including scalability, performance, and the differences between system design and software architecture.
Analyze and Apply Patterns: Identify and implement common architectural patterns such as monolithic, microservices, and event-driven architectures.
Optimize Communication: Evaluate and utilize various communication protocols like REST, WebSockets, and gRPC for effective service interaction.
Design Efficient Storage Solutions: Differentiate between relational and NoSQL databases, and implement sharding and replication strategies.
Implement Scalability and High Availability: Build systems with efficient load balancing, caching, and disaster recovery mechanisms.
Engage in Practical Exercises: Apply theoretical knowledge to real-world scenarios through hands-on activities, including analyzing web applications, designing architectures, and implementing APIs.
Day 1:
Introduction to System Design
Understanding System Design
What is system design?
Importance of scalability and performance
System design vs. software architecture
Key Terminologies & Concepts
Latency vs. Throughput
Consistency vs. Availability (CAP Theorem)
Horizontal vs. Vertical Scaling
Hands-on Exercise: Analyze how a simple web application handles requests
Day 2:
Architectural Patterns & Design Principles
Common System Design Patterns
Monolithic vs. Microservices Architecture
Event-Driven Architecture
Serverless Computing
Principles of Scalable System Design
Load Balancing
Caching Strategies
API Rate Limiting
Hands-on Exercise: Design a basic load-balanced architecture
Day 3:
Networking & Communication Between Services
Networking Basics for System Design
HTTP vs. WebSockets vs. gRPC
REST APIs vs. GraphQL vs gRPC
Message Queues & Event Streaming
Apache Kafka vs. RabbitMQ vs. Amazon SQS
Pub/Sub Messaging Model
Hands-on Exercise: Implement an API using REST and WebSockets
Day 4:
Databases & Storage Design + Scalability & High Availability Strategies
Databases / Storage Design
Relational vs. NoSQL Databases
When to use SQL (PostgreSQL, MySQL) vs. NoSQL (MongoDB, Cassandra)
Database Sharding & Replication
Partitioning Strategies
Leader-Follower Replication
Hands-on Exercise: Design a database schema
Scalability & High Availability Strategies
Scaling Systems Efficiently
Load Balancers (Nginx, AWS ELB)
Content Delivery Networks (CDN)
High Availability & Disaster Recovery
Redundancy & Failover Strategies
Handling Database Failures
Hands-on Exercise: Design a scalable web application infrastructure
Day 5:
Case Studies & Real-World System Design
System Design of Large-Scale Applications
Uber’s Architecture Overview
Netflix, Facebook & Instagram Scalability Strategies
Breaking Down a System Design Interview
How to approach design questions
Step-by-step framework for system design
Hands-on Exercise: Mock system design interview on designing