Google là công ty lớn như thế nào ? Câu trả lời thường gặp đó là dựa vào số liệu về doanh thu, giá trị cổ phiếu, tập khách hàng của công ty này hay không thể đo đếm được như những giá trị vô hình mà Google mang đến cho thế giới, tầm ảnh hưởng của nó đối với đời sống của nhân loại…Nhưng không chỉ có vậy, Google còn là một đế quốc hùng mạnh và to lớn về code và các phần mềm máy tính. Chúng ta sẽ tìm thêm câu trả lời về sự hùng mạnh của Google qua việc nghiên cứu mã lập trình tạo nên bộ máy của đế chế này.
Rachel Potvin đã đem đến gần như một câu trả lời thứ hai tại một hội nghị về kỹ thuật được tổ chức gần đây tại thung lũng Silicon. Cô ước tính rằng các phần mềm cần thiết để chạy tất cả các dịch vụ từ Internet của Google – từ Google Search đến Gmail đến Google Map… cần đến hơn 2 tỉ dòng mã. So sánh nhanh chóng với hệ điều hành Window của Microsoft, một trong những phần mềm phức tạp nhất từng được xây dựng cho một máy tính cá nhân, một dự án được phát triển từ những năm 1980 – có khả năng sử dụng đến 50 triệu dòng mã.
Phép so sánh đơn giản này cho thấy việc xây dựng hệ thống Google so với việc xây dựng hệ thống hệ điều hành Window gấp khoảng 40 lần.
Những con số này thật đáng kinh ngạc – SAM LAMBERT, giám đốc hệ thống GitHub
Cũng giống như các mã nền tảng của hệ thống Window, 2 tỉ dòng code của Google điều hướng mọi thứ được đặt trong một hệ thống thống nhất. Chúng điều hướng các dịch vụ của Google như Google Search, Google Maps, Google Docs, Google+, Google Calendar, Gmail, YouTube và các dịch vụ Internet khác của Google. Điều đặc biệt là tất cả được lưu trữ ở một khu vực duy nhất và luôn luôn sẵn sàng cho 25.000 lập trình viên của Google làm việc. Trong công ty, Google xử lý mã của nó như một hệ điều hành lớn, “mặc dù tôi không thể chứng minh điều đó, nhưng tôi đoán là đây là kho lưu trữ mã lớn nhất đang được sử dụng và có thể truy cập ở bất kỳ nơi nào trên thế giới.” – Potvin cho biết.
Google là một trường hợp đặc biệt. Nhưng những ví dụ của nó cho thấy độ phức tạp của phần mềm được phát triển theo lứa tuổi và làm thế nào để thay đổi công cụ mã hóa và triết lý để thay đổi theo sự phức tạp đó. Kho lưu trữ của Google chỉ dành riêng cho lập trình viên của Google. Nhưng theo một cách nào đó, nó tương tự như Github, kho lưu trữ mã nguồn công cộng, nơi các lập trình viên có thể chia sẻ một lượng lớn mã lập trình của mình. Chúng ta đang định hướng tới một thế giới trong đó chúng ta thường xuyên cộng tác trên mã lập trình trên một quy mô lớn. Đây là cách duy nhất để chúng ta theo kịp sự phát triển của các dịch vụ internet hiện đại.
Có 25.000 lập trình viên, có nghĩa là nó có khả năng chia sẻ mã với một tập hợp đa dạng của những người có một tập hợp đa dạng các kỹ năng khác nhau. Nhưng như một công ty nhỏ, bạn có thể nhận được một số trong chúng, giống như sử dụng GitHub và mã nguồn mở. Có thể nói: nước lên, thuyền lên. – Sam Lambert.
Mặc trái của nó là xây dựng một số lượng dòng lệnh lên đến 2 tỉ là một công việc không hề đơn giản. “Nó là một thử thách không hề nhỏ về mặt kỹ thuật. Những con số này thât sự đáng kinh ngạc” – Sam Lambert nói.
Một phần tạo nên sự ưu việt của GitHub đó là nó cho phép các lập trình viên có thể dễ dàng chia sẻ và cộng tác với nhau trên mã. Nhưng GitHub không chứa một dự án phần mềm duy nhất, nó bao gồm hàng triệu dự án. Google đã đi một bước xa hơn: kết hợp nhiều dự án thành một.
Phụ mục
Lắng nghe Piper
Về cơ bản, Google xây dựng hệ thống kiểm soát phiên bản hay còn gọi là version control system riêng của mình để kiểm soát tất cả code của mình. Hệ thống này được gọi là Piper và nó chạy trên cơ sở hạ tầng rộng lớn của Google đã được xây dựng để chạy tất cả các dịch vụ trực tuyến của mình. Theo Potvin – hệ thống này trải dài suốt 10 trung tâm dữ liệu khác nhau của Google. Chỉ cần cập nhật một thứ, tất cả sẽ được cập nhật.
Không chỉ là 2 tỉ dòng code cùng được đặt trên một hệ thống duy nhất, nó còn luôn sẵn sàng cho mọi kỹ sư trong công ty. Hệ thống này mang lại cho các kỹ sư của Google một sự tự do bất ngờ và có thể sử dụng và kết hợp mã cho các dự án khác nhau. Khi bạn bắt đầu một dự án mới, bạn có sẵn một thư viện được xây dựng trước cho bạn, hầu như mọi thứ đều đã được thực hiện. Hơn nữa, các kỹ sư có thể có một sự thay đổi mã duy nhất và ngay lập tức nó được triển khai trên tất cả các dịch vụ của Google. Nói cách khác, chỉ cần cập nhật một thứ, tất cả sẽ lập tức được cập nhật.
Vẫn có những hạn chế của hệ thống này. Potvin cho biết một só mã có độ nhạy cao – giống như thuật toán PageRank trong bộ máy tìm kiếm – chúng được lưu trữ trong một kho riêng và chỉ dành cho một số nhân viên cụ thể. Vì vậy, nó không chạy trên mạng lưới chung và có nhiều điểm rất khác nhau trên đó. Google lưu trữ mã cho 2 hệ thống Android và Chrome trên các hệ thống kiểm soát phiên bản riêng biệt, nhưng đối với hầu hết mã Google là một mảng nguyên khối cho phép xây dựng chạy tự do đối với phần mềm xây dựng khối, ý tưởng và giải pháp.
Hậu duệ của Piper
Như Lambert đã chỉ ra ở trên, xây dựng một hệ thống lớn như vậy không chỉ cần biết một lượng lớn hiệu năng tính toán được xử lý như thế nào. Piper sử dụng khoảng 85 terabyte dữ liệu(tương đương với 85.000 gigabyte) và 25.000 kỹ sư của Google tạo ra khoảng 45.000 thay đổi mỗi ngày. Đó là một công việc cực kỳ phức tạp và đòi hỏi sự tập trung cao độ. Trong khi hệ điều hành mã nguồn mở Linux sử dụng 15 triệu dòng lệnh trong 40.00 tập tin thì kỹ sư Google sửa đổi 15 triệu dòng mã trên 250.000 tập tin mỗi tuần.
Đồng thời, Piper cũng làm việc để loại bỏ nhiều gánh nặng từ lập trình của con người. Nó phải đảm bảo rằng con người phải điều khiển và hiểu được tất cả các mã làm gì, rằng họ không giẫm vào chân nhau khi thực hiện các thay đổi mã, rằng họ có thể dễ dàng sửa và loại bỏ các mã lỗi trong kho. Và bởi vì công việc này không hề đơn giản, một số công việc phải được thực hiện bởi con người. Và bây giờ, Google đã chuyển từ Piper – một phiên bản cũ của version control system sang một phiên bản mới gọi là Perforce – một chương trình được xem là “tự động xử lý phần lớn các mã được cập nhật lên.
Piper cho mọi người
Những người khác có thể được hưởng lợi từ một loại hệ thống ? Chắc chắn!
Và khi nhận ra, họ sẽ làm !
Ứng dụng FaceBook hiện tại sử dụng lên đến 20 triệu dòng mã và công ty sử dụng nó như một dự án duy nhất. Những người khác cũng có cách làm tương tự nhưng với một mô hình nhỏ hơn. Khi các công ty có thể tiếp cận được một khối lượng kích thước tương tự như Google và FaceBook đang có, vấn đề logistic có thể được đặt ra và sẽ có phương pháp giải quyết cụ thể. Tuy nhiên, Google và FaceBook đang tìm cách thay đổi điều đó – cho tất cả mọi người.
Hai gã khổng lồ Internet đang làm việc trong một hệ thống kiểm soát mã nguồn mở mà bất kỳ ai cũng có thể sử dụng để sắp xếp mã theo một quy mô lớn. Nó dựa trên một hệ thống gọi là Mercurial. Google cũng đang cố gắng để xem liệu chúng ta có thể mở rộng Mercurial với kích thước của Google. Họ cũng đang làm việc mật thiết với Bryan O’Sullivan và những người khác để giúp giám sát mã hóa làm việc tại FaceBook.
Điều này nghe có vẻ kỳ lạ ! Nhưng sau tất cả, rất ít công ty có thể quản lý mã như Google và FaceBook đang làm hôm nay. Còn tương lai, sẽ có nhiều và điều đó đang rất gần.
Nguồn: dịch từ wired.com
Antony Bui says
Hi Ad,
Mình gặp một vấn đề khiến mình đau đầu cả tháng nay mà vẫn chưa giải quyết được, mong ad có kinh nghiệm từng làm G.A rồi thì hướng dẫn mình chỉ một chút thôi cũng được.
Vài tháng trước mình có mua lại tên miền myasiatravel.com , sau đó lập thành 1 đội khoảng 15 copywriter viết bài cho website này. Đầu tư kĩ càng, chăm chút như thế mà đợt vừa rồi mình tạo 1 tài khoản G.A rồi lấy code ads đặt lên website mình lại ko hiện ads ra.
Mình lấy code ads ấy đặt lên cả chục trang web khác thì nó lại hiện. Mình đã mất cả tháng check từ source code, plugin, vps-hosting, code ads…. đều không phải, nên cuối cùng mình kết luận là do domain bị banned ( có thể do chủ sở hưu tên miền trước đó đã vi phạm chính sách/điều khoản của G.A )
Mình đã gửi đơn khiếu nại và gửi mail rất nhiều vào các mail support của GG nhưng vẫn chưa tìm được cách khắc phục. Vậy nên rất mong ad nếu có kinh nghiệm thì rộng lòng chỉ dẫn một chút, khai sáng cho mình :(
Cám ơn ad!