Google – это 2 миллиарда строк кода, и все они – в одном месте.

Google – это 2 миллиарда строк кода, и все они – в одном месте. - 889383171249
Насколько большой Google?

Можно ответить на этот вопрос с точки зрения дохода или цены акций или клиентов или, ну, в общем, метафизического влияния. Но это не все. Google, помимо прочего, является огромной империей компьютерного программного обеспечения. Можно ответить с точки зрения кода.

Рэйчел Потвин из Google подошла довольно близко к ответу на этот вопрос в понедельник на технической конференции в Кремниевой долине. По ее оценкам, программное обеспечение, необходимое для запуска всех интернет-сервисов Google - от поиска Google до Gmail и карт Google - охватывает около 2 миллиардов строк кода. Для сравнения, операционная система Microsoft Windows - один из самых сложных программных инструментов, когда-либо созданных для одного компьютера, проект, который разрабатывался с 1980-х годов, - вероятно, насчитывает 50 миллионов строк.

Таким образом, сборка Google примерно эквивалентна сборке операционной системы Windows 40 раз.

Сравнение более подходящее, чем можно подумать. Подобно коду, лежащему в основе Windows, два миллиарда строк, которыми управляет Google, - это что-то одно. Они управляют поиском, картами, документами, Google+, календарем, почтой, YouTube и всеми другими интернет-сервисами Google, и все же все 2 миллиарда строк находятся в одном репозитории кода, доступном для всех 25 000 инженеров Google. Внутри компании Google рассматривает свой код как огромную операционную систему. «Хотя я не могу доказать это, - говорит Потвин, - я думаю, это самый большой репозиторий, который когда-либо использовался в мире».
Google – это крайний случай. Но этот пример показывает, насколько сложным стало наше программное обеспечение в эпоху Интернета, и как мы изменили наши инструменты и принципы кодирования, чтобы приспособиться к этой дополнительной сложности. Огромный репозиторий Google доступен только программистам внутри Google. Но в некотором смысле это аналог GitHub, общедоступного репозитория с открытым исходным кодом, где инженеры могут делиться огромным количеством кода с Интернетом в целом. Мы движемся к миру, в котором мы регулярно работаем над кодом в массовом масштабе. Только так мы можем идти в ногу с быстрым развитием современных интернет-сервисов.

«Наличие 25 000 разработчиков, как у Google, означает, что компания делится кодом с разнообразным набором людей с самыми разнообразными набором навыков», - говорит Сэм Ламберт, директор по системам в GitHub. «Но, как небольшая компания, вы можете получить некоторые из тех же преимуществ, используя GitHub и открытый исходный код. Есть такая поговорка: «Прилив поднимает все лодки».

Оборотная сторона медали в том, что построить и запустить монолит на 2 миллиарда строк - крайне непростая задача. «Это настоящий вызов в техническом отношении и его преодоление – подвиг», - говорит Ламберт. «Цифры абсолютно потрясающие».

Гениальность же решения GitHub в том, что он позволяет программистам так легко обмениваться и совместно работать над кодом. И при этом на GitHub – не один программный проект, но миллионы проектов. Google делает еще один шаг, объединяя множество проектов в один. Учитывая сложность манипулирования таким количеством кода с таким количеством инженеров, это может показаться немного сумасшедшим. Но, по словам Потвина, это работает.

Послушай Piper

По сути, Google создал свою собственную «систему контроля версий» для манипулирования всем этим кодом. Система называется Piper, и она работает во всей обширной онлайн-инфраструктуре, созданной Google для запуска всех своих онлайн-сервисов. По словам Потвина, система охватывает 10 различных центров обработки данных Google.

Дело не только в том, что все 2 миллиарда строк кода находятся внутри единой системы, доступной практически каждому инженеру в компании. Эта система дает инженерам Google необычайную свободу в использовании и объединении кода из множества проектов. «Когда вы начинаете новый проект, - говорит Потвин WIRED, - у вас уже есть множество библиотек, которые вам доступны. Почти все уже сделано». Более того, инженеры могут внести одно изменение кода и мгновенно развернуть его во всех службах Google. Обновляя одну вещь, они могут обновить все.

У системы есть ограничения. По словам Потвина, определенный высокочувствительный код, вроде алгоритма поиска Google PageRank, находится в отдельных репозиториях, доступных только конкретным сотрудникам. И поскольку они не работают в сети и представляют собой совершенно разные вещи, Google хранит код для своих двух операционных систем устройств - Android и Chrome - в отдельных системах контроля версий. Но по большей части код Google является монолитом, который обеспечивает свободный поток программных блоков, идей и решений.

Бот фактор

Как указывает Ламберт, создание и запуск такой системы требует не только ноу-хау, но и огромных вычислительных мощностей. Piper охватывает около 85 терабайт данных (или 85 000 гигабайт), а 25 000 инженеров Google ежедневно вносят в хранилище около 45 000 исправлений (изменений). Это серьезная деятельность. В то время как операционная система с открытым исходным кодом Linux охватывает 15 миллионов строк кода в 40 000 файлах, инженеры Google еженедельно модифицируют 15 миллионов строк кода в 250 000 файлах.

В то же время, Piper должна работать так, чтобы снимать большую часть бремени с программистов – людей. Необходимо гарантировать, что люди в состоянии понимать весь этот код; что они “не наступают друг другу на ноги” с внесением изменений; что они могут легко удалять ошибки и неиспользуемый код из хранилища. И поскольку все это так сложно, система сама должна брать на себя существенную часть этой работы. Теперь, когда Google перешел на Piper со своей предыдущей системы контроля версий – инструмента под названием Perforce – автоматизированные боты обрабатывают большинство коммитов.

Это не значит, что боты пишут код. Но они генерируют много данных и файлов конфигурации, необходимых для запуска программного обеспечения компании. «Вы должны прилагать согласованные усилия для поддержания работоспособности кода», - говорит Потвин. «И это не только люди, поддерживающие код в рабочем состоянии, но и роботы».

Piper для всех

Могут ли другие воспользоваться такой же системой? Конечно. И они это делают. Основное приложение Facebook охватывает более 20 миллионов строк кода, и компания рассматривает все это как единый проект. Другие делают то же самое в меньшем масштабе. По мере того, как компании приближаются к размеру Google или Facebook, им может помешать логистика. Но Google и Facebook изучают способы изменить ситуацию - и сделать это для всех.

Два интернет-гиганта работают над системой контроля версий с открытым исходным кодом, которую каждый может использовать для массового манипулирования кодом. Он основан на существующей системе под названием Mercurial. «Мы пытаемся выяснить, сможем ли мы масштабировать Mercurial до размера хранилища Google», - говорит Потвин, указывая, что Google работает рука об руку с гуру программирования Брайаном О'Салливаном и другими, кто помогает контролировать работу по кодированию в Facebook.

Идея может показаться экстремальной. В конце концов, немногие компании управляют таким количеством кода, как Google или Facebook сегодня. Но в ближайшее время такие новые компании появятся.

Ссылка на источник: 
https://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/

Комментарии

Комментариев нет.