- Tóm tắt nội dung phỏng vấn Roberta Arcoverde, Giám đốc Kỹ thuật của Stack Overflow, trong podcast của Scott Hanselman
- Cô gia nhập công ty với vai trò kỹ sư phần mềm cách đây 8 năm, trở thành staff engineer (tech lead), rồi chuyển hướng sang quản lý vào đầu năm nay
S: Điều gì đã thay đổi khi trở thành giám đốc kỹ thuật?
- R: Tôi bắt đầu quản lý con người. Quản lý sự nghiệp, giúp họ phát triển. Đồng thời có tầm nhìn chiến lược về việc chúng tôi nên đi về đâu
Liên tục theo dõi kiến trúc phần mềm trông ra sao, liệu nó có đang đi đúng hướng để tăng trưởng hay không, và liệu PR lần này có đưa chúng tôi tiến gần hơn tới nơi mình muốn trong 3 năm tới chứ không chỉ giải quyết hiện tại hay không
- S: Tức là lập kế hoạch và hành động với góc nhìn dài hạn hơn, để không bị bất ngờ trước thay đổi của công nghệ.
- R: Chính xác. Và tôi cũng có nhiều buổi 1-on-1 hơn.
- S: Ở Microsoft chỗ tôi cũng đang là mùa review, nên suốt mấy ngày chỉ toàn 1-on-1 và đánh giá. Họp mãi cũng chán, vậy để làm mới đầu óc thì bạn có nhìn vào code không?
- R: Có, tôi xem code. Tôi tin rất mạnh rằng cả những quản lý tuyến đầu như tôi cũng nên viết code hằng ngày. Tôi nghĩ điều đó giúp bản thân duy trì năng lực kỹ thuật.
Điều đó cũng giúp ích khi cố vấn cho các kỹ sư junior, và khi đánh giá tác động của những thay đổi do các kỹ sư senior đề xuất.
Nếu tiếp tục viết code và quan sát phần mềm đang đi về đâu, thì khi có một đợt thiết kế lại lớn, bạn sẽ có thể đặt ra "những câu hỏi đúng" để giúp họ đạt kết quả tốt nhất.
S: Kiến trúc của Stack Overflow như thế nào?
- R: Stack Overflow khá đặc biệt, nhất là khi so với các site lớn khác bắt đầu từ năm 2008.
- Hiện chúng tôi có một codebase đã 14 năm tuổi,
- vận hành trên các máy on-prem trong data center riêng.
- Chưa từng chuyển lên cloud.
- Đây cũng là một ứng dụng monolithic. Chúng tôi không tách thành service hay microservice.
- Chúng tôi có một web app multi-tenant. Nó dựa trên .NET và chạy như một ứng dụng đơn trên 9 web server.
- Vận hành trên IIS, và một máy chủ có thể xử lý 6.000 request mỗi giây. (2 tỷ PV mỗi tháng)
- S: IIS đã giảm đi nhiều khi Apache, NGINX, Kubernetes... nổi lên. Hẳn bạn cũng có thể đi theo hướng đó, vậy có thứ gì các bạn cố ý bỏ qua không? Và có thứ gì các bạn nghĩ là "đây mới là thứ SO cần" không?
- R: Chúng tôi đã bỏ qua khá nhiều thứ trong số đó. Gần đây nhất là toàn bộ câu chuyện về microservice và Kubernetes.
Lý do lớn nhất để bỏ qua là vì triết lý phát triển mạnh mẽ nhất của SO.
Chúng tôi luôn bắt đầu từ câu hỏi: "Bạn đang cố giải quyết vấn đề gì?"
Những công cụ như trên không giải quyết các vấn đề mà chúng tôi đang đối mặt.
Ví dụ, việc chuyển từ monolith sang microservice hay các service chủ yếu là để mở rộng bằng cách chia tách đội ngũ.
Để nhiều team có thể làm việc trên cùng một dự án mà không xung đột với nhau, và để triển khai nhanh hơn.
Nhưng triển khai nhanh chưa bao giờ là vấn đề với chúng tôi. SO triển khai nhiều lần mỗi ngày, mất 4 phút, và nếu có sự cố thì cũng có thể rollback chỉ trong vài phút.
Hiện tại lead time của chúng tôi, hay thời gian để merge, đều rất tốt và không phải điều gì đau đớn.
Khoảng 50 kỹ sư đang phát triển nền tảng Q&A.
- R: Năm 2014 chỉ có 10 người, và khi đó việc để mọi người hiểu toàn bộ codebase là khá dễ.
Giờ đây việc onboarding kỹ sư mới đang trở nên khó hơn.
Đến một lúc nào đó, có thể chúng tôi sẽ tách một số module cụ thể ra để có các team chuyên trách xem xét chúng mà không cần hiểu toàn bộ code.
Nhưng chúng tôi vẫn chưa đến mức đó. Chúng tôi vẫn chưa gặp vấn đề ấy, và chúng tôi là những người theo chủ nghĩa thực dụng.
Các chi tiết kiến trúc khác
- 2 lớp cache (bộ nhớ và web server)
- Ngoài ra còn có nhiều SQL Server: với 1,5 TB RAM nên có thể truy cập nhanh 1/3 toàn bộ DB trong bộ nhớ
→ Đây có lẽ là một cấu hình rất đắt đỏ, khó mà dùng rẻ trên cloud
- Trang câu hỏi không được cache. Dù đây là nơi có tỷ lệ truy cập cao nhất nên 80% lưu lượng đổ về đó...
→ Trước đây từng thử cache bằng Redis nhưng tỷ lệ hit/miss cache không đủ tốt
- Thời gian render trang hiện tại khoảng 20 ms
- StackExchange cũng đang chạy multi-tenant trên cùng hệ thống máy chủ. Một ứng dụng xử lý toàn bộ 200 site
→ Tức là chỉ cần deploy một ứng dụng là áp dụng cho tất cả
- Rolling build bên dưới HAProxy
7 bình luận
Ồ ồ…. đoạn nói là dùng
haproxyđể rolling build khá ấn tượng, nhưng mình tò mò không biết họ triển khai như thế nào nhỉTôi có đọc transcript podcast, nhưng cảm giác phần dùng
haproxychỉ được nhắc rất ngắn rồi lướt qua. Nhìn từ việc câu chuyện được nối sang phần health check và việc họ đang làm khá nhiều monitoring, có vẻ như họ đã tự xây dựng và vận hành khá tốt… đại khái là vậy ^^;Tôi khá tò mò không biết họ triển khai kiểu gì để có thể "deploy trong 4 phút".
Tôi cũng từng vận hành máy chủ RAM 4TB / RAM 8TB ở công ty trước, và dù chi phí triển khai quả thật khổng lồ, tôi vẫn không nghĩ rằng có thể thay thế cấu hình đó bằng cloud.
Chắc là vậy rồi.
Cảm ơn vì phần tóm tắt.
Có nhiều điểm rất ấn tượng.
Đây là một cuộc phỏng vấn khá dài nên tôi đã tóm tắt xen kẽ ở một số đoạn. Hãy nghe toàn bộ và tham khảo bản chép lời! Bản chép lời: https://app.podscribe.ai/episode/83433649