Stack Overflow Architecture (2009)
Bài tóm tắt Stack Overflow 2009 1. Khởi đầu Độ khó: Dễ
Stack Overflow · 2009 · 1. Khởi đầu · Độ khó: Dễ — bài gốc
Nguồn thứ cấp: Todd Hoff (HighScalability) tóm tắt podcast và blog của Jeff Atwood, Joel Spolsky. Nhận định ghi "theo Stack Overflow qua lời kể của HighScalability" hoặc "theo HighScalability". Ảnh chụp 7 năm trước Stack Overflow 2016.
Bối cảnh
- 2009, Stack Overflow khoảng 16 triệu page view/tháng, Alexa hạng khoảng 1.666; cùng hạ tầng chạy thêm Server Fault và Super User.
- Kiến trúc hai tầng: web server (ASP.NET MVC, C#) gọi thẳng database (SQL Server); toàn bộ stack Microsoft.
- Phần cứng (2009): hai web server 1U 4 core, 8 GB RAM; một database server 2U 8 core, 48 GB RAM (vừa nâng lên).
Thay đổi chính
- Không có thay đổi kiến trúc: điểm của bài là lựa chọn scale up (mua máy to hơn, thêm RAM) thay vì scale out lúc mọi người đang đổ xô sang NoSQL.
- Theo Joel Spolsky (qua HighScalability), họ đạt hiệu năng tương đương các site cỡ tương tự với khoảng 1/10 phần cứng.
- Còn nhiều đường lùi nếu cần scale: cache, thêm web server, đĩa nhanh hơn, denormalize, thêm RAM, partition một phần.
Vì sao
- Theo Jeff Atwood: "phần cứng rẻ, lập trình viên đắt"; nâng RAM DB lên 48 GB rẻ hơn thời gian kỹ sư.
- Theo HighScalability: Stack Overflow ở "điểm ngọt" của scale up: lượng user tự giới hạn (lập trình viên), không lưu nhiều media, không có đồ thị xã hội phức tạp.
- NoSQL khó (theo HighScalability): mất aggregate, secondary index, query liên partition, giao dịch vượt một record; mọi bản denormalize phải tự cập nhật và tự xử lý lỗi một phần.
- Giấy phép Microsoft đi kèm scale up: khi phải scale out ra hàng chục core, chi phí license sẽ "cắn".
Bài học cho SWE
- Scale up là lựa chọn hợp lệ cho một lớp bài toán khá lớn; đừng scale out "phòng hờ" khi chưa cần (Sharding và tách database).
- So chi phí phần cứng với chi phí kỹ sư, không chỉ so giá máy (Chi phí hạ tầng và build vs buy).
- Database quan hệ làm sẵn nhiều thứ mà NoSQL bắt mình tự viết; chỉ đổi khi workload thật sự đòi (Chọn database theo workload).
- Người đọc bình luận chỉ ra điểm yếu: database là single point of failure. Scale up giải quyết hiệu năng, không giải quyết sẵn sàng.
Liên quan
- Stack Overflow 2016 (7 năm sau: vẫn scale up, thêm cache, Redis, Elasticsearch) · Stack Overflow 2023
- Sharding và tách database · Chi phí hạ tầng và build vs buy · Chọn database theo workload
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)