Lời Mở Đầu
Tôi vẫn đang trong tiến trình học system design nên vẫn chưa có đầy đủ các notes nhé.
Cho những con người có định hướng đào sâu về mảng Backend và có thể mở rộng ra DevOps sau này 💀
Hàng ngàn request mỗi giây => server quá tải => ta phải scale up hoặc tái cấu trúc app của mình lên => một đống vấn đề khác nảy sinh (đồng bộ, đảm bảo hiệu năng, giữ bảo mật etc…)… Cứ thế cứ thế các vde mới lại xuất hiện như hiệu ứng domino, đó là lý do mới có cái System Design này.
Ta thiết kế hệ thống nhằm đảm bảo các yếu tố chính về độ tin cậy (reliable), hiệu quả (effective) và khả năng bảo trì (maintainable):
- 1 hệ thống đáng tin cậy sẽ đối phó với các tình huống xảy ra lỗi (fault, failure, errors) 1 cách hợp lý.
- 1 hệ thống có hiệu quả sẽ đáp ứng mọi yêu cầu từ business và users.
- 1 hệ thống có khả năng bảo trì sẽ linh hoạt với đa dạng cấu trúc, dễ scale up/down và thêm tính năng mới.
Acknowledgement
- Grokking the Modern System Design Interview - educative.io
- System Design 101 - ByteByteGo
- Grokking the System Design Interview - Guru99
Catalog
- Overview:
- Components:
- Domain Name System (DNS)
- Load Balancers
- Databases
- Key-value Stores
- Content Delivery Network (CDN)
- Sequencer
- Distributed Monitoring
- Distributed Cache
- Distributed Messesing Queue
- Pub-sub
- Rate Limiter
- Blob Store
- Distributed Search
- Distributed Logging
- Distributed Task Scheduler
- Sharded Counter
- Spectacular Failures
- Sample designs:
- Design a photo gallery service
- Design Youtube
- Design Quora
- Design Google Maps
- Design a Proximity Service / Yelp
- Design Uber
- Design Twitter
- Design Newsfeed System
- Design Instagram
- Design a URL Shortening Service / TinyURL
- Design a Web Crawler
- Design WhatsApp
- Design Typeahead Suggestion
- Design a Collaborative Document Editing Service / Google Docs