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:
Distributed Cache
Distributed Messesing Queue
Pub-sub
Blob Store
Distributed Search
Distributed Logging
Distributed Task Scheduler
Sharded Counter
Spectacular Failures
Sample designs:
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