+2

🏳️‍🌈 GAY 0: KHỞI ĐỘNG – SYSTEM DESIGN LÀ CÁI QUÁI GÌ VÀ CUỐN SÁCH CỦA ALEX XU CÓ GÌ HOT?

💃 Less 1: System Design là gì? Chuyện từ ông thợ code lên kiến trúc sư trưởng

Để tôi kể anh em nghe một câu chuyện.

Kéo một cái web cỏ, viết vài dòng code CRUD, vứt lên một con VPS giá rẻ cho vài chục ông bạn vào chơi – cái đó gọi là lập trình và triển khai web cơ bản.

Lúc này, anh em giống như một ông thợ hồ tự xây cái chuồng gà sau nhà vậy:

  • Gạch vữa sao cũng được.
  • Hỏng đâu sửa đó, đổ thì xây lại.
  • Chẳng ảnh hưởng tới ai.

Nhưng một ngày đẹp trời, sếp vỗ vai:

"Em ơi, chuẩn bị có đợt sale lớn. Hệ thống phải gánh 100.000 người vào mua hàng cùng một lúc trong vòng 1 lúc nha em!"

Lúc này, cái chuồng gà của anh em sẽ đổ sập trong vòng một nốt nhạc.

Các triệu chứng quen thuộc:

  • 🌋 Băng thông nghẽn
  • 🔥 Database treo cứng
  • 💥 CPU nhảy lên 100%
  • 🤬 User chửi bới ầm ĩ

Và kết quả là chính thức ra chuồng gà, anh em bị đuổi việc 😃 (JK)


Vậy System Design là gì?

System Design chính là lúc anh em:

Cất cái bay đi, mặc vest vào và trở thành Kiến trúc sư hệ thống. 🤵 🤵 🤵 🤵 🤵

Anh em phải ngồi tính toán:

Bảng này chỉ là ví dụ, đọc qua thôi nhé, đừng học thuộc, pls

Bài toán Thành phần
Móng đặt ở đâu? Database
Cửa ra vào rộng bao nhiêu? Load Balancer
Chia phòng thế nào để cháy phòng này phòng khác vẫn chạy? Microservices / Fault Tolerance
Làm sao khách vào đông mà không nghẽn? Cache
Việc nặng ai xử lý? Message Queue

🎯 Định nghĩa ngắn gọn

System Design là nghệ thuật lắp ghép các mảnh ghép công nghệ (Web, Database, Cache, Queue, Storage...) để hệ thống chạy khỏe, chạy nhanh, ít tốn tiền và không bị sập khi gặp bão traffic.


💃 Less 2: Tại sao cuốn sách của Alex Xu lại là "Kinh thánh" gối đầu giường?

Nói thật với anh em, tài liệu về System Design trên mạng nhiều như quân nguyên.

Nhưng tại sao dân IT từ New York, Tokyo cho đến Hà Nội hay Sài Gòn cứ đi phỏng vấn Big Tech là lại ôm khư khư cuốn System Design Interview – An Insider's Guide?

Link cho anh em nào muốn đọc nhé. Link sếch

Sau khi nghiền ngẫm cuốn này, tôi rút ra được 3 lý do cực kỳ đáng giá.


1️⃣ Không nói lý thuyết suông

Alex Xu từng làm việc ở những công ty lớn như:

  • Twitter
  • Apple

Ông ấy biết rất rõ một hệ thống lớn vận hành như thế nào.

Thay vì bắt anh em học thuộc lòng định nghĩa, ông ném thẳng vào một bài toán:

"Thiết kế YouTube."

"Thiết kế TikTok."

"Thiết kế hệ thống Chat."

Rồi từng bước phân tích cách chúng được xây dựng.

Đó là cách các buổi phỏng vấn thực tế diễn ra hoặc ko 😃.


2️⃣ Tư duy "Trade-offs" – Tiền nào của nấy

Đây là phần giá trị nhất.

Trong thực tế:

Không có giải pháp nào hoàn hảo.

Chỉ có:

Giải pháp phù hợp nhất ở thời điểm hiện tại.

Ví dụ:

Giải pháp Ưu điểm Nhược điểm
Redis Siêu nhanh Có thể mất dữ liệu
PostgreSQL An toàn Chậm hơn
Microservices Scale tốt Phức tạp
Monolith Dễ phát triển Khó scale

Một Senior Engineer không hỏi:

"Giải pháp nào tốt nhất?"

Mà hỏi:

"Giải pháp nào phù hợp nhất với bài toán này?"

Đó chính là tư duy đánh đổi - Trade-off Thinking.


3️⃣ Khung tư duy có thể áp dụng cho mọi đề bài

Đây là thứ khiến cuốn sách này trở nên nổi tiếng nổi tiếng.

Sau khi đọc xong, anh em sẽ có một Framework để xử lý gần như mọi bài toán System Design.

Cho dù đề bài là:

  • App Chat
  • Facebook
  • TikTok
  • YouTube
  • Uber
  • Grab
  • Shopee

Thì quy trình suy nghĩ gần như giống nhau.

Ví dụ:

Bước 1: Làm rõ yêu cầu

  • Bao nhiêu user?
  • Bao nhiêu request?
  • Functional Requirements?
  • Non-functional Requirements?

Bước 2: Ước lượng quy mô

  • QPS
  • Storage
  • Bandwidth

Bước 3: Thiết kế cấp cao

  • Client
  • API
  • Load Balancer
  • Database

Bước 4: Thiết kế chi tiết

  • Cache
  • Queue
  • Replication
  • Sharding

Bước 5: Tối ưu và xử lý điểm nghẽn

  • Bottleneck
  • Fault Tolerance
  • Monitoring
  • Auto Scaling

🍻 Chốt hạ phần mở đầu

Tóm lị là dài, System Design không phải là thứ gì đó quá thần thánh chỉ dành cho các thiên tài não to.

Nó đơn giản là:

Kinh nghiệm từ hàng nghìn lần hệ thống bị sập, bị nghẽn, bị quá tải của những người đi trước được đúc kết lại thành kiến thức.


Trong series này, tôi sẽ không dịch từng chữ trong sách của Alex Xu.

Đọc kiểu đó buồn ngủ lắm, Amennnn.

Thay vào đó, tôi sẽ:

  • 🔪 Xẻ nhỏ từng khái niệm
  • 🧠 Giải thích bằng tư duy thực chiến
  • 🏗️ Liên hệ với các hệ thống ngoài đời
  • ☕ Kể theo phong cách anh em coder ngồi trà đá với kinh nghiệm của tôi và ae tôi 😃

để bất kỳ ai cũng có thể hiểu được System Design từ gốc đến ngọn.


🚀 GAY kế nói gì :> ???

GAY 1: Từ quán phở lề đường đến chuỗi nhượng quyền triệu đô

Chúng ta sẽ bắt đầu học:

  • Scale là gì?
  • Vì sao hệ thống nhỏ chạy ngon nhưng lớn lại chết?
  • Vertical Scaling vs Horizontal Scaling
  • Khi nào cần thêm server?

Thắt dây an toàn vào rồi khép đít vào nhé.

🌪️ Bão traffic sắp đến rồiiiiii.


📚 Góc từ điển – Thuật ngữ & Từ viết tắt

Trong suốt series này sẽ xuất hiện rất nhiều từ viết tắt của dân System Design và Backend.

Đừng cố nhớ hết ngay từ đầu.

Cứ gặp nhiều sẽ tự quen.

Từ viết tắt Nghĩa đầy đủ Giải thích ngắn
VPS Virtual Private Server Máy chủ ảo riêng
CPU Central Processing Unit Bộ xử lý trung tâm
RAM Random Access Memory Bộ nhớ tạm thời của hệ thống
DB Database Cơ sở dữ liệu

💡 Lưu ý

Mỗi khi gặp một từ viết tắt mới trong series, tôi sẽ bổ sung vào bảng này để xây dựng thành một "từ điển System Design" hoàn chỉnh cho anh em tra cứu nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí