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-
- Architecture Design
- Data Design
- Interface Design
- Component-level Design
- 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
- 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
- Functional vs Non-Functional Requirements
- Mistakes to avoid while interviewing for System Design
- Myths around System design interviews
- Unique ID Generator in Distributed System
- Bookmyshow
- Messengers like WhatsApp
- E-commerce site like Amazon
- Youtube
- 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
- SOLID
- GoF Design Patterns
- Common Patterns used in Cloud Systems
- Common Patterns used in Distributed systsems