- Microsoft Office đã sử dụng hệ thống quản lý mã nguồn nội bộ Source Depot trong thời gian dài, sau đó thực hiện một cuộc di chuyển quy mô lớn sang Git nhằm cải thiện trải nghiệm nhà phát triển và thúc đẩy đổi mới công nghệ
- Source Depot có những giới hạn về năng suất do mô hình tập trung, phân nhánh chậm và quy trình làm việc bất tiện; việc chuyển sang Git đòi hỏi hàng trăm kỹ sư và nhiều năm thực hiện
- Trong quá trình di chuyển, nhóm đã vượt qua các thách thức kỹ thuật và tổ chức quy mô lớn như phát triển công nghệ mới như VFS for Git, chuyển hệ thống build/test hiện có và vận hành song song hai hệ thống
- Để bảo đảm việc chuyển đổi thành công, dự án nhấn mạnh cách tiếp cận mang tính hợp tác và đặt con người làm trung tâm như mạng lưới giao tiếp xoay quanh các “champion”, tính minh bạch mạnh mẽ, đào tạo thực dụng và chiến lược rollback tức thì
- Sau di chuyển, dự án ghi nhận các kết quả tích cực như giảm thời gian onboarding, mức độ ưa chuộng Git tăng lên (89%) và năng suất được cải thiện, đồng thời để lại những bài học cốt lõi về thay đổi công nghệ quy mô lớn
Từ Source Depot sang Git: trải nghiệm di chuyển quy mô lớn của Microsoft Office
Thách thức mới mang tên tối đa hóa năng suất nhà phát triển
- Việc nâng cao năng suất nhà phát triển là 'Multiplier work', và giá trị của nó càng lớn trong các tổ chức quy mô lớn
- Dự án di chuyển Microsoft Office từ Source Depot sang Git là một ví dụ tiêu biểu
- Đây không chỉ là thay đổi công cụ, mà là một dự án lớn kéo dài lâu năm với hàng trăm kỹ sư và các hệ thống phức tạp
Source Depot: câu chuyện quản lý mã nguồn của một thời
- Đầu những năm 2000, Microsoft vận hành Source Depot, một hệ thống quản lý phiên bản nội bộ dựa trên công nghệ Perforce
- Source Depot có những giới hạn về hiệu quả làm việc như phân nhánh chậm, kiến trúc tập trung, thời gian checkout mã dài và cơ chế merge bất tiện (Reverse/Forward Integrate)
- Toàn bộ hạ tầng phát triển (build, phát hành, workflow) gắn chặt với hệ thống này, nên không thể thay thế đơn giản
- Việc chuyển Office sang Git đòi hỏi nhiều năm cùng nỗ lực của hàng trăm kỹ sư
Bắt đầu từ OneNote: khởi điểm của quá trình di chuyển
- Trong tổ chức kỹ thuật của Office, chi phí duy trì và vá lỗi Source Depot cùng nhu cầu về “công nghệ có tính cạnh tranh” đã dẫn tới quyết định chuyển mạnh sang Git
- Bộ sản phẩm Office có lịch phát triển khác nhau theo chu kỳ phát hành (vài tháng, nửa năm, hàng tháng, Insider), nên cần vận hành song song Source Depot và Git trong thời gian dài
- Các nhiệm vụ bắt buộc xuất hiện gồm đảm bảo tính nhất quán quản lý phiên bản của Office, xác minh build và chuyển hạ tầng kiểm thử kế thừa
Quy mô Office và chiến lược truyền thông
- Khi đó, Office là một tổ chức cực lớn với 4.000 kỹ sư cùng cộng tác
- Mỗi nhóm được chỉ định một 'Developer Satisfaction Champion', và thông qua mô hình hub-spoke đã hình thành cấu trúc phản hồi và giao tiếp thông suốt giữa các nhóm
- Tác giả là champion của OneNote và đảm nhận vai trò nòng cốt tại hiện trường của cuộc di chuyển quy mô lớn
VFS for Git: vượt qua giới hạn của codebase khổng lồ
- Quy mô mã nguồn lớn đến mức chỉ một lần git clone cũng cần hơn 200GB, nên nhóm đã giải quyết vấn đề bằng Virtual File System for Git (VFS for Git) được phát triển cùng GitHub
- VFS for Git vượt qua giới hạn của Git mặc định bằng cách chỉ tải về những tệp thực sự được sử dụng
- Đây là trải nghiệm vượt qua giới hạn của một trong những hệ thống quản lý phiên bản lớn nhất ngành, với sự phối hợp cùng Microsoft Windows
Cách tiếp cận theo từng giai đoạn của quá trình di chuyển
Giai đoạn 1: vũ trụ song song (Parallel Universe)
- Nhóm xây dựng một dịch vụ bridge đồng bộ Source Depot và Git theo thời gian thực, liên tục cải thiện các vấn đề về sai lệch giữa hai hệ thống và khác biệt mô hình (cấu trúc nhánh, changelist, v.v.)
- Quy trình đồng bộ hóa và build cho các nhánh main/private của Office được vận hành bằng một hệ thống tự động 24/7
- Sau ba lần thử lại, nhóm mới triển khai được hệ thống song song hoạt động ổn định
Giai đoạn 2: xác minh tính tương đương
- Toàn bộ test suite được chạy lặp đi lặp lại trên cả hai hệ thống để chứng minh kết quả build hoàn toàn giống nhau
- Những khác biệt tinh vi như cách xuống dòng, chữ hoa/chữ thường và định dạng kết quả kiểm thử đã được debug và xử lý trong nhiều tháng
- Với kết quả 'Green across the board' (kiểm thử đều vượt qua trên cả hai hệ thống), nhóm đã sẵn sàng bước vào giai đoạn chuyển đổi thực tế
Cách tiếp cận lấy con người làm trung tâm
Giao tiếp đa kênh, lặp đi lặp lại
- Để đồng bộ lịch trình của hơn 4.000 kỹ sư và hàng chục nhóm, dự án xây dựng hệ thống giao tiếp chuyên sâu với champion của từng nhóm
- Thông báo quan trọng được lặp lại ít nhất 3 lần (email, Teams, wiki, họp, v.v.) để giảm thiểu nhầm lẫn
- Khi phát sinh sự cố, nhóm tạo dựng niềm tin bằng cách công khai thông tin ngay lập tức và minh bạch
Đào tạo áp dụng Git và thích nghi
- Với những kỹ sư đã quen với Source Depot suốt 10 năm, nhóm chuẩn bị hệ thống học theo từng bước như môi trường đào tạo thực hành và hướng dẫn lệnh chuyển đổi
- Thông qua thư viện video tập trung vào thực chiến, dự án cung cấp học tập dựa trên các kịch bản thực tế
- Mục tiêu không chỉ là giảm lo lắng và tăng năng lực, mà còn hỗ trợ họ thích nghi với workflow hiện có
Chiến lược rollback và cơ chế an toàn
- Khi chuyển đổi thực tế, nhóm trao cho Director một 'nút đỏ', để có thể rollback ngay bất cứ lúc nào nếu xảy ra vấn đề nghiêm trọng
- Một phần lịch sử cũ của Source Depot cũng được lưu giữ trong thời gian dài, giúp bảo toàn an toàn lịch sử phát triển trước đó
Kết quả và thành tựu chính
- Sau khi chuyển đổi, dự án ghi nhận thời gian onboarding giảm 50%, mức độ ưa chuộng Git đạt 89%, hiệu năng build được cải thiện, hiệu quả code review và hợp tác tăng lên, từ đó mang lại tác động nâng cao năng suất
- Các kỹ sư cũng đánh giá tích cực việc có được những kỹ năng có thể chuyển đổi trong toàn ngành
- Khả năng để nhân sự mới tham gia công việc ngay lập tức cũng được nâng cao
Bài học cốt lõi từ một cuộc di chuyển quy mô lớn
- Để thành công, cần đầu tư vượt xa dự kiến không chỉ vào yếu tố kỹ thuật mà còn vào giao tiếp lấy con người làm trung tâm
- Cần nhấn mạnh việc xây dựng hệ thống vận hành song song, chứng minh tính tương đương tuyệt đối, thiết kế rollback chắc chắn ngay từ đầu và vai trò của nhân sự nòng cốt (champion)
- Việc đo song song các chỉ số định tính như mức độ hài lòng là bắt buộc; trong quá trình thay đổi, sự ổn định tổ chức và cảm giác an toàn tâm lý là rất quan trọng
- Bản chất của thay đổi quy mô lớn là quản trị thay đổi linh hoạt và có hệ thống trên toàn tổ chức
Kết luận và khả năng áp dụng về sau
- Cuộc di chuyển sang Git của Office là một dự án mang tính lịch sử, được hình thành qua nhiều năm chuẩn bị và nhiều tháng thực thi
- Sau cùng, đây được ghi nhận là một ví dụ thành công về thúc đẩy thay đổi tổ chức trong khi vẫn bảo đảm tính liên kết công việc của hàng nghìn người
- Trong các thay đổi quy mô lớn khác như chuyển đổi đám mây, tách rời kiến trúc nguyên khối hay nâng cấp framework, các nguyên tắc xác minh song song, giao tiếp lặp lại và thiết kế rollback nhanh đều có thể áp dụng tương tự
- Dù chưa đi sâu thêm vào các chi tiết kỹ thuật (hạ tầng build, vấn đề offline/hợp đồng, v.v.), bài học quan trọng nhất vẫn là cách tiếp cận chiến lược và tổ chức đối với thay đổi công nghệ quy mô lớn
3 bình luận
Nếu xử lý nhiều tệp nhị phân thì có thể Git không thật sự phù hợp, nhưng với các kho lưu trữ tập trung vào mã nguồn thì có vẻ Git là đủ.
Có lẽ đây cũng là một thay đổi lớn ngay trong nội bộ MS, nhưng nhờ đó những tính năng như partial clone, sparse checkout hay các công cụ như Scalar cũng được công khai ra bên ngoài để có thể sử dụng, điều này có vẻ cũng là một tác động tích cực haha
Ý kiến Hacker News