/System-Design

System Design Series

Primary LanguageHTML

System-Design

System design refers to the phase in the software development life cycle where the overall structure and architecture of a software system are planned and defined. This phase comes after the requirements analysis and involves translating the high-level requirements into a detailed design that can be used for implementation. Key aspects of system design in software engineering include-

  1. Architecture Design
  2. Data Design
  3. Interface Design
  4. Component-level Design
  5. Security Design

The output of the system design phase is typically a detailed design document or set of documents that serve as a guide for the implementation team. This document provides a roadmap for developers to follow when building the software system, ensuring that it meets the specified requirements and is scalable, maintainable, and robust.

Getting Started with System Design

Concepts to Understand

  • Browser
  • URL
  • DNS Resolution
  • Proxy - Forward vs Reverse
  • API Gateway
  • Firewalls
  • Security - Authentication/ Authorization, Single Sign On, Tokens
  • Load Balancer
  • Preventing system from overload
    • Rate limiting
    • Throttling
    • Load Shedding
    • Video Explanation - link
  • Monolith vs Microservice
  • Service Registry & Discovery
  • Databases - SQL, NoSQL, Vector etc
  • Transactions
  • Caching
  • CDN
  • Webservices - REST, GraphQL, GRPC
  • Message Queues
  • Distributed systems
  • Merkle tree
  • Consistent Hashing
  • Hinted Handoff
  • Bigdata
  • Data Analytics
  • AI/ML
  • Generative AI
  • LLM
  • Deployment strategies
  • Physical Datacenters
  • Cloud
  • Containers
  • CI/CD
  • Code Quality
  • Observability
  • Performance Monitoring and testing
  • Know the SLA numbers which are represented in 9's
  • Capacity Estimation
  • Scaling from 0 to Billions of requests
  • HLD vs LLD
  • How to architect for a greener future - ref

Interview Tips

  • Functional vs Non-Functional Requirements
  • Mistakes to avoid while interviewing for System Design
  • Myths around System design interviews

Understanding System Design of Popular Applications

  • Unique ID Generator in Distributed System
  • Bookmyshow
  • Messengers like WhatsApp
  • E-commerce site like Amazon
  • Youtube
  • Instagram
  • URL Shortener
  • WEB Crawler
  • Google Drive
  • S3
  • CDN
  • Key-Value Database
  • Notification System
  • Type Ahead(Autocomplete) search system
  • Payment service
  • Metrics Monitoring & Alerting
  • Lift System

Desing Patterns

  • SOLID
  • GoF Design Patterns
  • Common Patterns used in Cloud Systems
  • Common Patterns used in Distributed systsems