Kho lưu trữ của Google như thế nào?


62

Tôi nghe nói Google có một kho lưu trữ riêng tư (nội bộ) khổng lồ gồm tất cả các mã của họ và nhân viên của họ có quyền truy cập vào đó để khi họ phát triển mọi thứ, họ không phải phát minh lại bánh xe. Tôi muốn biết thêm về nó!

Có ai ở đây từ Google có thể mô tả chi tiết hơn một chút không, hoặc bạn có biết thêm một chút về nó không? Tôi muốn biết chủ yếu về cách thức tổ chức và cách họ có thể giúp nhân viên dễ dàng tìm thấy thứ gì đó trong một cơ sở mã khổng lồ như vậy.


2
Các công ty khác được cho là sử dụng "monorepo" là Facebook và Twitter. Rất thích nghe trực tiếp từ những người đã trải nghiệm nó.
Dennis

Câu trả lời:


37

Dưới đây là video giải thích cách thức tổ chức: Phát triển ở tốc độ và quy mô của Google

Ashish Kumar trình bày cách Google quản lý để giữ mã nguồn của tất cả các dự án của mình, hơn 2000, trong một thân mã chứa hàng trăm triệu dòng mã, với hơn 5.000 nhà phát triển truy cập vào cùng một kho lưu trữ.


8
Tôi biết câu trả lời khác có nhiều upvote hơn, nhưng video này có tất cả dữ liệu từ câu trả lời khác và sau đó một số. Nếu bạn (người đọc) muốn tóm tắt, hãy đọc câu trả lời của Chris, nếu không, nếu bạn có một giờ để xem video này!
Ricket

63

Đối với hầu hết Google sử dụng thiết lập Perforce . Tuy nhiên, có những công cụ nội bộ để khiến các công cụ khác như git hoạt động trên nó. (Cách họ thực hiện điều này tôi không biết.) Tuy nhiên, các dự án nguồn mở lớn như AndroidChromium có kho lưu trữ riêng biệt.

Được xây dựng trên đỉnh Perforce là rất nhiều ứng dụng nội bộ xuất sắc . Ví dụ, có các công cụ để xây dựng, thử nghiệm và đánh giá mã không có gì kỳ diệu.

Một phần vì 'ma thuật' và văn hóa thử nghiệm này, Google không thực sự sử dụng phân nhánh. Mọi người kiểm tra vào 'chính'. Đối với bất kỳ dự án nào bạn có thể xem nguồn, xây dựng nó và chạy các bài kiểm tra đơn vị mà không có bất kỳ kiến ​​thức chuyên môn nào. Điều này là rất lớn. Khi tôi ở Microsoft, mỗi sản phẩm đòi hỏi sự hy sinh của một con vật khác nhau để xây dựng và chạy thử nghiệm của chúng sẽ không còn nữa.

Ngoài ra, Google có một hướng dẫn phong cách toàn công ty cho các ngôn ngữ chính mà chúng tôi sử dụng. nếu bạn có quyền truy cập vào mã nguồn của nhóm khác, điều gì sẽ là điểm nếu định dạng hoàn toàn có ích!

Đối với tìm kiếm, bạn có thể quen với Tìm kiếm mã của Google . Có một phiên bản đặc biệt, cùng với các công cụ tìm kiếm mã bí mật khác giúp cho việc điều hướng mã dễ dàng hơn nhiều.

Nói tóm lại, Google có một nền văn hóa tập trung rất kỹ thuật, hiểu được giá trị của các công cụ và năng suất của nhà phát triển.


1
Tôi đã sử dụng hướng dẫn phong cách mà bạn đã tham khảo trong nhiều năm, thật tuyệt! Nhưng đó không phải là cho các dự án nguồn mở có nguồn gốc từ Google? Có một hướng dẫn khác nhau cho các dự án nội bộ?
Dennis

1
Công cụ tìm kiếm mã "tối mật" đang được tạo thành nguồn mở tại github.com/google/kythe - nó là một tập hợp con và không có giao diện người dùng (không còn nữa, ví dụ này không còn được duy trì nữa) nhưng tôi nghĩ Mục tiêu là làm cho Kythe hoàn chỉnh như công cụ nội bộ của họ.
mmlac

3

Nó là rất lớn:

(kể từ tháng 1 năm 2015)

  • Tổng số hồ sơ: 1 tỷ
  • Số lượng tệp nguồn: 9 triệu
  • Dòng mã: 2 tỷ
  • Độ sâu của lịch sử: 35 triệu cam kết
  • Kích thước của nội dung: 86 terabyte
  • Cam kết mỗi ngày làm việc: 45 nghìn

Họ sử dụng một công cụ nội bộ có tên là Piper, dựa vào cơ sở hạ tầng của google.

Nguồn: Tại sao Google lưu trữ hàng tỷ dòng mã trong một kho lưu trữ duy nhất


@CodesInChaos Thông tin này được lấy từ video trong slide lúc 3:22 . Slide chứa nhiều giải thích về cách những con số được tính toán.
Benjamin Crouzier

Đợi đã, có nghĩa là trung bình 2 dòng trên mỗi tệp?
Hashim
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.