System Design
- What is System?
- What is Design
- System Design
- Why System Design
- How to do System Design
- Components of System Design
- What is System Design
- Types
- Architecture
- Monolithic Architecture
- Advantages of Monolithic Architecture
- Disadvantages of Monolithic Architecture
- Distributed System/Microservices Architecture
- Advantages of Microservices Architecture
- Disadvantages of Microservices Architecture
- Latency
- Throughput
- Availability
- Consistency
- Scalability
- Redundancy and Replication
- Load Balancer
- NGINX
- Contributions
- When to use Load Balancer
- Challenges
- Solutions
- Advantages
- Load Balancing Algorithms
- Round Robin
- Least Connection Method
- Caching
- Cache Eviction
- Cache Invalidation
- Cache Consistency
- File Based Storage System
- Database
- RDBMS
- NoSQL
- Polyglot Persistance
- Normalisation
- Denormalisation
- Benefits of Denormalisation
- Drawbacks of Denormalisation
- Indexing
- Synchronous Communication
- Where Asynchronous Communication is necessary
- Message Based Communication
- Producer
- Consumer
- Agent
- P2P Model
- Public Subscriber Model
- Examples
- Kafka
- Web Server
- Difference between Web Server and Application Server
- Communication Protocols
- Models
- Pull/Polling
- Long Polling
- Push
- Socket
- Server Sent Events
- Difference between Website and Web Application
- Client and Server
- Requirement for communication between client and server
- REST
- SOA(Service Oriented Architecture)
- Advantages
- Disadvantages
- Microservices
- Tier Architecture
- Authentication vs Authorization
- Basic Authentication
- Token Based Authentication
- OAuth