Google lớn tới cỡ nào?
Google lớn đến mức nào? Chúng ta có thể trả lời câu hỏi trên bằng con số doanh thu hoặc giá cổ phiếu, hoặc khách hàng, hoặc mức độ ảnh hưởng của công ty với thế giới. Nhưng đó không phải là tất cả.
Bởi vì, ngoài những thứ đó ra, Google còn là một đế chế phần mềm máy tính khổng lồ. Do đó, chúng ta có thể trả lời câu hỏi hỏi “Google lớn tới cỡ nào” bằng số lượng mã (code) mà Google đang quản lý, để có thể cung cấp, duy trì tất cả các dịch vụ Internet hiện nay – từ Google Search đến Gmail đến Google Maps.
Rachel Potvin, nhà quản lý kỹ thuật của Google, ước tính Google phải quản đến khoảng 2 tỷ dòng code. Để dễ hình dung, hệ điều hành Windows của Microsoft, một trong những công cụ phần mềm phức tạp nhất từng được xây dựng cho máy tính, một dự án đã được phát triển từ những năm 1980 – có thể có khoảng 50 triệu dòng code.
Như vậy, Google đang phải quản số lượng code gấp 40 lần so với Windows. 2 tỷ dòng code này điều hành tất cả dịch vụ của Google, từ Google Search, Google Maps, Google Docs, Google+, Google Calendar, Gmail, YouTube, và các dịch vụ internet khác của hãng, và tất cả 2 tỷ dòng này nằm trong một kho code duy nhất để tất cả 25.000 kỹ sư Google xử lý.
Trong nội bộ công ty, Google xử lý code của hãng như một hệ điều hành khổng lồ. “Dù không thể chứng minh, song tôi đoán đây là kho code duy nhất, lớn nhất đang được sử dụng trên thế giới”, Potvin nói.
Google có thể là một trường hợp đặc biệt. Nhưng trường hợp của hãng cho thấy phần mềm đã phát triển mạnh mẽ như thế nào trong thời đại internet. Chỉ các kỹ sư mới có thể tiếp cận kho code khổng lồ của Google, song nó cũng gần giống như kho nguồn mở công khai GitHub, nơi các kỹ sư có thể chia sẻ hàng tấn code lên Internet.
Theo trang Wired, chúng ta đang tiến đến một thế giới mà chúng ta thường phải hợp tác với nhau trong các mã phần mềm, ở một quy mô lớn. Đây là cách duy nhất để chúng ta có thể theo kịp sự tiến triển như vũ bão của các dịch vụ internet hiện đại.
“Có 25.000 nhà phát triển như Google, nghĩa là họ đang chia sẻ code với vô số người có vô số loại kỹ năng”, Sam Lambert, giám đốc hệ thống của GitHub nói. “Nhưng, là một công ty nhỏ, bạn có thể nhận được một số lợi ích tương tự khi dùng GitHub và nguồn mở”.
Làm thế nào quản được 2 tỷ dòng code?
Vấn đề là, xây dựng và vận hành “con quái vật” 2 tỷ dòng code này là một nhiệm vụ không đơn giản. “Đó hẳn là một thách thức kỹ thuật – một kỳ công”, Lambert nói. “Những con số này thực sự gây choáng váng”.
GitHub để các lập trình viên dễ dàng chia sẻ và hợp tác về code. Nhưng GitHub không triển khai một dự án phần mềm đơn lẻ nào, họ trải ra hàng triệu dự án. Còn Google lại kết hợp nhiều dự án vào một. Việc vận hành kho code khổng lồ này cùng với nhiều kỹ sư như vậy hẳn là một khó khăn. Nhưng theo Potvin, mọi thứ vẫn ổn.
Về cơ bản, Google đã xây dựng hệ thống quản lý riêng để vận hành tất cả “đống code” này. Hệ thống này được gọi là Piper và nó chạy qua cơ sở hạ tầng trực tuyến khổng lồ mà Google đã xây dựng để vận hành tất cả dịch vụ online. Theo Potvin, hệ thống Piper được dùng tại 10 trung tâm dữ liệu khác nhau của Google.
Toàn bộ 2 tỷ dòng code này không chỉ nằm trong một hệ thống duy nhất cho mọi kỹ sư của công ty, mà hệ thống này còn mang lai cho các kỹ sư Google sự tự do tuyệt vời để sử dụng và kết hợp code từ các dự án khác nhau. “Khi bắt đầu một dự án mới”, Potvin nói, “các kỹ sư đã có sẵn một thư viện giàu có. Hầu như mọi thứ đã sẵn sàng”. Hơn nữa, kỹ sư có thể tạo ra một thay đổi code và ngay lập tức triển khai nó trên khắp các dịch vụ Google. Khi cập nhật một thứ gì đó, là họ có thể cập nhật mọi thứ.
Tuy nhiên, hệ thống này cũng có những hạn chế. Potvin nói những mã nhạy cảm cao – như là những mã có liên quan đến thuật tìm kiếm PageRank của Google chẳng hạn – được đặt trong những kho riêng biệt khác, và chỉ những nhân viên đặc biệt mới được tiếp cận. Song về cơ bản, code của Google là một “quái vật khổng lồ” cho phép các kỹ sư thoải mái sử dụng để xây dựng các ý tưởng, giải pháp.
Cùng lúc đó, Piper phải vận hành để loại bỏ gánh nặng cho các coder. Nó phải đảm bảo các kỹ sư có thể quản được tất cả các code; rằng họ không dẫm lên chân nhau khi thay đổi code; họ có thể sẵn sàng loại bỏ lỗi và các code không sử dụng ra khỏi kho. Hiện Google đã chuyển hệ thống Piper sang một hệ thống mới có tên Perforce – một dạng như là để các chương trình máy móc tự động xử lý phần lớn nhiệm vụ.
Như Lambert đã nói, xây dựng và điều hành một hệ thống như vậy không chỉ yêu cầu kiến thức mà còn khối lượng sức mạnh điện toán lớn. Piper xử lý khoảng 85 terabyte dữ liệu (85.000 gigabyte) và 25.000 kỹ sư của Google đưa ra khoảng 45.000 thay đổi kho code mỗi ngày. Đó là một khối lượng công việc khủng. Trong khi hệ điều hành nguồn mở Linux có 15 triệu dòng code trên 40.000 file phần mềm, các kỹ sư Google điều chỉnh 15 triệu dòng code trên 250.000 file mỗi tuần.
Điều đó không có nghĩa là các chương trình máy móc này viết code, mà chúng chỉ tạo ra nhiều dữ liệu và file cáu hình cần thiết để điều hành phần mềm của công ty. “Bạn cần phải nỗ lực duy trì code luôn đúng, chuẩn”, Potvin nói. “Và không chỉ con người mới làm được điều này, mà robot cũng làm được”.
Tất cả mọi người đều có thể làm như Google
Liệu các công ty khác có thể dùng mô hình tương tự? Chắc chắn là có. Ứng dụng Facebook quản lý 20 triệu dòng code, và Facebook cũng xử lý toàn bộ trong một dự án duy nhất. Những công ty khác cũng đang làm tương tự trên quy mô nhỏ hơn. Khi các công ty đạt đến quy mô như Google hay Facebook, mọi thứ có thể khó khăn hơn. Song Google và Facebook đang tìm giải pháp – cho tất cả mọi người.
2 đại gia internet đang nghiên cứu một hệ thống quản lý phiên bản nguồn mở để mọi người có thể sử dụng và quản lý code số lượng lớn. Hệ thống mới này dựa trên một hệ thống hiện có là Mercurial. “Chúng tôi đang xem liệu có thể dùng Mercurial cho những dự án quản code quy mô như Google hiện nay”, Potvin nói và cho biết Google đang hợp tác chặt chẽ với chuyên gia lập trình Bryan O’Sullivan và những người khác tại Facebook.
Điều này thật phấn khích. Sau tất cả, rất ít công ty có thể quản lý nhiều code như Google hay Facebook làm hiện nay. Nhưng trong tương lai gần, họ sẽ có thể.