High Level Design
A comprehensive course covering system design principles, from fundamentals to advanced architectural patterns. Learn how to design scalable, reliable, and maintainable distributed systems through theory and practical case studies.
Introduction
Introduction High Level System Design
An overview of high-level system design principles and practices in software engineering.
System Design Interview Process
An in-depth guide to preparing for and excelling in High-Level Design interviews, with strategies, common questions, and best practices.
Back of the envelope Calculations
Back-of-the-envelope calculations are crucial in system design for quick, approximate estimations.
Core System Design Principles
Scalability Fundamentals
Discover importance of scalability in software systems, effective strategies for handling increased demands while ensuring peak performance and user satisfaction.
Availability
An engaging and technically rich guide to understanding availability in system design.
Reliability
Build resilient applications capable of managing unforeseen failures or interruptions with expected behaviors.
Maintainability
Ensure that your system can be easily updated, extended and fixed over time
Performance and Latency
The delay between initiating an action in a software system and receiving the desired outcome
Components
Load Parameters in Scalability
Observing, Tracking, and Gathering data
Load Balancing
Observing, Tracking, and Gathering data
Embracing Microservices
Microservices architecture
Building Fault-Tolerant Systems
Learn about modern strategies to build fault tolerant systems
Implementing Redundancy
Minimize downtime and ensure seemless operations.
Content Delivery Networks (CDNs)
Enhancing performance with CDNs.
Caching
Improve application performance and reduce server load
Monitoring and Logging
Observing, Tracking, and Gathering data
Documentation
The delay between initiating an action in a software system and receiving the desired outcome
Application Programming Interface
How Application Communicate with each other and with different protocols
Database Masterclass
Database Concepts
Mastering Essential Database Concepts
ACID in Database Systems
Understanding ACID properties of a Database
Evolution of Databases
Evolution of Databases
How to Choose a Database for Your System Design
Learn when to use which storage mechanism
Data Models and Query Languages
Achieving High Availability in Software Systems: A Technical Tutorial
Mastering Sharding
Microservices architecture
Common Frameworks
Networking Basics
Interview Centric
Designing a URL Shortener like Bitly
Designing a URL Shortener is a very common problem that many Interviewers like to ask.
Pastebin System Design
Designing Pastebin is a very common problem that many Interviewers like to ask.
Instagram System Design
Designing Instagram is a very common problem that many Interviewers like to ask.
Practice Questions