Harbor
Bài thiết kế

33 hệ thống cần thiết kế

Bắt đầu từ bài Dễ. Với mỗi bài, tự thiết kế 20 phút trước khi đọc lời giải, rồi chuyển qua ba mức quy mô để xem hạ tầng thay đổi thế nào.

Dễ
Rút gọn link
Giống Bitly, TinyURL

Dịch vụ biến một URL dài thành mã ngắn như sho.rt/aB3x9Kq. Người tạo link là marketer, dev, người dùng mạng xã hội. Người bấm link là bất kỳ ai, và số lượt bấm lớn gấp khoảng 100 lần số link được tạo.

Mức 1
10.000 người tạo link/ngày
Mức 2
1 triệu người tạo link/ngày
Mức 3
50 triệu DAU · 10 triệu link mới/ngày
Trung bình
Bình luận livestream
Giống Facebook Live, TikTok Live, YouTube Live chat

Tính năng bình luận chạy bên cạnh một buổi livestream: người xem gửi bình luận và thấy bình luận của người khác hiện lên gần như ngay lập tức. Khó nhất là các buổi live lớn có hàng triệu người xem cùng lúc.

Mức 1
10.000 DAU, buổi live lớn nhất 2.000 người xem
Mức 2
1 triệu DAU; buổi live hot 200.000 người xem, 300.000 người xem đồng thời toàn nền tảng
Mức 3
50 triệu DAU; trận chung kết 5 triệu người xem, 10 triệu kết nối toàn nền tảng
Trung bình
Booking & tracking container
Giống Cổng khách hàng của hãng tàu (ONE, Maersk, CMA CGM)

Cổng web cho khách của hãng tàu: đặt chỗ chở container và theo dõi container qua các cảng. Booking ít nhưng phải đúng, sự kiện tracking đến đều và nhiều, tra cứu thì đọc nhiều hơn ghi.

Mức 1
≈ 5.000 khách · 20.000 container đang chạy (forwarder khu vực)
Mức 2
≈ 500.000 khách · 2 triệu container đang chạy (cổng toàn cầu của một hãng tàu)
Mức 3
Hub tracking toàn ngành · ≈ 20 triệu container · 10× sự kiện
Trung bình
Chơi cờ online
Giống chess.com, lichess

Nền tảng chơi cờ vua trực tuyến: người chơi được ghép với đối thủ cùng trình độ, đi nước theo thời gian thực với đồng hồ chính xác, người khác có thể vào xem. Mỗi người chơi trung bình vài ván mỗi ngày, mỗi ván từ 1 đến 30 phút.

Mức 1
10.000 DAU · ≈ 520 ván cùng lúc lúc đỉnh
Mức 2
1 triệu DAU · ≈ 52.000 ván cùng lúc lúc đỉnh
Mức 3
20 triệu DAU · ≈ 1 triệu ván cùng lúc · ván hot 1 triệu người xem
Trung bình
Đặt vé sự kiện
Giống Ticketmaster, Ticketbox

Nền tảng bán vé concert, sân khấu, thể thao theo ghế ngồi. Khán giả tìm sự kiện, chọn ghế trên sơ đồ, giữ ghế vài phút và thanh toán; ví dụ một đêm nhạc ở sân Mỹ Đình với 40.000 ghế mở bán cùng lúc.

Mức 1
10.000 DAU, sự kiện ≤ 2.000 ghế
Mức 2
1 triệu DAU, show lớn 20.000 ghế
Mức 3
5 triệu DAU; 2 triệu người cùng chờ một show 40.000 ghế
Trung bình
Đấu giá trực tuyến
Giống eBay Auctions, Yahoo! Auctions

Sàn đấu giá nơi người bán đăng món hàng với giá khởi điểm và giờ kết thúc, người mua trả giá cao dần. Hết giờ, người trả cao nhất thắng; ví dụ một chiếc đồng hồ cổ có 3.000 người theo dõi và 200 lượt trả giá trong 2 phút cuối.

Mức 1
10.000 DAU, 2.000 phiên đang mở
Mức 2
1 triệu DAU, 500.000 phiên đang mở
Mức 3
50 triệu DAU, 20 triệu phiên đang mở
Trung bình
Giao hàng nhanh nội thành
Giống GrabMart, Gopuff, BAEMIN

Ứng dụng giao tạp hóa, đồ uống, đồ dùng trong 15-30 phút từ các kho nhỏ (dark store) đặt rải rác trong thành phố. Ví dụ một khách ở quận 7 mở app lúc 19h, chỉ thấy món còn hàng ở kho gần nhất và nhận hàng sau khoảng 20 phút.

Mức 1
10.000 DAU, 10 kho ở một thành phố
Mức 2
1 triệu DAU, 300 kho ở 3 thành phố
Mức 3
10 triệu DAU, 3.000 kho ở 10 thành phố
Trung bình
Hệ thống thông báo
Giống Firebase Cloud Messaging, Amazon SNS, OneSignal

Dịch vụ dùng chung trong công ty để gửi thông báo qua push, email, SMS và hộp thư in-app. Các team khác chỉ gọi một API; ví dụ app ví điện tử gửi OTP, báo biến động số dư và chạy chiến dịch khuyến mãi cho hàng triệu người.

Mức 1
10.000 DAU
Mức 2
1 triệu DAU
Mức 3
50 triệu DAU
Trung bình
Lưu trữ và đồng bộ file
Giống Dropbox, Google Drive

Dịch vụ cho người dùng tải file lên đám mây, tự đồng bộ giữa laptop, điện thoại, web và chia sẻ thư mục cho người khác. Ví dụ một nhóm thiết kế cùng làm trên thư mục 50 GB, sửa file ở máy này thì vài giây sau máy kia đã có bản mới.

Mức 1
10.000 DAU (khoảng 20.000 tài khoản)
Mức 2
1 triệu DAU (khoảng 3 triệu tài khoản)
Mức 3
50 triệu DAU (khoảng 150 triệu tài khoản)
Trung bình
Nền tảng luyện code online
Giống LeetCode, Codeforces

Nền tảng cho lập trình viên đọc đề, viết code trên trình duyệt, nộp bài và nhận kết quả chấm sau vài giây. Định kỳ có contest 90 phút với hàng chục nghìn người thi cùng lúc và bảng xếp hạng trực tiếp.

Mức 1
10.000 DAU, 500 bài, contest hằng tuần 1.000 người
Mức 2
1 triệu DAU, 3.000 bài, contest 50.000 người
Mức 3
10 triệu DAU; contest toàn cầu 500.000 người
Trung bình
Rate limiter phân tán
Giống Giới hạn request ở API gateway của Stripe, Cloudflare

Lớp đứng trước API, đếm request của từng client và chặn khi vượt hạn mức. Nó bảo vệ hệ thống khỏi client viết lỗi, bot và kẻ tấn công, đồng thời thực thi hạn mức theo gói cước.

Mức 1
10.000 DAU · ≈ 50 req/s cần bảo vệ
Mức 2
1 triệu DAU · ≈ 20.000 req/s cần bảo vệ
Mức 3
50 triệu+ DAU · 1 triệu req/s trên 3 region
Trung bình
Theo dõi giá sản phẩm
Giống CamelCamelCamel, Keepa, các tiện ích theo dõi giá Shopee/Tiki/Lazada

Người dùng dán link sản phẩm trên Shopee, Tiki, Lazada để xem biểu đồ lịch sử giá và đặt ngưỡng; khi giá xuống dưới ngưỡng thì nhận thông báo. Các sàn không đẩy dữ liệu cho mình, nên hệ thống phải tự đi lấy giá của hàng triệu sản phẩm.

Mức 1
10.000 DAU, 50.000 sản phẩm được theo dõi, 100.000 watch
Mức 2
1 triệu DAU, 5 triệu sản phẩm, 20 triệu watch
Mức 3
10 triệu DAU, 100 triệu sản phẩm, 500 triệu watch (thị trường theo dõi giá nhỏ hơn mạng xã hội; tải do số sản phẩm và ngày sale quyết định)
Trung bình
Tìm địa điểm quanh đây
Giống Yelp, Foody, Google Maps (tìm quán gần đây)

Ứng dụng tìm quán ăn, cà phê, tiệm sửa xe quanh vị trí người dùng, xem điểm đánh giá và viết review kèm ảnh. Ví dụ đứng ở Quận 1 lúc 11 giờ trưa, gõ "bún bò" và muốn thấy các quán trong 2 km đang mở cửa, sắp theo khoảng cách và điểm.

Mức 1
10.000 DAU, 50.000 địa điểm trong một thành phố
Mức 2
1 triệu DAU, 2 triệu địa điểm cả nước
Mức 3
60 triệu DAU, 500 triệu địa điểm toàn cầu (số liệu Grokking ch.29)
Trung bình
Tổng hợp tin tức
Giống Google News, Báo Mới

Ứng dụng gom bài từ hàng nghìn trang báo qua RSS, gộp các bài viết về cùng một sự kiện thành một cụm tin và hiển thị theo chủ đề hoặc theo sở thích. Người đọc bấm vào tin thì được chuyển sang bài gốc trên trang báo.

Mức 1
10.000 DAU, 200 nguồn
Mức 2
1 triệu DAU, 2.000 nguồn
Mức 3
50 triệu DAU, 20.000 nguồn trong và ngoài nước
Trung bình
Ứng dụng hẹn hò quẹt thẻ
Giống Tinder, Bumble

Ứng dụng hẹn hò cho người dùng xem lần lượt hồ sơ của những người ở gần, quẹt phải nếu thích, quẹt trái nếu bỏ qua. Khi hai người cùng quẹt phải nhau thì tạo thành một match và cả hai được báo ngay.

Mức 1
10.000 DAU, 50.000 người đăng ký, một thành phố
Mức 2
1 triệu DAU, 5 triệu người đăng ký, toàn quốc
Mức 3
50 triệu DAU, 100 triệu người đăng ký, 3 region
Trung bình
Ứng dụng theo dõi chạy bộ
Giống Strava, Garmin Connect, Nike Run Club

App ghi lại buổi chạy bộ, đạp xe bằng GPS trên điện thoại, cho xem bản đồ, pace, so thành tích trên từng đoạn đường (segment) và chia sẻ với bạn bè. Ví dụ một nhóm chạy hồ Tây sáng chủ nhật cùng bấm Start lúc 5 giờ.

Mức 1
10.000 DAU
Mức 2
1 triệu DAU
Mức 3
20 triệu DAU, 6 triệu hoạt động/ngày
Khó
Cache phân tán
Giống Redis Cluster, Memcached, Amazon ElastiCache

Tự thiết kế một cụm cache key-value trong RAM dùng chung cho các service của công ty, giống một Redis Cluster hay Memcached nội bộ. Service gọi cache trước khi đọc DB để giảm độ trễ và đỡ tải cho DB.

Mức 1
Sản phẩm 10.000 DAU
Mức 2
Sản phẩm 1 triệu DAU
Mức 3
Nền tảng 50 triệu DAU, nhiều team dùng chung
Khó
Flash sale thương mại điện tử
Giống Shopee 12.12, Lazada flash sale

Tính năng bán số lượng có hạn với giá rất thấp trong khung giờ cố định, ví dụ 0h ngày 12.12. Hàng triệu người mở app cùng một giây để tranh vài nghìn sản phẩm.

Mức 1
10.000 DAU, sale 500 sản phẩm lúc 20h
Mức 2
1 triệu DAU, sale 20.000 sản phẩm lúc 0h
Mức 3
50 triệu DAU, sự kiện 12.12
Khó
Giám sát metrics
Giống Datadog, Prometheus + Grafana

Hệ thống thu thập số đo (CPU, RAM, số request, độ trễ, lỗi) từ server và ứng dụng, lưu theo thời gian, vẽ dashboard và báo động khi có bất thường. Người dùng là kỹ sư vận hành, dev on-call và đội SRE.

Mức 1
1 công ty nhỏ · 200 server/container · 100.000 series
Mức 2
Công ty 1 triệu DAU · 2.000 target · 2 triệu series
Mức 3
SaaS kiểu Datadog · 1 triệu host · 500 triệu series
Khó
Hệ thống thanh toán
Giống Stripe, MoMo, cổng VNPay

Cổng thanh toán đứng giữa cửa hàng (merchant) và các ngân hàng, tổ chức thẻ, ví. Merchant gọi API để thu tiền của khách, hệ thống làm việc với nhà cung cấp thanh toán (PSP), ghi sổ cái và báo kết quả lại cho merchant qua webhook.

Mức 1
10.000 DAU · ≈ 20.000 giao dịch/ngày cho vài trăm shop
Mức 2
1 triệu DAU · ≈ 2 triệu giao dịch/ngày
Mức 3
50 triệu DAU · ≈ 50 triệu giao dịch/ngày (ví điện tử lớn)
Khó
Lập lịch tác vụ phân tán
Giống Cron phân tán, Quartz, Airflow scheduler, AWS EventBridge Scheduler

Dịch vụ dùng chung cho các team trong công ty: đăng ký một tác vụ chạy một lần vào lúc X hoặc lặp lại theo biểu thức cron, ví dụ gửi nhắc gia hạn lúc 9h sáng hay chốt báo cáo lúc 0h. Scheduler lo việc gọi đúng giờ, chạy lại khi lỗi và báo cho chủ tác vụ khi hỏng hẳn.

Mức 1
1 sản phẩm ~10.000 DAU, 50.000 lần chạy/ngày
Mức 2
Nền tảng chung cho cả công ty (các sản phẩm ~1 triệu DAU), 10 triệu lần chạy/ngày
Mức 3
Nền tảng scheduler cho nhiều sản phẩm lớn (tổng 50 triệu+ DAU), 500 triệu job, 1 tỷ lần chạy/ngày
Khó
Mạng chia sẻ ảnh
Giống Instagram, Lemon8

Ứng dụng đăng ảnh kèm chú thích, theo dõi người khác và lướt feed ảnh của những người mình theo dõi. Phần khó nằm ở ba chỗ: nhận và xử lý hàng triệu ảnh mỗi ngày, phát hàng petabyte ảnh qua CDN, và đếm like cho bài của người nổi tiếng.

Mức 1
10.000 DAU
Mức 2
1 triệu DAU
Mức 3
50 triệu DAU
Khó
News feed mạng xã hội
Giống Facebook, Twitter/X timeline

Trang chủ hiển thị bài mới từ những người và trang mà người dùng theo dõi. Đọc nhiều hơn ghi hàng trăm lần, và một số tài khoản có hàng triệu người theo dõi.

Mức 1
10.000 DAU
Mức 2
1.000.000 DAU
Mức 3
50.000.000 DAU
Khó
Nền tảng video
Giống YouTube, Vimeo, FPT Play

Nền tảng cho người dùng tải video lên và cho hàng triệu người khác xem trên web, điện thoại, TV. Video được chuyển thành nhiều độ phân giải và phát qua CDN, chất lượng tự đổi theo tốc độ mạng của người xem.

Mức 1
10.000 DAU, 100 video upload/ngày
Mức 2
1 triệu DAU, 2.000 video upload/ngày
Mức 3
50 triệu DAU, 100.000 video upload/ngày
Khó
Soạn thảo tài liệu cùng lúc
Giống Google Docs, Notion, Microsoft Word Online

Trình soạn thảo trên web cho phép nhiều người sửa cùng một tài liệu cùng lúc, thấy chữ và con trỏ của nhau gần như ngay lập tức. Ví dụ một nhóm 5 người cùng viết báo cáo, mỗi người một phần nhưng thỉnh thoảng sửa chung một đoạn.

Mức 1
10.000 DAU (công cụ nội bộ hoặc startup)
Mức 2
1 triệu DAU
Mức 3
50 triệu DAU (Grokking ch.38 dùng 80 triệu)
Khó
Tìm kiếm bài viết mạng xã hội
Giống Facebook Search, tìm bài trên X (Twitter)

Ô tìm kiếm bài viết trong một mạng xã hội: gõ "bão số 3" hay "quan an ngon q1" và nhận các bài liên quan, ưu tiên bài mới và nhiều like. Thách thức là kho bài tăng hàng chục triệu mỗi ngày, lượt like đổ vào liên tục và người dùng gõ tiếng Việt lúc có dấu lúc không.

Mức 1
10.000 DAU
Mức 2
1 triệu DAU
Mức 3
50 triệu DAU
Khó
Top K video xem nhiều
Giống YouTube Trending, TikTok Xu hướng

Bảng xếp hạng K video được xem nhiều nhất trong 1 giờ qua, 24 giờ qua và từ trước tới nay, có thể lọc theo quốc gia. Mỗi lượt xem là một lần ghi, còn bảng xếp hạng được hàng triệu người đọc, nên bài toán nằm ở chỗ đếm đúng và nhanh khi lượt xem đổ về hàng trăm nghìn mỗi giây.

Mức 1
10.000 DAU, 100.000 lượt xem/ngày
Mức 2
1 triệu DAU, 20 triệu lượt xem/ngày, 2 triệu video
Mức 3
100 triệu DAU, 5 tỷ lượt xem/ngày, 200 quốc gia
Khó
Tổng hợp lượt click quảng cáo
Giống Google Ads, Facebook Ads Manager, hệ thống đo click của ad network

Người xem bấm vào quảng cáo, hệ thống ghi nhận click rồi chuyển họ tới trang của nhà quảng cáo. Nhà quảng cáo xem số click theo phút, giờ, ngày và trả tiền theo số click hợp lệ, nên số liệu vừa phải nhanh vừa phải đúng tới mức tính tiền.

Mức 1
50 nhà quảng cáo, 100.000 click/ngày
Mức 2
5.000 nhà quảng cáo, 10 triệu click/ngày
Mức 3
100.000 nhà quảng cáo, 1 tỷ click/ngày
Khó
Ứng dụng chat realtime
Giống Zalo, WhatsApp, Messenger

Ứng dụng nhắn tin 1-1 và nhóm, tin đến gần như tức thì khi người nhận đang online và được giữ lại khi họ offline. Người dùng mở app nhiều lần mỗi ngày, nên kết nối lâu dài và độ trễ thấp là trọng tâm.

Mức 1
10.000 DAU
Mức 2
1.000.000 DAU
Mức 3
50.000.000 DAU
Khó
Ứng dụng chat với AI
Giống ChatGPT, Claude, Gemini

Ứng dụng cho người dùng trò chuyện với một mô hình ngôn ngữ lớn (LLM): gõ câu hỏi, câu trả lời hiện dần từng chữ, lịch sử hội thoại được lưu để quay lại hỏi tiếp. Khác với chat thường, phần đắt nhất là GPU sinh token, không phải database.

Mức 1
10.000 DAU
Mức 2
1 triệu DAU
Mức 3
50 triệu DAU
Khó
Ứng dụng giao dịch chứng khoán
Giống Robinhood, SSI iBoard, VPS SmartOne

App môi giới cho nhà đầu tư cá nhân: xem bảng giá nhảy liên tục, đặt lệnh mua/bán, theo dõi lệnh khớp và số dư. Công ty chứng khoán chỉ chuyển lệnh lên sàn (HOSE, HNX) và nhận kết quả; việc khớp lệnh do sàn làm.

Mức 1
10.000 DAU (công ty chứng khoán nhỏ)
Mức 2
1 triệu DAU
Mức 3
10 triệu DAU (giữ ở 10 triệu vì cả thị trường chỉ vài triệu tài khoản hoạt động; tải dồn vào 5 giờ và vài phút ATO/ATC)
Khó
Ứng dụng gọi xe
Giống Grab, Be, Uber

Khách mở app, thấy xe quanh mình, đặt chuyến và được ghép với một tài xế gần đó. Tài xế liên tục gửi vị trí, nên đây là hệ thống ghi rất nhiều và cần ghép nhanh mà không giao một tài xế cho hai khách.

Mức 1
≈ 10.000 khách/ngày · 1.000 tài xế online đỉnh
Mức 2
≈ 1 triệu khách/ngày · 60.000 tài xế online đỉnh
Mức 3
≈ 20 triệu khách/ngày · 1 triệu tài xế online đỉnh
Khó
Web crawler
Giống Googlebot, Bingbot, Common Crawl

Hệ thống tự động tải trang web bắt đầu từ danh sách URL gốc (seed), trích link mới rồi đi tiếp, lưu nội dung cho bước index của máy tìm kiếm, công cụ SEO hoặc bộ dữ liệu huấn luyện. Ở đây không có người dùng cuối, quy mô được đo bằng số trang tải mỗi ngày.

Mức 1
1 triệu trang/ngày, vài nghìn domain (crawl giá hoặc tin tức cho một startup)
Mức 2
100 triệu trang/ngày, khoảng 1 triệu domain (công cụ SEO, tìm kiếm chuyên ngành)
Mức 3
5 tỷ trang/ngày, hàng trăm triệu domain (máy tìm kiếm toàn cầu)