StackOverFlow: Hệ thống triệu người dùng

Những kỹ sư tài ba phục vụ những kỹ sư ba tài.

StackOverFlow có thứ bậc truy cập đứng thứ 54 trên toàn cầu. họ có 4 triệu người dùng và 40 triệu câu trả lời. Chỉ với 25 servers để làm vọi việc như vậy, phải nói là hệ thống có độ ổn định quá cao, các tác vụ cân bằng tải (load balancing), caching, database, searching và các chức năng khác hoạt động trơn chu chỉ với một số ít nhân viên thì phải nói đến vấn đề kỹ thuật thật sự là đỉnh cao.

StackOverFlow hoàn toàn vẫn sử dụng các công nghệ của Microsoft, các công nghệ này giúp phát triển nhanh và khá tiết kiệm nên có lẽ họ chưa muốn thay đổi. Tuy nhiên mình thấy có một chút về chi phí bản quyền (license) ở đây.

StackOverFlow vẫn sử dụng chiến lược Scale-Up và nói không với Cloud. Với SQL Server tải trọng mức 384GB RAM và 2TB ổ cứng SSD nếu dùng Amazon AWS thì sẽ tốn một khoản chi phí kha khá. Lợi thế của họ là không cần tới việc Scale-out (mở rộng tới nhiều máy chủ) với tải trọng lớn. Họ nói “Máy móc thiết bị thì rẻ, tuy nhiên lập trình viên tài ba thì lại đắt” đây có lẽ đã ăn sâu vào trong tiềm thức kỹ sử của StackOverFlow rồi.

Hệ thống của StackOverFlow và StackExchange có:
—————————————
110 sites và tốc độ tăng trưởng 3 đến 4 lần mỗi tháng.
4 triệu người dùng
8 triệu câu hỏi, 40 triệu câu trả lời
Đứng thứ 54 trên thế giới về lưu lượng truy cập
Tăng trưởng 100% hàng năm
560 triệu pageviews một tháng
Xử lý nhiều hơn 2600-3000 yêu cầu mỗi giây cho tất cả mọi ngày, nghề lập trình có lẽ là một công việc bận rộn và ngày thường bận hơn cuối tuần. 😀
Có 25 máy chủ, 2 TB SSD lưu trữ databases
Mỗi web server có 2x320GB SSD trong một RAID 1.
Mỗi ElasticSearch có 300GB sử dụng SSD
Tỉ lệ đọc và ghi là 40:60 
DB server trung bình sử dụng 10% CPU (quá ít)
2 Load balancer (2 cân bằng tải), 1 active và sử dụng HAProxy

SERVER
—————————————
Tại sao Datatabase lại dùng ít CPU đến vậy? vì nó có tới 380GB RAM trong khi ứng dụng web server chỉ chiếm 10 đến 20% CPU. Một điều đáng chú ý về kỹ thuật ở đây đó là họ cấp phát rất nhiều RAM cho các máy chủ database và toàn bộ thiết bị lưu trữ đều là SSD thay vì HDD. SSD giảm thời gian ghi xuống (gần như bằng 0) giúp các máy chủ database hoạt động rất trơn chu và ổn định.
Scale-up là vẫn ngon nếu đưa bài toán này sang scale-out có thể sẽ phải dùng tới 100 hoặc thậm chí là 200 servers.

Hệ thống khá đơn giản, xây dựng trên nền tảng của .NET, thời gian biên soạn một bài chỉ mất 10 giây trên mỗi máy.
110k lines of code, một khối lượng code khiêm tốn mà tinh túy.
Hệ điều hành của máy chủ sử dụng Windows Server 2012 được đặt tại New York (đã cập nhật lên 2012 R2). Linux system sử dụng Centos 6.4

LƯU TRỮ (SSD)
—————————————
Sử dụng Intel SSD 330 cho tầng web và các tầng khác.
Intel SSD 520 cho các tầng giữa (liên quan tới tác vụ ghi) 
Intel SSD 710 & S3700 cho các tầng database
ElasticSearch thực hiện tốt khi chạy trên các SSD cho phép StackOverFlow ghi và đánh lại chỉ mục (writes/re-indexes) một cách thường xuyên.

TÍNH SẴN SÀNG CAO (High Availability)
—————————————
Đặt các máy chủ ở 2 datacenters, cụm máy chủ thứ nhất ở Net York và cụm còn lại ở Oregon (nơi dành cho dự phòng) toàn bộ dữ liệu sẽ được đồng bộ giữa 2 datacenters này.
Mọi services đều có phương án dự phòng:
Redis có 2 Slaves, SQL có 2 replicas, tag engine có 3nodes, elastic có 3nodes và các services hỗ trợ khác.
Sử dụng CDN(Content Distributed Networking) giúp chuyển giao nội dung tới người dùng nhanh và ổn định hơn.

TEAM
—————————————
Có 5 người trong đội SRE(System Reliability Engineering) chuyên đảm bảo tính tin cậy và khả dụng của hệ thống. Các bạn có thể tìm hiểu thêm về SRE hiện google đã public 3 cuốn sách về nó.
Nhân lực lòng cốt (Dev core) 6 người
Nhân lực phụ trách khác 7 người.
Các bạn thấy đó có hơn chục mạng phụ trách cả một hệ thống phục vụ vài trăm triệu developers hỏi đáp mỗi ngày. Tính ra chi phí cứ phải gọi là siêu tiết kiệm, và sự khác biệt giữa các kỹ sư bậc cao và bậc thấp là một khoảng cách quá xa vời
Họ xây dựng cộng đồng qua việc nhìn vào sứ mệnh của từng dòng code, và một sứ mệnh khác là giúp đỡ người khác và sứ mệnh to lớn cuối cùng là giúp cho cộng đồng giao tiếp thật sự thông suốt và mượt mà.
Họ đầu tư rất khiêm tốn, nhưng hiệu quả thì ngoài mong đợi, tất cả mọi công nghệ dường như đều có chỗ đứng của nó nếu chúng ta vận dụng và sử dụng đúng cách. Phần lớn các hệ thống lớn họ chọn Opensource vì khi mở rộng thì không có chi phí nào phát sinh liên quan tới bản quyền, trái lại họ phải đối mặt với nhiều rủi ro và thách thức với những vấn đề tiềm ẩn. Trong khi StackOverFlow lại chọn toàn bộ công nghệ của Microsoft và cái cách mà các kỹ sư tài ba xây dựng hệ thống bằng những tính toán khác người.

Chú thích:
—————————————
Scale-up: hay còn gọi là vertical scale là việc nâng cấp theo phần cứng theo sự phình ra của hệ thống phần mềm, tuy nhiên hạn chế về mặt vật lý tới một lúc nào đó bạn sẽ không còn chỗ cho CPU, RAM, SSD.
Scale-out: hay còn gọi là hozirontal scale là việc xây mở rộng các services, application qua nhiều máy chủ vật lý khác nhau.

Y Hoang

Please follow and like us:

Leave a Reply

Your email address will not be published. Required fields are marked *