# System Design Interview của Alex Xu: giữ khung 4 bước, tự bù phần AI mà sách không có

> Thứ đáng giá nhất trong cuốn sách luyện vòng system design này không phải 30 bản thiết kế mẫu. Đó là khung trả lời 4 bước, và ứng viên FDE nên đọc khung ấy như cẩm nang cho buổi làm việc đầu tiên với khách hàng.

Bản gốc: https://fdetimes.net/vi/sach-khoa-hoc/sach-system-design-interview-alex-xu/

Trang khóa học chính thức của ByteByteGo liệt kê 30 chương cho System Design Interview, từ "Scale From Zero To Millions Of Users" tới "Stock Exchange". Bạn sẽ học thiết kế news feed, chat, YouTube, hệ thống thanh toán. Thế nhưng trong cả 30 chương ấy không có chương nào bàn về hệ thống ML hay LLM.

Ứng viên FDE cần biết khoảng trống này ngay từ đầu, nhất là khi vòng phỏng vấn có đề bài về AI. Bài toán trong sách là bài toán sản phẩm và hạ tầng. Hệ thống ML không nằm trong số đó.

Dù vậy, cuốn sách vẫn đáng đọc. Với FDE, phần giá trị nhất của nó không nằm ở mấy bản thiết kế YouTube hay Stock Exchange. Nó nằm ở chương ngắn dạy cách trả lời, vì cách trả lời ấy rất giống cách một FDE làm việc trong buổi đầu tiên ngồi với khách hàng.

## Sách dạy gì, và ai đã khen nó?

Danh mục chương trộn hai nhóm. Nhóm nền tảng gồm ước lượng nhanh (Back-of-the-envelope Estimation), rate limiter, consistent hashing và key-value store. Nhóm thứ hai là các bài thiết kế kiểu sản phẩm như news feed, chat, YouTube, payments.

Sandor Dargo, người viết review độc lập trên DevReads vào tháng 2/2022, cho rằng cuốn sách đem lại một cách tiếp cận có hệ thống để chuẩn bị và xử lý dạng câu hỏi này. Theo ông, kỹ sư nhiều kinh nghiệm cũng được lợi, vì sách trình bày bài toán từ góc nhìn của người phỏng vấn.

Cần lưu ý đây chỉ là một bài review thiện cảm, và ông không nêu điểm yếu nào.

Muốn ôn lại các khái niệm phân tán mà các chương dựa vào, bạn có thể đọc thêm bài tổng hợp của Swimm. Bài này nhắc lại định lý CAP: một hệ phân tán chỉ đạt được hai trong ba đảm bảo.

Bài đó cũng mô tả Saga, tức chuỗi giao dịch cục bộ trong đó mỗi bước có một hành động bù trừ đi kèm. Bạn sẽ gặp pattern này ở các chương kiểu thanh toán, ví điện tử. Swimm là blog của một công ty đang quảng bá sản phẩm của mình, nên chỉ nên dùng bài ấy để ôn kiến thức.

## Khung 4 bước chính là một buổi customer discovery

Bước 1 yêu cầu hiểu bài toán và chốt phạm vi thiết kế. Lời khuyên của sách khá thẳng: chậm lại, nghĩ kỹ, đặt câu hỏi để làm rõ yêu cầu và giả định. Bước 2 là phác bản thiết kế tổng thể đầu tiên rồi xin phản hồi, tức coi buổi phỏng vấn là một cuộc cộng tác.

Bước 3 đi sâu vào thiết kế nhưng tránh chi tiết không cần thiết. Bước 4 là tổng kết, và tuyệt đối đừng nói thiết kế của mình hoàn hảo, không còn gì để cải thiện.

Hãy đặt bốn bước này cạnh công việc thật. Ở site khách hàng, FDE hỏi trước khi vẽ, cho stakeholder xem bản phác sớm để họ đồng ý hướng đi, chỉ đào sâu vào phần rủi ro nhất, rồi kết thúc bằng danh sách việc còn dang dở.

Vì thế, cách luyện hợp lý cho vòng FDE là coi khung này như một buổi customer discovery thu nhỏ, chứ không phải một kịch bản để học thuộc.

**Điểm mấu chốt:** Với ứng viên FDE, giá trị của cuốn sách nằm ở khung 4 bước hơn là ở 30 bản thiết kế mẫu.

## Một con số đủ làm đổi cả thiết kế

Thử hình dung đề bài: "Thiết kế trợ lý hỏi đáp tài liệu nội bộ cho một công ty bảo hiểm có 2.000 nhân viên". Người đã thuộc 30 chương dễ vẽ ngay sharding và cache nhiều tầng. Hãy làm bước 1 và áp chương ước lượng trước đã.

Giả sử mỗi nhân viên hỏi 10 câu một ngày. Vậy là 20.000 câu dồn vào 8 giờ làm việc, tức 28.800 giây, chưa tới 1 câu mỗi giây. Kể cả lúc cao điểm gấp 5 lần thì cũng chỉ khoảng 3,5 câu mỗi giây.

Ở mức tải này, cái khó không nằm ở scale. Nó chuyển sang độ chính xác của câu trả lời và thời gian chờ model.

Phép tính một phút ấy cho người phỏng vấn thấy bạn đang giải đúng bài toán của khách hàng chứ không giải bài toán quen tay. Đây cũng là kỹ năng nên ghi vào CV. Một dòng kể việc bạn ước lượng tải rồi quyết định *không* xây một thứ gì đó đáng giá hơn năm dòng liệt kê công nghệ.

## Phần sách không có: ba lớp của hệ thống AI

Muốn lấp chỗ trống về AI, bạn nên đọc kèm hướng dẫn AI system design của System Design Handbook. Hướng dẫn này cũng mở đầu bằng việc làm rõ bài toán, nhưng chỉ đích danh các câu cần hỏi: loại dữ liệu, độ trễ, quy mô. Phần này khớp với bước 1 của Alex Xu.

Khác biệt nằm ở bản thiết kế tổng thể. Hướng dẫn khuyên chia kiến trúc thành ba lớp data, model và serving, đồng thời nói rõ mình cân giữa khả năng mở rộng và chi phí, giữa độ chính xác và độ trễ ra sao.

Quay lại đề công ty bảo hiểm và thử phác ba lớp ấy. Lớp data là kho hợp đồng, điều khoản và quy trình nội bộ; câu hỏi cần đặt ra là tài liệu ở định dạng nào, bao lâu được cập nhật một lần, và nhân viên nào được xem tài liệu nào.

Lớp model là phần tìm đúng đoạn tài liệu liên quan rồi soạn câu trả lời dựa trên đoạn đó. Đây là chỗ nên đi sâu ở bước 3, vì trả lời sai một điều khoản bồi thường gây hại hơn nhiều so với chờ thêm vài giây.

Lớp serving thì phép tính lúc nãy đã trả lời giúp bạn: khoảng 3,5 câu mỗi giây lúc cao điểm không cần sharding hay cache nhiều tầng. Vì tải thấp, một câu trả lời mạnh sẽ chấp nhận model chậm hơn một chút để đổi lấy độ chính xác, rồi ở bước 4 nêu rõ phần nào còn phải đo lại với dữ liệu thật của khách hàng.

## Nên đọc theo thứ tự nào?

Nếu chỉ có hai tuần, hãy đọc chương framework trước rồi tới chương ước lượng. Tiếp theo là rate limiter, consistent hashing và key-value store để nắm phần nền. Trong nhóm sản phẩm, chat và payments sát với hệ thống doanh nghiệp hơn YouTube.

Đọc payments cùng lúc với phần Saga để hiểu vì sao cần hành động bù trừ. Sau đó thêm ba lớp data, model, serving và tự giải lại hai đề bất kỳ trong sách theo phiên bản có AI, giống cách vừa làm với đề bảo hiểm.

Ba ý nên giữ lại sau khi gấp sách: hỏi trước khi vẽ, xin phản hồi sớm, và không bao giờ nhận thiết kế của mình là hoàn hảo. Ba thói quen ấy giúp bạn qua vòng phỏng vấn, và bạn nên mang chúng tới site khách hàng ngay từ ngày đầu tiên.

**Thử ngay tuần này:**

- Đọc chương framework rồi chương Back-of-the-envelope Estimation, sau đó tự giải một đề có AI theo đủ 4 bước và ghi âm lại phần trả lời.
- Viết ra 5 câu hỏi làm rõ cho đề 'trợ lý hỏi đáp tài liệu nội bộ', gồm loại dữ liệu, yêu cầu độ trễ và quy mô người dùng.
- Sửa một dòng trong CV thành dạng 'đã làm rõ yêu cầu với X, chọn kiến trúc Y vì trade-off Z' thay cho kiểu liệt kê công nghệ.

## Nguồn

- [System Design Interview (ByteByteGo course)](https://bytebytego.com/courses/system-design-interview)

- [A Framework For System Design Interviews (ByteByteGo)](https://bytebytego.com/courses/system-design-interview/a-framework-for-system-design-interviews)

- [System Design Interview: An insider's guide by Alex Xu](https://devreads.sandordargo.com/system-design-interview-by-alex-xu/)

- [AI System Design: A Complete Guide (System Design Handbook)](https://www.systemdesignhandbook.com/guides/ai-system-design/)

- [System Design: Complete Guide with Patterns, Examples, and Techniques (Swimm)](https://swimm.io/learn/system-design/system-design-complete-guide-with-patterns-examples-and-techniques)
