Thiết kế hệ thống - System design
Hôm nay mình đang viết thuyết minh giải pháp để đáp ứng cho việc xây dựng một hệ thống cho khách hàng của bên công ty mình. Khách hàng là cho một Tập đoàn đa lĩnh vực ở Việt Nam gồm: quản lý kinh doanh & phát triển bất động sản, Thương mại, dịch vụ ;Nông nghiệp; Năng lượng; Tài chính ngân hàng.
Bên dưới đây mình tóm lược nhưng đồng thời giữ nguyên ý các về yêu cầu về hệ thống của khách hàng (không gồm các yêu cầu về chức năng nghiệp vụ):
- Khả năng tích hợp, kết nối với nhiều hệ thống business hiện tại như SAP / Sharepoint / Microsoft Project for web/ ADFS / CyberLotus và một số ứng dụng tự phát triển nội bộ
- Yêu cầu về các cơ chế sao lưu, phục hồi dữ liệu
- Yêu cầu về triển khai:
- Khả năng khôi phục không quá 3h khi bị thảm họa
- Dữ liệu được khôi phục tính từ lúc dịch vụ bị gián đoạn không quá 1h
- Đảm bảo hệ thống đáp ứng tối thiểu 50%
- kiến trúc phân tầng App, DB ;
- Các thành phần phải được thiết kế HA (Không có điểm lỗi đơn)
- Yêu cầu bảo mật
- Hệ thống phải được thiết kế với kiến trúc phân lớp
- Thiết kế có tính sẵn sàng cao, cân bang tải, chia tải
- Kết nối giữa các hệ thống phải được xác thực mã hóa
- Mã hóa các dữ liệu nhậy cảm
- Yêu cầu hiệu năng: đưa ra thời gian uptime và chứng minh
Trong quá trình chuẩn bị viết thuyết minh giải pháp, ngoài các kinh nghiệm về hệ thống mình đã có thì mình cũng tham khảo từ nhiều nguồn.
Trong blog này thì mình chủ yếu là note lại các nguồn thông tin mình đã tham khảo. Việc đánh giá và sử dụng các thông tin từ các nguồn này như thế nào mình sẽ viết chi tiết trong các blog sau.
Nguồn tham khảo chính của mình là cuốn sách: System Design Interview: An Insider’s Guide
Các nguồn chưa xem:
- Google's architecture in 2008 on High Scalability. I find it helpful to understand how companies handled scale over a decade ago. Keep in mind, Google was already bigger in 2008 than many companies need to worry about in 2020.
- Youtube architecture in 2008. Building a system similar to YouTube is a common challenge. It's good to understand how YouTube addressed this, early on.
- Scale at Facebook in 2010: how Facebook approached scaling challenges in their earlier days.
- Scaling Twitter in 2009 and in 2013
- The Netflix experimentation platform in 2016
- How these companies approached scale: Flickr, Dropbox, LinkedIn, Uber, Whatsapp, Pinterest.
- Money movements at scale at Uber - this is talking slightly home, as I worked with the system described in this article, and wrote about some of my learnings. Airbnb scaling their payments platform is also a good read.
- System Design Primer on GitHub: the largest collection of all systems related concepts worth knowing.
- High Scalability blog: the place to go for real-world scalability articles and discussions.
- Designing Data Intensive Applications book: this is a must-read book on distributed systems concepts and building blocks. It goes much deeper than this book does (or wants to). It's a more difficult and longer read. My two cents is anyone serious about distributed systems should read this book, which is also on my bookshelf.
Nhận xét
Đăng nhận xét