Dropbox hợp tác với GitHub giảm kích thước monorepo từ 87GB xuống 20GB
Các kỹ sư tại Dropbox đã hợp tác cùng GitHub để tối ưu hóa cơ chế nén delta trong Git, giúp giảm kích thước kho lưu trữ backend (monorepo) từ 87GB xuống còn 20GB. Việc tối ưu hóa này giúp cải thiện đáng kể thời gian clone mã nguồn và hiệu suất của các pipeline CI/CD.

Các kỹ sư tại Dropbox đã thành công trong việc giảm kích thước kho lưu trữ backend (monorepo) từ 87GB xuống còn 20GB thông qua việc giải quyết các vấn đề không hiệu quả trong mô hình lưu trữ và nén delta của Git. Nỗ lực này không chỉ cải thiện năng suất của các nhà phát triển mà còn nâng cao hiệu suất của tích hợp liên tục (CI), giải quyết các thách thức về quy mô của một kho chứa đóng vai trò là điểm tích hợp trung tâm cho các dịch vụ backend và thư viện dùng chung.
Khi monorepo ngày càng mở rộng, các đội ngũ kỹ thuật tại Dropbox bắt đầu gặp phải tình trạng thao tác clone (sao chép) diễn ra chậm chạp, đôi khi mất hơn một giờ đồng hồ. Ngoài ra, hiệu suất của các pipeline CI cũng bị suy giảm do chi phí truy xuất và xây dựng (fetch và build) lặp đi lặp lại. Sự mở rộng này còn làm tăng nguy cơ chạm đến giới hạn lưu trữ của dịch vụ lưu trữ kho chứa.
Theo các phát hiện của nhóm kỹ thuật Dropbox, vấn đề không chủ yếu do các tệp nhị phân lớn (large binaries) hay các lần commit vô tình gây ra, mà nằm ở cách các thuật toán nén nội bộ của Git xử lý các tập hợp lớn các tệp liên quan.
Git sử dụng nén delta để giảm dung lượng lưu trữ bằng cách xác định sự tương đồng giữa các tệp và lưu trữ sự khác biệt một cách hiệu quả. Tuy nhiên, ở quy mô lớn, các kỹ sư Dropbox nhận thấy rằng các thuật toán này tạo ra các packfile không tối ưu, dẫn đến sự tăng trưởng kích thước kho chứa không tương xứng so với các thay đổi mã nguồn thực tế.
Ishan Mishra, Kỹ sư Phần mềm Cao cấp tại Dropbox, nhận định:
Tốc độ tăng trưởng không khớp với những gì chúng tôi mong đợi từ hoạt động phát triển bình thường, ngay cả ở quy mô của Dropbox. Điều đó gợi ý rằng vấn đề không chỉ nằm ở những gì chúng tôi lưu trữ, mà còn ở cách nó được lưu trữ.
Nhóm đã coi monorepo là một phần của hạ tầng sản xuất và tiến hành phân tích chi tiết các mô hình lưu trữ. Họ đã triển khai các chiến lược đóng gói lại (repacking) được tối ưu hóa và điều chỉnh cách Git cấu trúc các đối tượng delta, tập trung vào việc cải thiện hành vi của cửa sổ delta và độ sâu. Vì việc đóng gói phía máy chủ cho các thao tác clone và fetch được quản lý thông qua hạ tầng của GitHub, các kỹ sư Dropbox đã hợp tác với các nhóm của GitHub để tinh chỉnh các tham số này. Các thay đổi đã được xác thực trong các môi trường phản chiếu trước khi triển khai sản xuất để giảm thiểu rủi ro vận hành.
Sau các tối ưu hóa này, kích thước kho chứa đã giảm từ 87GB xuống còn 20GB, tương ứng với mức giảm khoảng 77%.
Biểu đồ giảm kích thước dữ liệu Git của Dropbox
Thời gian clone đã giảm từ hơn một giờ xuống dưới 15 phút, trong khi các pipeline CI thấy tốc độ thực thi nhanh hơn nhờ giảm chi phí truyền tải và xử lý dữ liệu. Những cải tiến này cũng làm giảm khả năng chạm đến giới hạn kích thước kho chứa và rút ngắn thời gian hội nhập cho các nhà phát triển mới.
Các kỹ sư Dropbox nhấn mạnh rằng bài học chính từ dự án này là tầm quan trọng của việc coi các hệ thống kiểm soát phiên bản là hạ tầng quan trọng, nơi hành vi lưu trữ ảnh hưởng trực tiếp đến tốc độ kỹ thuật. Công việc này đã kết hợp tối ưu hóa cấp công cụ, sự hợp tác liên tổ chức với GitHub và xác thực theo giai đoạn để đảm bảo triển khai an toàn mà không làm gián đoạn quy trình làm việc của nhà phát triển.
Bài viết liên quan

Công nghệ
Martin Fowler: Sự "lười biếng" của lập trình viên và bài học về nợ kỹ thuật trong kỷ nguyên AI
22 tháng 4, 2026

Phần mềm
Workday, Rippling và Slack bị Fivetran chấm điểm thấp về khả năng truy cập dữ liệu
22 tháng 4, 2026

Phần mềm
Google biến Chrome thành "đồng nghiệp AI" với tính năng tự động duyệt web cho doanh nghiệp
22 tháng 4, 2026
