āĻāĻāĻŋ āĻāĻāĻāĻŋ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϝā§āĻāĻžāύ⧠āϏāĻŋāϏā§āĻā§āĻŽ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰ āĻŽā§āϞāĻŋāĻ āĻāĻŋāύāĻŋāϏāĻā§āϞ⧠āύāĻŋā§ā§ āĻāϞā§āĻāύāĻž āĻāϰāĻž āĻšā§ā§āĻā§āĨ¤
āĻāĻŽāĻŋ āϏāĻžāĻā§āϏā§āĻ āĻāϰāĻŦā§ āϝāĻāύ āĻāĻŽāĻžāϰ āϏāĻŦ āĻāĻĒāĻŋāĻ āϞā§āĻāĻž āĻšā§ā§ āϝāĻžāĻŦā§ āϤāĻāύ āĻāĻĒāύāĻžāϰāĻž āĻāĻžāĻāϞ⧠āĻāĻžāύā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§ āĻāϰāĻŦā§āύ
[āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋā§āĻžāϞ āĻāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻāĻĒāύāĻžāĻā§ āĻŽā§āϞāĻŋāĻ āĻāĻŋāύāĻŋāϏāĻā§āϞā§āϰ āϧāĻžāϰāĻŖāĻž āĻĻā§ā§āĻž]
[āĻāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻāĻ āĻāύāĻā§āύā§āĻ āĻĒā§ā§ āĻāĻžāϞ⧠āϞāĻžāĻā§, āĻāĻĒāύāĻŋ āĻāĻžāĻāϞ⧠āĻāĻŽāĻžāĻā§ āĻāĻĢāĻŋ āϏā§āĻĒāύāϏāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, https://www.buymeacoffee.com/lahin31]
- Section 1: System Design
- Section 2: Database - SQL and NoSQL
- Section 3: Client Server Architecture
- Section 4: Reliability
- Section 5: Performance Metrics
- Section 6: Distributed System
- Section 7: Domain Name System
- Section 8: Functional and Non Functional Requirements
- Section 9: Back Of the Envelope Estimation
- Section 10: Stateful and Stateless Architecture
- Section 11: Proxy
- Section 12: REST API
- Section 13: Scalability
- Section 14: Sharding
- Section 15: Database Replication
- Section 16: Caching
- Section 17: Content Delivery Network
- [Section 18: Consistent Hashing] (āĻāϞāĻŽāĻžāύ)
- [Section 19: CAP Theorem] (āĻāϞāĻŽāĻžāύ)
- [Section 20: Distributed Messaging System] (āĻāϞāĻŽāĻžāύ)
- [Section 21: Design URL Shortener] (āĻāϞāĻŽāĻžāύ)
- [Section 22: Design a Rate Limiter] (āĻāϞāĻŽāĻžāύ)
- [Section 23: Design a Chat System] (āĻāϞāĻŽāĻžāύ)
- [Section 24: Design a Notification System] (āĻāϞāĻŽāĻžāύ)
- [Section 25: Design High Availability & Resilience System] (āĻāϞāĻŽāĻžāύ)
- [Section 26: How Discord Stores Trillions of Messages] (āĻāϞāĻŽāĻžāύ)
- [Section 27: How Grab stores and processes millions of orders daily] (āĻāϞāĻŽāĻžāύ)
- Section 28: Resources
āĻāĻŽāϰāĻž āϝāĻāύ āĻā§āύ āĻāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĄā§āĻā§āϞāĻĒ āĻāϰāϤ⧠āϝāĻžāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒā§āϰāĻāĻžāϰā§āϰ āĻĄāĻŋāĻāĻžāĻāύ āĻŽā§āύ⧠āĻāϞāϤ⧠āĻšā§, āϤāĻžāϰ āĻāĻžāϰāĻŖ āĻšāϞ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āĻā§āύ āĻāĻ āϏāĻŽā§ āĻĨā§āĻā§ āϝāĻĻāĻŋ āĻĒā§āϰāĻā§āϰ āĻŽāĻžāύā§āώ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰāϤ⧠āĻĨāĻžāĻā§, āϤāĻāύ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻĒā§āϞāĻŋāĻā§āĻļāύ āϝāĻžāϤ⧠āĻĒā§āϰāĻā§āϰ āϞā§āĻĄ āĻāĻžāϞā§āĻāĻžāĻŦā§ āύāĻŋāϤ⧠āĻĒāĻžāϰ⧠āĻā§āύ āĻĒā§āϰāĻāĻžāϰā§āϰ āĻāĻžāύā§āĻāĻļāύ āύāώā§āĻ āĻŦāĻž āĻĒāĻžāϰāĻĢāϰāĻŽā§āύā§āϏ āĻĄāĻžāĻāύ āĻšāĻā§āĻž āĻāĻžā§āĻž āϏā§āĻāύā§āϝāĨ¤ āϏā§āĻ āĻĄāĻŋāĻāĻžāĻāύ āĻā§ āĻŦāϞāĻž āĻšā§ āϏāĻŋāϏā§āĻā§āĻŽ āĻĄāĻŋāĻāĻžāĻāύāĨ¤
(āĻāĻ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻĄāĻŋāĻāĻžāĻāύ āĻŽā§āϞāϤ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻāĻā§āĻāĻŋāύāĻŋā§āĻžāϰāĻŋāĻ āĻāϰ āϏāĻžāĻĨā§ āϏāĻŽā§āĻĒā§āĻā§āϤāĨ¤)
āĻāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĄā§āĻā§āϞāĻĒ āĻāϰāĻžāϰ āϏāĻŽā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻ āĻ āύā§āϝāĻžā§ā§ āĻĄā§āĻāĻžāĻŦā§āϏ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāϤ⧠āĻšā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ, āĻāĻŽāϰāĻž āĻĒā§āϰāϧāĻžāύ āĻĻā§āĻ āϧāϰāύā§āϰ āĻĄā§āĻāĻžāĻŦā§āϏ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĨāĻžāĻāĻŋ - SQL(āϰāĻŋāϞā§āĻļāύāĻžāϞ) āĻĄā§āĻāĻžāĻŦā§āϏ āĻāĻŦāĻ NoSQL(āύāύ-āϰāĻŋāϞā§āĻļāύāĻžāϞ) āĻĄā§āĻāĻžāĻŦā§āϏāĨ¤ āĻāĻŽāϰāĻž āĻā§āĻŽāύ āĻŦāĻž āĻā§āύ āϧāϰāĻŖā§āϰ āĻĄāĻžāĻāĻž āώā§āĻā§āϰ āĻāϰāϤ⧠āĻāĻžāĻ, āĻāĻŋāĻāĻžāĻŦā§ āώā§āĻā§āϰ āĻāϰāϤ⧠āĻāĻžāĻ, āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§āϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻāϤā§āϝāĻžāĻĻāĻŋ āĻĒā§āϰā§ā§āĻāύ āĻ āύā§āϝāĻžā§ā§ āĻĄā§āĻāĻžāĻŦā§āϏ āĻŦāĻžāĻāĻžāĻ āĻāϰāϤ⧠āĻšā§āĨ¤ āĻĄāĻžāĻāĻžāϰ āϧāϰāύ āĻ āύā§āϝāĻžā§ā§ āĻĄā§āĻāĻžāĻŦā§āϏāĻā§āϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāĻŋāύā§āύ āĻāĻŋāύā§āύ āϏā§āĻŦāĻŋāϧāĻž āĻĻāĻŋā§ā§ āĻĨāĻžāĻā§āĨ¤
SQL | NoSQL |
---|---|
āĻā§āĻŦāĻŋāϞā§āϰ āĻŽāϧā§āϝ⧠āĻĄāĻžāĻāĻž āϏā§āĻā§āϰ āĻāϰāĻž āĻšā§, āϝā§āĻāĻžāύ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋ āĻāĻāĻāĻŋ āĻāύā§āĻāĻŋāĻāĻŋ āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāϞāĻžāĻŽ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āύāĻŋāĻĻā§āϰā§āĻļāύ āĻāϰā§āĨ¤ āĻā§āĻŦāĻŋāϞāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠relation āĻĨāĻžāĻā§āĨ¤ | āĻā§āύ āĻĒā§āϰāĻāĻžāϰ relation āĻāĻžā§āĻž āĻĄāĻžāĻāĻž āĻŦāĻŋāĻāĻŋāύā§āύāĻāĻžāĻŦā§ āώā§āĻā§āϰ āĻāϰ⧠āĻĨāĻžāĻā§āĨ¤ āϝā§āĻŽāύāĻ key-value, graph, document āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤ |
āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏā§āĻāĻŋāĻŽāĻž āĻ āύā§āϝāĻžā§ā§ āĻĄāĻžāĻāĻž āϏā§āĻā§āϰ āĻāϰāĻž āĻšā§āĨ¤ (āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏā§āĻāĻŋāĻŽāĻž āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āϝāĻžā§āĨ¤) | NoSQL āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āϏā§āĻāĻŋāĻŽāĻž āĻĨāĻžāĻā§, āĻ āϰā§āĻĨāĻžā§ āϏā§āĻāĻŋāĻŽāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύāϝā§āĻā§āϝāĨ¤ |
đ āĻāϰāĻ āĻĒā§ā§āύ: āĻĄā§āĻāĻžāĻŦā§āϏ
āĻā§āϞāĻžā§ā§āύā§āĻ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻāϰāĻŦā§ āϏāĻžāϰā§āĻāĻžāϰāĻā§ āĻāĻŋāĻā§ āϏā§āĻĒā§āϏāĻŋāĻāĻŋāĻĢ āϰāĻŋāϏā§āϰā§āϏ āĻāϰ āĻāύā§āϝ, āϏāĻžāϰā§āĻāĻžāϰ āϏā§āĻ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĒāĻžāĻā§āĻžāϰ āĻĒāϰ āϏ⧠āϤāĻžāϰ āϝāĻžāĻŦāϤā§ā§ āĻĒā§āϰāϏā§āϏ āĻļā§āώ āĻāϰ⧠āĻā§āϞāĻžā§ā§āύā§āĻāĻā§ āϰā§āϏāĻĒāύā§āϏ āĻĻāĻŋā§ā§ āĻĻāĻŋāĻŦā§, āĻāĻāĻŋ āĻā§āϞāĻžā§ā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰāĨ¤
āĻāĻŽāĻžāĻĻā§āϰ āϏāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĨāĻžāĻāĻŦā§ āĻā§āϞāĻžā§ā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§āĨ¤
āϏāĻŋāϏā§āĻā§āĻŽ āϝāĻĻāĻŋ āĻā§āύ⧠āĻĒā§āϰāĻāĻžāϰā§āϰ Fault/Error āĻĨāĻžāĻāĻžāϰ āĻĒāϰāĻ āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŋāĻāĻŦāĻž āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āϝāĻĻāĻŋ āĻŦāύā§āϧ āύāĻž āĻšā§, āϤāĻŦā§ āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ ReliableāĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āĻŽāύ⧠āϰāĻžāĻāϤ⧠āĻšāĻŦā§ āĻāĻ āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ Fault āĻāϰ āĻāĻžāϰāĻŖā§ āϏāĻŋāϏā§āĻā§āĻŽ Failure āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
Fault āĻāϰāĻāĻŽ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻā§āύ⧠user āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻā§ āĻāĻŽāύāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻā§ āϝāĻžāϤ⧠āĻā§āύ⧠Failure āĻšā§ā§ āĻā§āϞ, āϏā§āĻāĻž āĻāĻā§āĻāĻžāĻā§āϤ āĻŦāĻž āĻ āύāĻŋāĻā§āĻāĻžāĻā§āϤāĻāĻžāĻŦā§āĻ āĻšāϤ⧠āĻĒāĻžāϰā§, āϤāĻāύ āϝāĻĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻŦāύā§āϧ āύāĻž āĻšā§ā§ āĻā§āύ⧠āĻĒā§āϰāĻāĻžāϰā§āϰ Warning message āĻĻā§āĻāĻžāϞ⧠āϤāĻāύ āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋāĻā§ āĻāĻŽāϰāĻž Reliable āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āϰāĻŋāϞāĻžāĻāĻŦāĻŋāϞāĻŋāĻāĻŋ
āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻŽā§ā§āϰ āĻāĻŋāϤā§āϤāĻŋāϤ⧠āĻā§āύ⧠āϏāĻŋāϏā§āĻā§āĻŽ āϝāϤāĻā§āĻā§ āĻāĻžāĻ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϏā§āĻāĻŋ āĻšāĻā§āĻā§ ThroughputāĨ¤ āϝā§āĻŽāύ, āĻĒā§āϰāϤāĻŋ ā§§ā§Ļ āϏā§āĻā§āύā§āĻĄ āĻ āϏāĻŋāϏā§āĻā§āĻŽ āϝāĻĻāĻŋ ā§Ģā§Ļ āĻāĻŋ API request āϏāĻŽā§āĻĒāύā§āύ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻžāĻšāϞ⧠āϤāĻžāϰ Throughput āĻšāĻŦā§ ā§Ģā§Ļ/ā§§ā§Ļ = ā§ĢāĨ¤
āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ Resource āĻāύā§āϝ āϝāĻāύ āϏāĻžāϰā§āĻāĻžāϰāĻā§ Request āĻāϰ⧠āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻžāϰā§āĻāĻžāϰ āĻĨā§āĻā§ FIRST BYTE of Response āϝāĻāύ āĻā§āϰāĻšāĻŖ āĻāϰ⧠āϤāĻžāϰ āĻŽāϧā§āϝāĻāĻžāϰ āϏāĻŽāϝāĻŧāĻā§āĻā§ (Request āĻāϰāĻž āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠āĻāĻŦāĻ FIRST BYTE āĻā§āϰāĻšāĻŖ āĻāϰāĻžāϰ āϏāĻŽā§ āĻĒāϰā§āϝāύā§āϤ) āĻšāϞ Time to First ByteāĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āĻŽā§āϝāĻžāĻā§āϰāĻŋāĻā§āϏ
āĻāĻāĻžāϧāĻŋāĻ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ (āĻŦāĻž āĻāĻŽā§āĻĒā§āύā§āύā§āĻ) āĻāĻāϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻĢāϞ⧠āĻā§āύ āĻāĻžāĻ āĻļā§āώ āĻšā§ āĻāĻŦāĻ End User āĻāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ (āĻŦāĻž āĻāĻŽā§āĻĒā§āύā§āύā§āĻ) āĻšāĻŋāϏā§āĻŦā§ āĻāϏā§, āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻšāϞ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āϏāĻŋāϏā§āĻā§āĻŽāĨ¤ āĻāĻ āĻŽā§āĻļāĻŋāύāĻā§āϞā§āϤ⧠āĻļā§ā§āĻžāϰā§āĻĄ āϏā§āĻā§āĻ(Shared State) āĻĨāĻžāĻā§, āĻāĻā§āĻāĻžāϰā§āύā§āĻāϞāĻŋ (Concurrently) āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻā§ āĻ āĻĒāϰā§āϰ āϏāĻžāĻĨā§ Information āĻļā§ā§āĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
āĻŦāϰā§āϤāĻŽāĻžāύ āϏāĻŽā§ā§ Distributed System āĻāϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāϞ YouTubeāĨ¤
YouTube āĻā§āύ?
- āϏāĻžāϰā§āĻāĻžāϰ User āĻĨā§āĻā§ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĒāĻžā§ Video Upload āĻāĻŋāĻāĻŦāĻž Video Watch āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤
- āĻāĻŋāĻĄāĻŋāĻ āĻāύāĻā§āĻĄāĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻŋāϏā§āĻā§āĻŽāĨ¤
āĻāĻā§āϞ⧠āϏāĻŦāĻāĻŋāĻā§ āĻŽāĻŋāϞ⧠Distributed System YouTube āϤā§āϰāĻŋ āĻāϰā§āĨ¤
Domain Name System āĻāĻŋāĻāĻŦāĻž DNS āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ Human Readable Domain (āϝā§āĻŽāύ www.google.com) āĻā§ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ IP-āϤ⧠āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰā§āĨ¤
āĻāĻĒāύāĻŋ āϝāĻāύ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠URL āĻāĻžāĻāĻĒ āĻāϰā§āύ (āϝā§āĻŽāύ www.google.com)āĨ¤ DNS āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻĒāύāĻžāϰ āĻĻā§ā§āĻž URL āĻāϰ IP Address āĻŦā§āϰ āĻāϰāĻŦā§ āĻāĻŦāĻ āϏā§āĻ IP Address āĻ āĻāĻĒāύāĻžāϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĒā§āϰāϏā§āϏ āĻšāĻŦā§āĨ¤
āĻāĻ āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻž āĻļā§āϰ⧠āĻšā§ DNS Resolver āĻĻāĻŋā§ā§,
- DNS Resolver āĻŽā§āϞāϤ Human Readable Domain āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ IP-āϤ⧠āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰ⧠āĻĨāĻžāĻā§āĨ¤ āĻāϰ ā§ŠāĻāĻŋ āĻĒāĻžāϰā§āĻ āĻāĻā§,
- Root Server, āĻāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻŽā§āϞāϤ .com, .org, .net āĻāϤā§āϝāĻžāĻĻāĻŋāϰ āϤāĻĨā§āϝ āϰāĻžāĻā§ āĻāĻŦāĻ āϏā§āĻā§āϞā§āϰ IP āϏā§āĻ DNS Resolver āĻā§ āĻĻāĻŋā§ā§ āĻĨāĻžāĻā§ āϝā§āĻŽāύ .com āĻāϰ āĻāύā§āϝ .com āĻāϰ IP, .org āĻāϰ āĻāύā§āϝ .org āĻāϰ IP
- Top Level Domain Server, āĻāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻŽā§āϞāϤ āĻĒā§āϰāϤāĻŋāĻāĻŋ Top Level Domain (www.google.com āĻāϰ TLD āĻšāϞ .com) āĻāϰ Authorititve Server āĻāϰ āϤāĻĨā§āϝ āύāĻŋāĻā§āϰ āĻŽāϧā§āϝ⧠āϰāĻžāĻā§āĨ¤
- Authorititve Server, āĻāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āϏā§āĻ Human Readable Domain (āϝā§āĻŽāύ www.google.com) āĻāϰ IP āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤
āĻāĻāĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻŋ āĻāĻŋ āĻāĻžāĻ āĻāϰ⧠āϏā§āĻāĻŋ Functional Requirement āĻāϞā§āϞā§āĻ āĻāϰ⧠āĻĨāĻžāĻā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦāϞāĻž āϝāĻžā§, āϏā§āĻļā§āϝāĻžāϞ āĻŽāĻŋāĻĄāĻŋā§āĻž āϏāĻŋāϏā§āĻā§āĻŽā§,
- āĻĒā§āϏā§āĻ āĻāϰāĻž āϝāĻžā§
- āĻĒā§āϏā§āĻā§ āϞāĻžāĻāĻ āĻāϰāĻž āϝāĻžā§
- āĻĒā§āϏā§āĻā§ āĻāĻŽā§āύā§āĻ āĻāϰāĻž āϝāĻžā§
- āĻĒā§āϏā§āĻā§ āĻĄāĻŋāϞāĻŋāĻ āĻāϰāĻž āϝāĻžā§
āĻĒā§āϰāϤāĻŋāĻāĻž āĻšāĻā§āĻā§ āĻāĻ āĻāĻāĻāĻŋ Functional RequirementāĨ¤
āĻāĻāĻŋ āĻŽā§āϞāϤ āĻāĻāĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻā§āĻŖāĻŽāĻžāύ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāϤāĻž (Quality Characteristics), āĻāĻĻāĻžāĻšāϰāĻŖ,
- Performance
- Security
- Cost
- Scalability
- Reliability
āĻĒā§āϰāϤāĻŋāĻāĻž āĻšāĻā§āĻā§ āĻāĻ āĻāĻāĻāĻŋ Non Functional RequirementāĨ¤
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻāύāĻŋāĻ āϝāĻž āĻāĻŽāĻžāĻĻā§āϰāĻā§ āϏāĻŋāϏā§āĻā§āĻŽ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰ Constraints (Load Balancer, CDN) āĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§ āĻāĻŋ āύāĻž āϤāĻžāϰ āĻāύā§āĻŽāĻžāύāĻŋāĻ āϧāĻžāϰāύāĻž āĻšāĻŋāϏāĻžāĻŦ āĻāϰ⧠āĻŦāϞ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ⧠āĻĄā§āĻāĻž Store āĻāĻŦāĻ Maintain Application āϏāĻžāϰā§āĻāĻžāϰ⧠āĻšā§ā§ āĻĨāĻžāĻā§āĨ¤ FTTP āĻšāϞ StatefulāĨ¤
āĻŦāĻžāϏā§āϤāĻŦ āĻā§āĻŦāύ⧠Stateful āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻāϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāϞ Web SocketāĨ¤ Web Socket āĻŽā§āϞāϤ bidirectional, full-duplex protocolāĨ¤ āĻāĻāĻžāύ⧠Server āĻĄā§āĻāĻž store āĻāϰ⧠āϰāĻžāĻā§, āϝāĻžāϤ⧠Client āϏāĻŦāϏāĻŽā§ Server āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻžā§āĨ¤
āĻāĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ⧠āĻĄā§āĻāĻž Store āĻāĻŦāĻ Maintain Application āϏāĻžāϰā§āĻāĻžāϰ⧠āĻšā§ āύāĻž āĻŦāϰāĻ āĻā§āύ⧠Database āĻŦāĻž Cache āĻ āϏā§āĻā§āϰ āĻāĻŦāĻ āĻŽā§āĻāύāĻā§āĻāύ āĻšā§āĨ¤ HTTP āĻšāϞ StatelessāĨ¤
HTTP āϏāĻŦāϏāĻŽā§ Stateless Architecture, āĻāĻžāϰāĻŖ āĻā§āύ⧠protected resource āĻāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāĻā§ āϏāĻŦāϏāĻŽā§ request āĻāϰāĻžāϰ āϏāĻŽā§ cookie/token āϏāĻžāĻĨā§ āĻĻāĻŋāϤ⧠āĻšā§āĨ¤ server āĻāĻāύ⧠cookie/token āϏā§āĻā§āϰ āĻāϰ⧠āϰāĻžāĻā§ āύāĻžāĨ¤
āĻā§āϞāĻžā§ā§āύā§āĻ āϝāĻāύ āϏāĻžāϰā§āĻāĻžāϰāĻā§ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĒāĻžāĻ āĻžāύā§āϰ āϏāĻŽā§ āϏāϰāĻžāϏāϰāĻŋ āϏāĻžāϰā§āĻāĻžāϰāĻā§ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āύāĻž āĻāϰ⧠āĻ āύā§āϝ āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰāϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻāϰāϞā§, āϏā§āĻ āĻĒā§āϰāϏā§āϏ āĻšāĻā§āĻā§ āĻĒā§āϰāĻā§āϏāĻŋ āĻāĻŦāĻ āϝ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻĻāĻŋā§ā§ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻāϰāĻŦā§ āϏā§āĻāĻž āĻšāĻā§āĻā§ āĻĒā§āϰāĻā§āϏāĻŋ āϏāĻžāϰā§āĻāĻžāϰāĨ¤
āĻŦāĻžāϏā§āϤāĻŦ āĻā§āĻŦāύ⧠āĻĒā§āϰāĻā§āϏāĻŋāϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāĻā§āĻā§ NGINXāĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āĻĒā§āϰāĻā§āϏāĻŋ
REST Api āĻāĻžāύāĻžāϰ āĻĒā§āϰā§āĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻŦā§āĻāϤ⧠āĻšāĻŦā§ āϰā§āϏā§āĻ(REST) āĻŽāĻžāύ⧠āĻāĻŋ, REST āĻŽāĻžāύ⧠āĻšāϞ Representational State Transfer āϝāĻžāϰ āĻŽāĻžāύ⧠āĻĻāĻžā§āĻžā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰāĻžāϞ āϏā§āĻāĻžāĻāϞ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§ āϏā§āĻā§āĻ āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰ āĻāύā§āϝāĨ¤ āĻāĻāύ REST Api āĻšāϞ, āĻāĻ āĻĒā§āϰāĻāĻžāϰā§āϰ āĻāĻĒāĻŋāĻāĻ āĻāύāĻā§āύāĻļāύ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§ āĻĻā§āĻāĻŋ āĻāύā§āĻĄ(āϝā§āĻŽāύāĻ āĻā§āϞāĻžā§ā§āύā§āĻ āĻāĻŦāĻ āϏāĻžāϰā§āĻāĻžāϰ) āĻāϰ āĻŽāϧā§āϝ⧠āϏā§āĻā§āĻ āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰāĻžāĻā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤
āϏā§āĻā§āĻ āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻāĻŋāĻā§ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ HTTP Methods āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§, GET, POST, PUT, PATCH & DELETE, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŽā§āϝāĻžāĻĨā§āĻĄā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻžāύāϤ⧠REST Api āϏā§āĻāĻļāύ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āϰā§āϏā§āĻ āĻāĻĒāĻŋāĻāĻ
āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻā§āώāĻŽāϤāĻžāĻā§ āĻŦā§āĻāĻžā§ āϝāĻāύ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻā§āϰāĻžāĻĢāĻŋāĻā§āϰ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻŦāĻžā§āϤ⧠āĻĨāĻžāĻā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦāϞāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āĻāĻāĻāĻŋ āĻā§ā§āĻŦāϏāĻžāĻāĻā§āϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāĻāύ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻāϰāĻž āĻšāĻā§āĻā§ āĻāĻŋāύā§āϤ⧠āĻāĻ āĻĨā§āĻā§ ā§Ģ āĻŽāĻžāϏ āĻĒāϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ ā§¨ āĻā§āĻŖ āĻšā§ā§ āĻā§āϞ āϤāĻžāϰ āĻ āĻŋāĻ āĻāϰāĻ ā§Ģ āĻŽāĻžāϏ āĻĒāϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ ā§Ē āĻā§āĻŖ āĻšā§ā§ āĻā§āϞ, āĻāĻāĻāĻž āϏāĻŽā§ āĻĻā§āĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻžāϰā§āĻāĻžāϰ āĻāϤ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āϞā§āĻĄ āύāĻŋāϤ⧠āĻĒāĻžāϰāĻā§ āύāĻž, āĻāĻ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āϏā§āĻā§āϞ āĻāϰāĻžāĻā§ āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ āĻŦāϞā§āĨ¤
āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ 2 āĻĒā§āϰāĻāĻžāϰā§āϰ, āĻāĻžāϰā§āĻāĻŋāĻāĻžāϞ āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ (Vertical Scalability) āĻāĻŦāĻ āĻšāϰāĻžāĻāĻāύā§āĻāĻžāϞ āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ (Horizontal Scalability)āĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ
Horizontal Scaling āĻā§ Sharding āĻŦāϞā§āĨ¤ Sharding āĻšāϞ āĻĄā§āĻāĻž āĻĒā§āĻĨāĻ āĻāϰāĻžāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦāϞāĻž āϝāĻžā§, āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻĄā§āĻāĻž āϝāĻĻāĻŋ āĻŦāĻžā§āϤ⧠āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāϤ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻĄā§āĻāĻž Store āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āϝāĻĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āύāĻž āĻĨāĻžāĻā§ āϤāĻāύ āĻāϰāĻ āϰāĻŋāϏā§āϰā§āϏ (āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻāĻā§āϝāĻž) āĻŦā§āĻĻā§āϧāĻŋ āĻāϰ⧠āĻāĻŽāϰāĻž āĻĄā§āĻāĻž āĻĒā§āĻĨāĻ āĻāϰ⧠āϰāĻžāĻāĻŋ āϤāĻžāĻšāϞ⧠āϏā§āĻāĻžāĻ ShardingāĨ¤
(āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāϞāĻŽāĻžāύ)
Database Replication āĻāĻ āĻĒā§āϰāĻāĻžāϰā§āϰ Strategy, āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ Master Database āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻŋāĻāĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ Slave Database āĻĨāĻžāĻāĻŦā§āĨ¤ Master Database āĻāϰ āĻŽāϧā§āϝ⧠Insert, Delete āĻāĻŦāĻ Update āĻāϰ āĻāĻžāĻ āĻšāĻŦā§ āĻāĻŦāĻ Slave Database āĻŽāϧā§āϝ⧠Master Database āĻāϰ āĻĄā§āĻāĻžāĻā§āϞā§āϰ Copy āĻĨāĻžāĻāĻŦā§ āĻāĻŦāĻ āϤāĻžāϰ āĻŽāϧā§āϝ⧠āĻļā§āϧ⧠Read Operation āĻšāĻŦā§āĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āĻĄā§āĻāĻžāĻŦā§āϏ āϰā§āĻĒā§āϞāĻŋāĻā§āĻļāύ
Caching āĻāĻāĻāĻŋ āĻā§āĻļāϞ āϝāĻž āĻĻā§āĻŦāĻžāϰāĻž āĻā§āύ Expensive Response'āĻā§ āĻā§āύ⧠āĻŽā§āĻŽā§āϰāĻŋāϤ⧠āϰāĻžāĻāĻž āĻšā§, āϝāĻžāϤ⧠āĻŦāĻžāϰ āĻŦāĻžāϰ āĻāϏāĻž āϏā§āĻ āϰā§āϏā§āĻĒāύā§āϏā§āϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻā§ āĻĻā§āϰā§āϤ āϰā§āϏāĻĒāύā§āϏāĻāĻŋ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻŽā§āϞ āϏāĻžāϰā§āĻāĻžāϰ⧠(āϝā§āĻŽāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ) āĻšāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻā§āϝāĻžāĻļāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻāϰāĻŦā§āĨ¤ āĻāϤ⧠āĻāϰ⧠āϝ⧠āϏā§āĻŦāĻŋāϧāĻžāĻā§āĻā§ āĻšāĻŦā§,
- Read API āϰāĻŋāĻā§ā§ā§āϏā§āĻ Fast āĻšāĻŦā§
- Latency Reduce āĻšāĻŦā§
- Fault Tolarence āĻāϰ āĻā§āĻāĻāĻŋ āĻāĻŽāĻŦā§
đ āĻāϰāĻ āĻĒā§ā§āύ: āĻā§āϝāĻžāĻļāĻŋāĻ
Content Delivery Network āĻ āĻĨāĻŦāĻž CDN, āĻāĻāĻŋ āĻāĻāĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽ āϝā§āĻāĻžāύ⧠āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻā§āϞāĻŋāĻ āĻāϰ āĻāϏā§āĻĒāĻžāĻļā§ āĻĨāĻžāĻā§, āϝāĻžāϤ⧠āĻāĻŽāϰāĻž āĻā§āĻŦ āĻĻā§āϰā§āϤ āĻāύā§āĻā§āύā§āĻ āĻĒā§āϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻāύā§āĻā§āύā§āĻāĻāĻŋ āĻšāϤ⧠āĻĒāĻžāϰ⧠JS, CSS, Images āĻāĻŋāĻāĻŦāĻž VideosāĨ¤
āĻāĻŽāĻžāĻĻā§āϰ CDN āϏāĻžāϰā§āĻāĻžāϰ āϝāĻĻāĻŋ India āϤ⧠āĻĨāĻžāĻā§ āĻāϰ āĻāĻŽāϰāĻž Bangladesh āĻĨā§āĻā§ content request āĻāϰāĻŋ āϤāĻžāĻšāϞ⧠āĻā§āĻŦ āϤāĻžā§āĻžāϤāĻžā§āĻŋ content āĻĒāĻžāĻŦāĨ¤ āĻāĻžāϰāĻŖ āϤāĻāύ Latency āĻāĻŽā§ āϝāĻžāĻŦā§āĨ¤ āĻāϰ āĻāĻŽāϰāĻž Bangladesh āĻĨā§āĻā§ England-āĻ āϝā§āĻāĻžāύ⧠āĻŽā§āϞ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻā§, āϏā§āĻāĻžāύ⧠āĻāύāĻā§āύā§āĻ āĻāϰ āĻāύā§āϝ request āĻāϰāϞ⧠Latency āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§ āĻŦā§āĻĻā§āϧāĻŋ āĻĒāĻžāĻŦā§, āϝā§āĻšā§āϤ⧠āĻĻā§āĻ āĻĻā§āĻļā§āϰ āĻĻā§āϰāϤā§āĻŦ āĻŦā§āĻļāĻŋāĨ¤
āϝ⧠āϝ⧠āϞā§āĻā§āĻļāύ⧠CDN āϏāĻžāϰā§āĻāĻžāϰ āĻāĻā§ āϏā§āĻ āϞā§āĻā§āĻļāύāĻā§āϞā§āĻā§ Point of Presence āĻŦāĻž PoP āĻŦāϞā§āĨ¤ āϝ⧠āϏāĻžāϰā§āĻāĻžāϰ PoP āĻāϰ āĻāĻŋāϤāϰ⧠āĻĨāĻžāĻā§ āϤāĻžāĻā§ Edge Server āĻŦāϞā§āĨ¤
đ āĻāϰāĻ āĻĒā§ā§āύ: āĻāύāĻā§āύā§āĻ āĻĄā§āϞāĻŋāĻāĻžāϰāĻŋ āύā§āĻāĻā§āĻžāϰā§āĻ