Google son 2 mil millones de líneas de código, y todo está en un solo lugar


Cuál es el tamaño ¿Google? Podemos responder a esta pregunta en términos de ingresos, precio de las acciones, clientes o, bueno, influencia metafísica. Pero eso no es todo. Google es, entre otras cosas, un vasto imperio de software informático. Podemos responder en términos de código.

Rachel Potvin de Google estuvo a punto de dar una respuesta el lunes en una conferencia de ingeniería en Silicon Valley. Ella estima que el software necesario para ejecutar todos los servicios de Internet de Google, desde Google Search hasta Gmail y Google Maps, abarca aproximadamente 2 mil millones líneas de código. En comparación, el sistema operativo Windows de Microsoft, una de las herramientas de software más complejas jamás diseñadas para una sola computadora, un proyecto que ha estado en desarrollo desde la década de 1980, probablemente tenga alrededor de 50 millones de líneas.

Entonces construir Google es más o menos equivalente a construir el sistema operativo Windows 40 veces.

La comparación es más relevante de lo que crees. Al igual que el código que sustenta a Windows, los 2 mil millones de líneas que impulsan a Google son una cosa. Impulsan la Búsqueda de Google, Google Maps, Google Docs, Google+, Google Calendar, Gmail, YouTube y todos los demás servicios de Internet de Google, pero las 2.000 millones de filas residen en un único repositorio de código accesible para 25.000 ingenieros de Google. Dentro de la empresa, Google trata su código como un gran sistema operativo. «Aunque no puedo probarlo», dice Potvin, «supongo que es el depósito individual más grande que se usa en cualquier parte del mundo».

Google es un caso extremo. Pero su ejemplo muestra cuán complejo se ha vuelto nuestro software en la era de Internet, y cómo hemos cambiado nuestras herramientas y filosofías de codificación para adaptarse a esta complejidad adicional. El enorme repositorio de Google solo está disponible para los programadores de Google. Pero en cierto modo, es similar a GitHub, el repositorio público de código abierto donde los ingenieros pueden compartir grandes cantidades de código con Internet en general. Nos estamos moviendo hacia un mundo en el que colaboramos regularmente en el código a escala. Esta es la única manera de mantenerse al día con la rápida evolución de los servicios de Internet modernos.

“Tener 25 000 desarrolladores, como los tiene Google, significa que comparte código con un conjunto diverso de personas con diversas habilidades”, dice Sam Lambert, director de sistemas en GitHub. «Pero, como pequeña empresa, puede obtener el mismo beneficio usando GitHub y el código abierto. Hay un dicho: ‘Una marea creciente levanta todos los barcos'».

La otra cara de la moneda es que construir y operar un monolito de 2 mil millones de líneas no es una tarea sencilla. «Debe ser un desafío técnico, una gran hazaña», dice Lambert. «Los números son absolutamente asombrosos».

Parte de la genialidad de GitHub es que hace que sea muy fácil para los codificadores compartir y colaborar en el código. Pero GitHub no alberga un solo proyecto de software. Abarca millones de proyectos. Google va un paso más allá al combinar múltiples proyectos en uno. Dado lo difícil que es hacer malabares con tanto código con tantos ingenieros, puede parecer un poco loco. Pero según Potvin, funciona.

escucha al gaitero

Básicamente, Google ha construido su propio «sistema de control de versiones» para hacer malabarismos con todo ese código. El sistema se llama Piper y se ejecuta en la amplia infraestructura en línea que Google ha creado para ejecutar todos sus servicios en línea. Según Potvin, el sistema cubre 10 centros de datos diferentes de Google.

No se trata solo de que los 2 mil millones de líneas de código residan en un solo sistema accesible para casi todos los ingenieros de la empresa. Es que este sistema les da a los ingenieros de Google una libertad inusual para usar y combinar código de una miríada de proyectos. «Cuando comienzas un nuevo proyecto», dijo Potvin a WIRED, «ya tienes toneladas de bibliotecas. Casi todo ya se ha hecho». Además, los ingenieros pueden realizar un solo cambio de código e implementarlo instantáneamente en todos los servicios de Google. Al actualizar una cosa, pueden actualizar todo.

Hay límites para este sistema. Potvin dice que un código altamente confidencial, algo similar al algoritmo de búsqueda PageRank de Google, reside en repositorios separados accesibles solo para empleados específicos. Y debido a que no funcionan en la red y son muy diferentes, Google almacena el código para los sistemas operativos de sus dos dispositivos, Android y Chrome, en sistemas de control de versiones separados. Pero en su mayor parte, el código de Google es un monolito que permite que los bloques de construcción, las ideas y las soluciones de software fluyan libremente.

El factor bot

Como señala Lambert, construir y operar un sistema de este tipo requiere no solo conocimientos técnicos, sino también enormes cantidades de potencia informática. Piper abarca unos 85 terabytes de datos (también conocidos como 85 000 gigabytes) y los 25 000 ingenieros de Google realizan unas 45 000 confirmaciones (cambios) en el repositorio todos los días. Es una actividad seria. Mientras que la explotación de código abierto de Linux abarca 15 millones de líneas de código en 40 000 archivos de software, los ingenieros de Google modifican 15 millones de líneas de código en 250 000 archivos cada semana.

Al mismo tiempo, Piper debe esforzarse por eliminar gran parte de la carga de los programadores humanos. Debe garantizar que los humanos puedan entender todo este código; que no se pisan los dedos de los pies con cambios de código; que pueden eliminar fácilmente los errores y el código no utilizado del repositorio. Y debido a que todo es tan difícil, en realidad debe quitarle parte de ese trabajo a los humanos. Ahora que Google se mudó a Piper desde su antiguo sistema de control de versiones, una herramienta llamada Perforce, los bots automatizados manejan la mayoría de las confirmaciones.

Esto no significa que los bots escriban código. Pero generan gran parte de los datos y archivos de configuración necesarios para ejecutar el software de la empresa. «Tienes que hacer un esfuerzo concertado para mantener el código en buen estado», dice Potvin. «Y no son solo los humanos los que mantienen el código en buen estado, sino también los bots».

gaitero para todos

¿Podrían otros beneficiarse del mismo tipo de sistema? Seguramente. Y lo hacen. La aplicación principal de Facebook abarca más de 20 millones de líneas de código y la empresa lo trata todo como un solo proyecto. Otros hacen lo mismo en menor escala. A medida que las empresas se acercan al tamaño de Google o Facebook, la logística puede interponerse en el camino. Pero Google y Facebook están explorando formas de cambiar eso, para todos.

Los dos gigantes de Internet están trabajando en un sistema de control de versiones de código abierto que cualquiera puede usar para hacer malabarismos con el código a escala. Se basa en un sistema existente llamado Mercurial. «Estamos tratando de ver si podemos escalar Mercurial al tamaño del repositorio de Google», dice Potvin, lo que indica que Google está trabajando mano a mano con el gurú de la programación Bryan O’Sullivan y otros que ayudan a supervisar el trabajo de codificación. en Facebook. .

Esto puede parecer extremo. Después de todo, pocas empresas hacen tanto malabares con el código como lo hacen Google o Facebook en la actualidad. Pero en un futuro próximo lo harán.

Artículos Recientes

Post Relacionados

Leave A Reply

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí