Sei sulla pagina 1di 12

2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM

ACM.org neteACM AcercadeComunicaciones RecursosACM AlertasyFeeds

REGISTRARSE

Buscar

CASA EDICINACTUAL NOTICIAS BLOGS OPININ INVESTIGACIN PRCTICA CARRERAS ARCHIVO VDEOS

Home / RevistaArchivo / dejuliode2016(Vol.59,No.7) / PorquGooglealmacenamilmillonesdelneasdecdigoenunasola... / textocompleto

ARTCULOSCONTRIBUYERON

PorquGoogleTiendasLosmilmillonesdelneasde
cdigoenunnicorepositorio
PorRachelPotvin,JoshLevenberg
CommunicationsoftheACM,vol.59No.7,pginas7887
INICIARSESINparatener
10.1145/2854146
accesocompleto
Comentarios(3)
Nombredeusuario
VERCOMO: LA
ACCIN:
Contrasea

"Seteolvidtucontrasea?
LosprimerosempleadosdeGoogledecidierontrabajarconuna
CrearunaCuentaWebACM
basedecdigocompartidogestionadoatravsdeunsistemade
controldecdigofuentecentralizada.Esteenfoquehaservido REGISTRARSE
Googleasdurantemsde16aos,yhoyendalagranmayora
delosactivosdesoftwaredeGooglecontinaaseralmacenados
enunrepositorionico,compartido.Mientrastanto,elnmero
CONTENIDODELARTCULO:
dedesarrolladoresdesoftwaredeGooglehaaumentadode
Introduccin
maneraconstante,yeltamaodelabasedecdigoGoogleha
crecidoexponencialmente(verFigura1).Comoresultado,la Ideasclave
tecnologautilizadaparaalbergarelcdigobasetambinha GoogleEscala
evolucionadosignificativamente. Fondo
Anlisis
Volverarriba
Alternativas

Ideasclave Conclusin
Expresionesdegratitud
referencias
autores
Notasalpie
Figuras
Mesas

RECURSOSACM

Enesteartculosedescribelaescaladeesecdigobaseylafuentededatosdeldepsitomonolticahechaala
medidadeGoogleylasrazonesseeligielmodelo.Googleutilizaunsistemadecontroldeversionesde
cosechapropiaparaalbergarunagranbasedecdigovisiblepara,yutilizadoporlamayoradelos
desarrolladoresdesoftwareenlaempresa.Estesistemacentralizadoeslabasedemuchosdelosflujosde
trabajoparadesarrolladoresdeGoogle.Aqu,proporcionamosantecedentessobrelossistemasyflujosde
trabajoquefacilitanlaadministracinfactibleytrabajarproductivamenteconungranrepositoriodetales.
ExplicamoslaestrategiadeGoogle"desarrollobasadoeneltronco"ylossistemasdeapoyoqueelflujode
trabajoymantienenlaestructurabasedecdigodeGooglesaludable,incluyendoelsoftwareparaelanlisis
esttico,limpiezadelcdigo,ylarevisindecdigooptimizado.

Volverarriba

GoogleEscala
https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 1/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
RepositoriodesoftwaremonolticadeGoogle,queesutilizadoporel95%desusdesarrolladoresdesoftware
entodoelmundo,cumpleconladefinicindeunagranescaladeultra4sistema,proporcionandoevidenciade
queelrepositoriodemodelosdeunasolafuentesepuedeescalarconxito.

ElcdigobasedeGoogleincluyeaproximadamentemilmillonesdearchivosytieneunahistoriade
aproximadamente35millonesdeconfirmacionesqueabarcantodalaexistenciade18aosdeGoogle.El
repositoriocontiene86TBunadelosdatos,incluyendoaproximadamentedosmilmillonesdelneasdecdigo
ennuevemillonesdearchivosdeorigennicas.Elnmerototaldearchivostambinincluyearchivosde
origencopiadosenlasramasdeliberacin,archivosqueseeliminanenlaltimarevisin,archivosde
configuracin,documentacinyarchivosdedatosdeapoyoconsultelatablaaquparaunresumendelas
estadsticasdelrepositoriodeGoogleapartirdeenerode2015.

En2014,aproximadamente15millonesdelneasdecdigosecambiaronb enaproximadamente250.000
archivosenelrepositoriodeGooglesobreunabasesemanal.ElncleodeLinuxesunejemplodestacadode
ungranrepositoriodesoftwaredecdigoabiertoquecontieneaproximadamente15millonesdelneasde
cdigoen40.000archivos.14

BasedecdigodeGoogleescompartidapormsde25.000desarrolladoresdesoftwaredeGoogledesde
decenasdeoficinasenpasesdetodoelmundo.Enundadetrabajotpico,secomprometen16.000cambiosa
labasedecdigo,yotro24.000cambiossoncometidosporsistemasautomatizados.Cadadaelrepositorio
sirvemilmillonesdearchivodesolicitudesdelectura,conaproximadamente800.000consultasporsegundo
durantelospicosdedemandayunpromediodeaproximadamente500.000consultasporsegundocadada
detrabajo.LamayorpartedeestetrficoseoriginaensistemasdeacumulacinytestdistribuidosdeGoogle.
do

LaFigura2indicaelnmerodecommittershumanosnicosporsemanaalrepositorioprincipal,Enero2010
juliode2015.Figura3informessecomprometeporsemanaalrepositorioprincipaldeGoogleduranteel
mismoperododetiempo.Lalneaparaeltotaldeconfirmacionesincluyedatostantoparaelcasointeractivo
uso,ousuarioshumanos,yloscasosdeusoautomatizados.Cadasmsgrandesenambosgrficosse
producendurantelasvacacionesqueafectanaunnmerosignificativodeempleados(comoeldadeNavidad
yelDadeAoNuevo,DadeAccindeGraciasestadounidense,yelDadelaIndependenciadeAmrica).

Enoctubrede2012,repositoriocentraldeGooglehaaadidosoporteparalosusuariosdeWindowsyMac
(hastaentonceserasloLinux),ylasventanasexistentesyrepositoriodeMacsefusionconelrepositorio
principal.HerramientasdeGoogleparaelrepositoriocombinalosatributosdetodosloscambioshistricos
quesefusionaronasusautoresoriginales,deahelpulsadorcorrespondienteenelgrficodelafigura2.El
efectodeestacombinacinestambinevidenteenlaFigura1.

Elgrficodeconfirmacionesporsemanasmuestralatasadecometerestabadominadaporlosusuarios
humanoshasta2012,momentoenelqueGooglecambiaunaimplementacindecontroldecdigo
personalizadoparaacogerelrepositoriocentral,comosediscutemsadelante.Despusdeestatransicin,
commitautomatizadosenelrepositoriocomenzaronaaumentar.Elcrecimientodelatasadecometer
continadebidoprincipalmentealaautomatizacin.

LagestindeestaescaladerepositorioylaactividadenquehasidoundesafopermanenteparaGoogle.A
pesardevariosaosdeexperimentacin,Googlenofuecapazdeencontrarunsistemadecontroldeversin
decdigoabiertodisponibleenelmercadooparaapoyarestetipodeescalaenunnicorepositorio.El
sistemapatentadodeGooglequefueconstruidoparaalmacenar,versinyexpenderestecdigobaseesel
nombreclavedePiper.

Volverarriba

Fondo
Antesdeexaminarlasventajasydesventajasdetrabajarconunrepositoriomonoltico,senecesitaalguna
informacinsobrelasherramientasyflujosdetrabajodeGoogle.

PiperyCITC.Piperalmacenaunnicorepositoriograndeysellevaacaboenlapartesuperiordela
infraestructuradeGoogleestndar,originalmenteBigtable,2 ahoralallaveinglesa.3Pipersedistribuyeen10
centrosdedatosdeGoogledetodoelmundo,basndoseenelPaxos6algoritmoparagarantizarlacoherencia
entrelasrplicas.Estaarquitecturaproporcionaunaltonivelderedundanciayayudaaoptimizarlalatencia
paralosdesarrolladoresdesoftwaredeGoogle,noimportadondetrabajan.Adems,lasoperacionesde
almacenamientoencachyasncronosocultangranpartedelalatenciadelareddedesarrolladores.Estoes
importanteporquelaobtencindetodoslosbeneficiosdelacadenadeherramientasbasadasenlanubede
Googleexigealospromotoresaestarenlnea.

GooglesebasenuncasoPerforceprimaria,alojadoenunasolamquina,juntoconlainfraestructurade
almacenamientoencachdeencargo1durantemsde10aosantesdelapuestaenmarchadePiper.
ContinalaescaladelrepositoriodeGooglefuelaprincipalmotivacinparaeldesarrollodePiper.
https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 2/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
DadoqueelcdigofuentedeGoogleesunodelosactivosmsimportantesdelacompaa,lascaractersticas
deseguridadsonunaconsideracinclaveeneldiseodePiper.Pipersoportalistasdecontroldeaccesoa
niveldearchivo.LamayorpartedelrepositorioesvisibleparatodoslosusuariosdePiperdSinembargo,los
archivosdeconfiguracinimportantesoarchivosqueincluyenalgoritmoscrticosparaelnegociopuedenser
msestrechamentecontrolados.Adems,leeryescribirelaccesoalosarchivosdePiperseregistra.Silos
datossensiblessepusoaccidentalmenteaPiper,elarchivoencuestinpuedeserpurgado.Losregistrosde
lecturapermitenalosadministradoresdeterminarsialguienaccedealarchivoproblemticaantesdeser
retirado.

EnelflujodetrabajoPiper(verFigura4),losdesarrolladorescrearunacopialocaldelosarchivosenel
repositorioantesdecambiarlos.Estosarchivossealmacenanenunespaciodetrabajopropiedaddela
promotora.UnespaciodetrabajoPiperescomparableaunacopiadetrabajoenApacheSubversion,unclon
localenGit,ounclienteenPerforce.ActualizacionesdesdeelrepositoriodePiperpuedenintroducirseenun
espaciodetrabajoysefusionconeltrabajoencurso,segnsedesee(vaselaFigura5).Unainstantneadel
espaciodetrabajopuedesercompartidaconotrosdesarrolladoresparasurevisin.Losarchivosenun
espaciodetrabajoestncomprometidosconelrepositoriocentralslodespusdepasarporelprocesode
revisindecdigoGoogle,comosedescribemsadelante.

LamayoradelosdesarrolladoresaccesoaPiperatravsdeunsistemallamadoLosclientesenlanube,o
CITC,queconsisteenunmotordealmacenamientobasadoenlanubeyLinuxsolamenteunfusible13del
sistemadearchivos.Losdesarrolladoresvenasusreasdetrabajocomodirectoriosdelsistemadearchivos,
incluyendosuscambiossuperpuestosenlapartesuperiordeldepsitocompletoPiper.CITCcompatiblecon
lanavegacindecdigoyherramientasnormalesdeUnixsinnecesidaddeclonaroestadodesincronizacina
nivellocal.Losdesarrolladorespuedenveryeditararchivosencualquierlugaratravsdelrepositoriode
Piper,yslolosarchivosmodificadossealmacenanensuespaciodetrabajo.Estaestructurapermiteespacios
detrabajoCITCtpicamenteconsumenslounapequeacantidaddealmacenamiento(unespaciodetrabajo
promediotienemenosde10archivos)altiempoquepresentaunavistaperfectadetodoelcdigobasede
Piperparaeldesarrollador.

TodaslasescriturasalosarchivossealmacenancomoinstantneasenCITC,porloqueesposiblerecuperar
lasetapasanterioresdetrabajo,segnseanecesario.Lasinstantneassepuedennombrarexplcitamente,
restauradosoetiquetadosparasurevisin.

espaciosdetrabajoCITCestndisponiblesencualquiermquinaquesepuedeconectaralsistemade
almacenamientobasadoenlanube,porloqueesfcilcambiarlasmquinasyrecogereltrabajosin
interrupcin.Tambinhaceposiblequelosdesarrolladoresvereltrabajodeotrosespaciosdetrabajoen
CITC.Elalmacenamientodetodoslostrabajosencursoenlanubeesunelementoimportantedelprocesode
flujodetrabajodeGoogle.estadodetrabajoes,pues,adisposicindeotrasherramientas,incluyendoel
sistemabasadoenlanubedeconstruccin,lainfraestructuradepruebaautomatizado,ylanavegacinde
cdigo,edicinyherramientasderevisin.

VariosflujosdetrabajoseaprovechandeladisponibilidaddelcdigonocomprometidaenCITCparahacerlos
desarrolladoresdesoftwarequetrabajanconlagranbasedecdigomsproductivo.Porejemplo,cuandose
envauncambiohaciafueraparalarevisindecdigo,losdesarrolladorespuedenhabilitarunaopcinde
confirmacinautomtica,queesparticularmentetilcuandolosautoresdecdigoyloscolaboradoresse
encuentranendiferenteszonashorarias.Cuandolarevisinsemarcacomocompleta,laspruebasse
ejecutarnsipasan,elcdigoserenviadaalrepositoriosinnecesidaddeintervencinhumana.La
herramientadecdigodenavegacinGoogleCodeSearchapoyaedicionessencillasutilizandolosespaciosde
trabajoCITC.Mientrasnavegaelrepositorio,losdesarrolladorespuedenhacerclicenunbotnparaentraren
elmododeedicinyhacerunsimplecambio(talescomolafijacindeunerrortipogrficoomejorarun
comentario).Entonces,sinsalirdelnavegadordecdigo,puedenenviarsuscambiosalosrevisores
apropiadosconconfirmacinautomticahabilitada.

PipertambinsepuedeutilizarsinCITC.Losdesarrolladorespuedenalmacenarensulugarespaciosde
trabajoPiperensusequiposlocales.PipertambintienelimitadainteroperabilidadconGit.Msdel80%de
losusuariosutilizanhoyPiperCITC,conlaadopcindecontinuarcreciendodebidoalasmuchasventajas
proporcionadasporCITC.

PiperyCITChacenquetrabajardeformaproductivaconunanica,monolticarepositoriodefuentesposibles
enlaescaladelabasedecdigoGoogle.Eldiseoylaarquitecturadeestossistemasfueronambosmuy
influenciadosporelparadigmadedesarrollobasadoeneltroncoempleadoenGoogle,talcomosedescribe
aqu.

Basadoeneldesarrollodeltronco.Googleprcticasdedesarrollobasadoseneltroncoenlaparte
superiordelrepositoriodefuentesPiper.LagranmayoradelosusuariosPipertrabajarenla"cabeza"oel
msreciente,versindeunasolacopiadelcdigollamado"tronco"o"lneaprincipal".Serealizancambiosen
elrepositorioenunnicopedido,enserie.Lacombinacindedesarrollobasadoentroncoconunrepositorio
centraldefineelmodelodecdigobasemonoltica.Inmediatamentedespusdecualquierconfirmacin,el

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 3/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
nuevocdigoesvisiblea,yutilizablespor,todoslosotrosdesarrolladores.ElhechodequelosusuariosPiper
trabajanenunasolavisinconsistentedelabasedecdigoGoogleesclaveparaproporcionarlasventajas
descritasmsadelanteenesteartculo.

Desarrollobasadoeneltroncoesbeneficiosoenpartedebidoaqueevitalasfusionesdolorososqueocurrena
menudocuandoeselmomentodeconciliarlasramasdelargavida.Desarrolloenlasramasesinusualyno
estbienapoyadoenGoogle,aunqueramasseutilizannormalmenteparalasliberaciones.Ramasde
liberacinsecortandeunarevisinespecficadelrepositorio.Correccindeerroresymejorasquedeben
aadirseaunaliberacintpicamentesedesarrollansobrelalneaprincipal,acontinuacin,palmitasenla
ramadeliberacin(vaselaFigura6).Debidoalanecesidaddemantenerlaestabilidadyellmitedela
rotacinenlaramadeliberacin,unaliberacinestpicamenteunainstantneadelacabeza,conunpequeo
nmeroopcionaldecerezapickstiradoendelacabezasegnseanecesario.Elusoderamasdelargavidacon
undesarrolloparaleloenlaramaylalneaprincipalesextremadamenterara.

PiperyCITChacenquetrabajardeformaproductivaconunanica,monolticarepositoriodefuentes
posiblesenlaescaladelabasedecdigoGoogle.

Cuandosedesarrollannuevascaractersticas,nuevasyviejasrutasdecdigocomnmenteexisten
simultneamente,controladamedianteelusodebanderascondicionales.Estatcnicaevitalanecesidadde
unaramadedesarrolloyhacequeseafcildeencenderyapagarfuncionesatravsdelasactualizacionesde
configuracinenlugardelanzamientosbinarioscompletos.Mientrasquealgunoscomplejidadadicionalse
incurreparalosdesarrolladores,seevitanlosproblemasdecombinacindeunaramadedesarrollo.flips
banderahacenqueseamuchomsfcilymsrpidoparacambiarlosusuariosdelasnuevas
implementacionesquetienenproblemas.Estemtodoseutilizanormalmenteencdigoespecficodel
proyecto,nocdigodelabibliotecacomn,y,finalmente,lasbanderasseretirantanviejocdigosepuede
eliminar.Googleutilizaunenfoquesimilarparaelencaminamientodetrficoentiemporealatravsde
diferentesrutasdecdigoparallevaracaboexperimentosquesepuedenajustarentiemporealatravsdelos
cambiosdeconfiguracin.TalesexperimentosA/Bpuedenmedirtodo,desdelascaractersticasde
rendimientodelcdigoparaparticipacindelosusuariosrelacionadosconloscambiosdeproductossutiles.

Googleflujodetrabajo.Serequierenvariasmejoresprcticasysistemasdeapoyoparaevitarlarotura
constanteenelmodelodedesarrollobasadoeneltronco,dondemilesdeingenieroscometenmilesde
cambiosenelrepositoriosobreunabasediaria.Porejemplo,Googlecuentaconunainfraestructurade
pruebasautomatizadasqueiniciaunareconstruccindetodaslasdependenciasafectadasencasitodoslos
cambiosalrepositorio.Sicreauncambiogeneralizadoroturadeacumulacin,esunsistemaenellugarpara
deshacerelcambioautomticamente.Parareducirlaincidenciademalcdigoquesecometen,enprimer
lugar,lainfraestructuradeGooglealtamentepersonalizable"depresentarpreviamente"proporcionapruebas
yanlisisdeloscambiosautomatizadaantesdequeseaadenalabasedecdigo.Unconjuntodeanlisis
globalesdepresentarpreviamenteseejecutanparatodosloscambios,ylosresponsablesdecdigospueden
crearanlisispersonalizadosqueseejecutansloendirectoriosdentrodelabasedecdigoqueespecifican.
Unpequeoconjuntodebibliotecasdelncleodemuybajonivelutilizaunmecanismosimilaraunaramade
desarrolloparahacercumplirlaspruebasadicionalesantesdenuevasversionesestnexpuestosalcdigode
cliente.

UnaspectoimportantedelaculturadeGooglequefomentalacalidaddelcdigoeslaexpectativadequetodo
elcdigoesrevisadoantesdesercomprometidoconelrepositorio.Lamayoradelosdesarrolladorespueden
veryproponercambiosenlosarchivosencualquierlugaratravsdelabasedecdigo,contodalaexcepcin
deunpequeoconjuntodecdigoaltamenteconfidencialquesecontrolaconmscuidado.Elriesgoasociado
conlosdesarrolladoresdecambiodecdigoquenoestnprofundamentefamiliarizadosconsemitigaatravs
delprocesodecdigoderevisinyelconceptodelapropiedaddelcdigo.ElcdigobasedeGooglese
presentaenunaestructuraderbol.Todosycadadirectoriotieneunconjuntodepropietariosquecontrolan
siseaceptaruncambioalosarchivosensudirectorio.Lospropietariossonnormalmentelosdesarrolladores
quetrabajanenlosproyectosenlosdirectoriosencuestin.Uncambioamenudorecibeunarevisinde
cdigodetalladadeundesarrollador,laevaluacindelacalidaddelcambio,yunaconfirmacindeaprobacin
deunpropietario,laevaluacindelaidoneidaddelcambioensuzonadelcdigobase.

Loscolaboradoresdecdigocomentariossobreaspectosdelacalidaddelcdigo,incluyendoeldiseo,la
funcionalidad,lacomplejidad,laspruebas,nombres,lacalidaddelcomentario,yelestilodecdigo,talcomo
sedocumentaporlasdistintasguasdeestilodeGoogleespecficosdelidioma.eGooglehaescritouna
herramientadecdigoderevisindenominadocrticaquepermitequeelrevisorparaverlaevolucindel
cdigoyhacercomentariossobrecualquierlneadelcambio.Seanimaanuevasrevisionesyunaconversacin
quellevaaunfinal"vebienparam"delrevisor,loqueindicalarevisinsehayacompletado.

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 4/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM

ElsistemadeGoogleestticaanlisis(Tricorder10)ylainfraestructuradepresentarpreviamentetambin
proporcionandatossobrelacalidaddelcdigo,coberturadelaspruebas,ylosresultadosdelaspruebasde
formaautomticaenlaherramientadecdigoderevisinporGoogle.Estoscontrolescomputacionalmente
intensivasseactivanperidicamente,ascomocuandouncambiodecdigoesenviadoparasurevisin.
Tricordiotambinproporcionasolucionessugeridasconlaedicindecdigodeunsoloclicparamuchos
errores.Estossistemasproporcionandatosimportantesparaaumentarlaeficaciadelasrevisionesdecdigoy
mantenerlabasedecdigoGooglesaludable.

UnequipodedesarrolladoresdeGoogledevezencuandollevaracabounaseriedecambiosdecdigode
limpiezadeamplioalcanceparamanteneranmslasaluddelabasedecdigo.Losdesarrolladoresque
realizanestoscambioscomnmenteseseparanendosfases.Conesteenfoque,uncambiocompatiblecon
versionesanterioresgrandesehizoporprimeravez.Unavezquesehacompletado,unsegundocambioms
pequeosepuedehacerparaeliminarelpatrnoriginalqueyanosehacereferencia.Unaherramientade
GooglellamadoRosiefapoyalaprimerafasedeestetipodelimpiezasagranescalayloscambiosdecdigo.
ConRosie,losdesarrolladoresacrearunparchegrande,yaseaatravsdeunadebuscaryreemplazar
operacinatravsdetodoelrepositorioopormediodeherramientasderefactorizacinmscomplejas.
Rosieseencargaentoncesdedividirelparchegrandeenmanchasmspequeas,probandodeforma
independiente,enviarlasalarevisindecdigo,ycomprometersedeformaautomticaunavezquepasanlas
pruebasyunarevisindecdigo.Rosiedivideparchesalolargodelaslneasdedirectoriodelproyecto,
basndoseenlajerarquadecdigodelapropiedaddescritaanteriormenteparaenviarparchesalosrevisores
apropiados.

LaFigura7indicaelnmerodecambiosenviadosalservidoratravsdeRosiesobreunabasemensual,loque
demuestralaimportanciadeRosiecomounaherramientapararealizarcambiosenelcdigodegranescalaen
Google.ElusodeRosieesequilibradacontraloscostosgeneradosporlosequiposquenecesitanpararevisar
elflujocontinuodecambiossimplesRosiegenera.ComopopularidadyusodeRosiecreci,sehizoevidente
unciertocontroltuvoqueserestablecidoparalimitarelusodeRosiealoscambiosdealtovalorqueseran
distribuidosamuchoscrticos,enlugardealoscambiosatmicosindividualesorechazados.En2013,Google
haadoptadounprocesodecambioderevisinagranescalaformalquecondujoaunadisminucinenel
nmerodeconfirmacionesatravsdeRosiedel2013al2014.EnlaevaluacindeuncambioRosie,elcomit
derevisinequilibraelbeneficiodelcambiofrentealoscostosdetiemporevisorylarotacinrepositorio.
Msadelanteexaminamosestoycompensacionessimilaresmsdecerca.

Enresumen,Googlehadesarrolladounaseriedeprcticasyherramientasparaapoyarasuenormebasede
cdigomonoltico,incluyendoeldesarrollobasadoeneltronco,ladistribucinrepositoriodecdigofuente
dePiper,elclienteespaciodetrabajoCITC,yflujodetrabajosupportherramientasCrtica,CodeSearch,
Tricorder,yRosie.Sediscutenlasventajasydesventajasdeestemodeloaqu.

Volverarriba

Anlisis
Estaseccindescribeyamplatantolasventajasdeunabasedecdigomonolticoyloscostesrelacionados
conelmantenimientodeunmodelodeestetipoaescala.

Ventajas.ElapoyoalaultragranescaladelabasedecdigodeGoogle,mientrasquemantieneunbuen
rendimientoparadecenasdemilesdeusuariosesunreto,peroGooglehaadoptadoelmodelomonoltico
debidoasusventajasconvincentes.

Lomsimportante,escompatiblecon:

versionesunificado,unafuentedelaverdad

cdigoextensointercambioylareutilizacin

gestindeladependenciasimplificado

cambiosatmicos

refactorizacinagranescala

Lacolaboracinentrelosequipos

lmitesflexiblesyequipopropiedaddelcdigoy

lavisibilidaddecdigoyclaraestructuraderbolqueproporcionaespaciosdenombredelequipoimplcita.

Unnicorepositorioofreceversionesunificadoyunanicafuentedeverdad.Nohayconfusinsobrequ
repositorioalbergalaversinautorizadadeunarchivo.Siunequipoquieredependerdecdigodeotro
equipo,puededependerdeellodirectamente.LabasedecdigodeGoogleincluyeunagrancantidadde
bibliotecastiles,yelrepositoriomonolticoconduceaunampliointercambiodecdigoyreutilizacin.

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 5/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM

ElsistemadeconstruccinGoogle5hacequeseafcilincluircdigoatravsdedirectorios,loquesimplificala
gestindeladependencia.Loscambiosenlasdependenciasdeunproyectoprovocarunarecompilacindel
cdigodependiente.Dadoquetodoelcdigoseversionaenelmismorepositorio,haysolounaversindela
verdad,yningunapreocupacinacercadelasversionesindependientesdelasdependencias.

Enparticular,elmodelopermiteGoogleparaevitarelproblemade"dependenciadiamante"(verFigura8)
queseproducecuandoAdependedeByC,ByCdependendeD,peroBrequierelaversinD.1yCrequierela
versinD0.2.EnlamayoradeloscasosahoraesimposibleconstruirA.ParalabibliotecaDdebase,que
puedellegarasermuydifcildelanzarunanuevaversinsincausarlarotura,yaquetodassusllamadasse
debenactualizaralmismotiempo.Laactualizacinesdifcilcuandolaspersonasquellamanbibliotecasestn
alojadosendiferentesrepositorios.

Enelmundodelcdigoabierto,dependenciassedividencomnmenteporlasactualizacionesdelabiblioteca,
ylabsquedadelasversionesdelabibliotecaquetrabajartodosjuntospuedeserundesafo.Laactualizacin
delasversionesdedependenciaspuedeserdolorosoparalosdesarrolladores,ylosretrasosenla
actualizacindecreardeudatcnicaquepuedellegarasermuycaro.Porelcontrario,conunrboldefuentes
monolticaquetienesentido,yesmsfcil,paralapersonaactualizacindeunabibliotecaparaactualizar
todaslasdependenciasafectadasalmismotiempo.Ladeudatcnica,efectuadosporlossistemasdependientes
sepagainmediatamentecuandoserealizancambios.Loscambiosenlasbibliotecasdebasesepropagan
instantneamenteatravsdelacadenadeladependenciaenlosproductosfinalesquesebasanenlas
bibliotecas,sinnecesidaddeunpasodesincronizacinolamigracinseparada.

Tengaencuentaelproblemadeladependenciadediamantepuedeexistirenelniveldelafuente/API,tal
comosedescribeaqu,ascomoentrelosbinarios.12 EnGoogle,elproblemabinarioseevitaatravsdeluso
delavinculacinesttica.

Lacapacidaddehacercambiosatmicosestambinunacaractersticamuypotentedelmodelomonoltico.Un
desarrolladorpuedehaceruncambioimportantetocarcientosomilesdearchivosatravsdelrepositorioen
unasolaoperacinconsistente.Porejemplo,undesarrolladorpuedecambiarelnombredeunaclaseo
funcinenunsolocomprometenysinembargonorompercualquiercompilacionesopruebas.

Ladisponibilidaddetodoelcdigofuenteenunnicorepositorio,oalmenosenunservidorcentralizado,
hacequeseamsfcilparalosencargadosdelmantenimientodebibliotecasdelncleoderealizarlaspruebas
ypruebasderendimientoparaloscambiosdealtoimpactoantesdeconfirmarse.Esteenfoqueestilpara
explorarymedirelvalordeloscambiosaltamenteperturbadores.Unejemploconcretoesunexperimento
paraevaluarlaviabilidaddeconvertirloscentrosdedatosdeGoogleparasoportararquitecturasnox86.

ConlaestructuramonolticadelrepositoriodeGoogle,undesarrolladornuncatienequedecidirdndese
encuentranloslmitesdedepsito.Losingenierosnonecesitan"tenedor"eldesarrollodeunabiblioteca
compartidaosefusionanatravsderepositoriosparaactualizarversionescopiadasdecdigo.lmitesdel
equiposonfluidos.Cuandoserealizancambiosoplanesdepropiedaddelproyectoparaconsolidarlos
sistemas,todoelcdigoyaestenelmismorepositorio.Esteentornohacequeseafcildehacer
refactorizacingradualyreorganizacindelabasedecdigo.Elcambioparamoverunproyectoyactualizar
todaslasdependenciassepuedenaplicardeformaatmicaenelrepositorio,ylahistoriadeldesarrollodel
cdigoafectadopermaneceintactoydisponible.

Otroatributodeunrepositoriomonolticoeseldiseodelabasedecdigoseentiendefcilmente,yaquese
organizaenunsolorbol.Cadaequipotieneunaestructuradedirectoriosdentrodelrbolprincipalquesirve
eficazmentecomopropioespaciodenombresdeunproyecto.Cadaarchivodefuentepuedeseridentificada
porunsolounacadenaderutadearchivoqueincluyeopcionalmenteunnmeroderevisin.Navegarporla
basedecdigo,esfcilentendercmocualquierarchivodeorigenencajaenelgrancuadrodelrepositorio.

ElcdigobasedeGoogleestenconstanteevolucin.Losesfuerzosdemodernizacinbasedecdigoms
complejos(comolaactualizacinenC++11oeldesplieguedeoptimizacionesderendimiento9)amenudose
gestionandeformacentralizadaporlosmantenedoresdecdigobasededicados.Talesesfuerzospuedentocar
mediomillndedeclaracionesdevariablesodelossitiosfuncindellamadarepartidosencientosdemilesde
archivosdecdigofuente.Debidoaquetodoslosproyectossealmacenandeformacentralizada,equiposde
especialistaspuedenhacerestetrabajoparatodalaempresa,enlugarderequerirmuchosindividuosa
desarrollarsuspropiasherramientas,tcnicasoconocimientos.

Comounejemplodecmojueganestosbeneficios,considereequipocompiladordeGoogle,queasegura
desarrolladoresdeGoogleempleanlamayoradelascadenasdeherramientasarribahastalafechayse
beneficiandelasltimasmejorasenelcdigogeneradoy"debuggability."Elrepositoriomonoltico
proporcionaelequipoconplenavisibilidaddecmovariosidiomasseutilizanenGoogleylespermitehacer
limpiezasdetodoelcdigobaseparaevitarcambiosdeltimahoraconstruyeocreandoproblemasparalos
desarrolladores.Estosimplificaengranmedidalavalidacindelcompilador,loquereducelosciclosde
lanzamientodelcompiladoryhaciendoposiblequeGooglehagademaneraseguraversionesdelos
compiladoresregulares(normalmentemsdel20poraoporloscompiladoresdeC++).

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 6/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
Elusodelosdatosgeneradosporlaspruebasderendimientoyderegresinejecutarseenversiones
compiladasdetodoelcdigobasedeGoogle,laconfiguracindelcompiladormelodasdelequipodel
compiladorpordefectoseanptimas.Porejemplo,debidoaesteesfuerzocentralizado,losdesarrolladoresde
JavadeGoogletodosvieronsurecoleccindebasura(GC)elconsumodeCPUdisminucinenmsdeun50%
ysutiempodepausaGCdisminucinenun10%yun40%entre2014y2015.Adems,cuandoelsoftware
erroressedescubren,amenudoesposibleparaelequipoparaaadirnuevasadvertenciasparaprevenirla
recurrencia.Enconjuncinconestecambio,queseescaneantodoelrepositorioparaencontrarycorregir
otrasinstanciasdelproblemadesoftwareseestabordando,antesdepasaranuevoserroresdecompilacin.
Tenerpatronesqueresultproblemticoenelpasadoelcompiladorrechazoesunimpulsosignificativoala
saludengeneraldecdigodeGoogle.

Almacenartodoelcdigofuenteenunrepositoriodecontroldeversionescomnpermitealosmantenedores
decdigobaseparaanalizarymodificarelcdigofuentedeGoogledemaneraeficiente.Herramientascomo
Refaster11yClangMR15(amenudoutilizadosenconjuntoconRosie)hacerusodelavisinmonolticade
fuentedeGooglepararealizartransformacionesdealtoniveldecdigofuente.Elcdigobasemonoltica
capturatodalainformacindedependencia.APIsantiguassepuedeneliminarconconfianza,porquesepuede
demostrarquetodaslaspersonasquellamansehanmigradoanuevasAPI.Unrepositoriocomnnica
simplificaenormementeestasherramientas,asegurandoatomicidaddecambiosyunasolavisinglobalde
todoelrepositorioenunmomentodado.

UnaspectoimportantedelaculturadeGooglequefomentalacalidaddelcdigoeslaexpectativadeque
todoelcdigoesrevisadoantesdesercomprometidoconelrepositorio.

Costosycompensaciones.Sibienesimportantetenerencuentauncdigobasemonolticadeninguna
maneraimplicaeldiseodesoftwaremonoltica,trabajandoconestemodeloimplicaalgunasdesventajas,as
comoventajasydesventajas,quedebenserconsiderados.

Estoscostosycompensacionessedividenentrescategoras:

lasinversionesdeherramientastantoparaeldesarrolloyejecucin

complejidadbasedecdigo,incluyendodependenciasydificultadesconeldescubrimientodecdigo
innecesariasy

Esfuerzoinvertidoenlasaludcdigo.

Enmuchossentidos,elrepositoriomonolticoproduceherramientasmssimpleyaquenoesslounsistema
dereferenciaparalasherramientasdetrabajoconlafuente.Sinembargo,tambinesnecesarioqueescala
utillajeparaeltamaodelrepositorio.Porejemplo,Googlehaescritounpluginpersonalizadoparael
entornodedesarrollointegradoEclipse(IDE)parafacilitareltrabajoconunabasedecdigomasivaposible
desdeelIDE.sistemadecdigosdeindexacindeGoogleescompatibleconelanlisisesttico,lasreferencias
cruzadasenlaherramientadenavegacindecdigoyfuncionalidadricaIDEparaEmacs,Vim,yotros
entornosdedesarrollo.Estasherramientasrequiereninversionesencursoparagestionarlacrecienteescala
delabasedecdigoGoogle.

Msalldelainversinenlaconstruccinymantenimientodeherramientasescalable,Googletambindebe
cubrirelcostodefuncionamientodeestossistemas,algunosdeloscualessonmuycomputacionalmente
intensivas.GranpartedelasuiteinternodeGoogledeherramientasdedesarrollo,incluyendola
infraestructuradepruebasautomatizadasyconstruccindeinfraestructuraaltamenteescalable,soncrticos
paraapoyareltamaodelabasedecdigomonoltico.Portanto,esnecesariohacerconcesionesrelativasala
frecuenciaparaejecutarestasherramientasparaequilibrarelcostedeejecucincontraelbeneficiodelos
datosfacilitadosalosdesarrolladores.

Elmodelomonolticohacequeseamsfcildeentenderlaestructuradelabasedecdigo,yaquenohaycruce
defronterasentredependenciasdelrepositorio.Sinembargo,amedidaqueaumentalaescala,el
descubrimientocdigopuedesermsdifcil,yaquelasherramientasestndarcomogrepempantanar.Los
desarrolladoresdebensercapacesdeexplorarlabasedecdigo,encontrarbibliotecascorrespondientes,yver
cmousarlosyquelosescribi.Autoresdebibliotecasamenudotienenquevercmoseestnutilizandosus
APIs.Estorequiereunaimportanteinversinenlabsquedadecdigoyherramientasdenavegacin.Sin
embargo,Googlehaencontradoestainversinmuygratificante,lamejoradelaproductividaddetodoslos
desarrolladores,comosedescribeconmsdetalleporSadowskietal.9

Elaccesoatodoelcdigobaseanimaextensacdigocompartidoylareutilizacin.Algunospodran
argumentarestemodelo,quesebasaenlacapacidaddeampliacinextremadelsistemadegeneracinde

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 7/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
Google,hacequeseamuyfcilparaagregardependenciasyreduceelincentivoparaquelosdesarrolladores
desoftwareparaproducirAPIsestablesybienpensadas.

Debidoalafacilidaddecreardependencias,escomnparaquelosequiposnopiensanensugrficodela
dependencia,porloqueelcdigodelimpiezamspropensoaerrores.dependenciasinnecesariaspueden
aumentarlaexposicindelproyectodeconstruccinderoturasposteriores,conduciralahinchazndel
tamaobinario,ycreartrabajosadicionalesenlaconstruccinypruebas.Adems,laprdidadeproductividad
seproducecuandolosproyectosabandonadosquepermanecenenelrepositoriocontinansiendoactualizado
ymantenido.

VariosesfuerzosdeGooglehantratadodecontrolaradependenciasinnecesarias.Existeherramientaspara
ayudaraidentificaryeliminarlasdependenciasnoutilizadas,odependenciasvinculadasenelbinariode
productoporrazoneshistricasoaccidentales,quenosonnecesarios.Herramientastambinexistepara
identificardependenciasinfrautilizados,odependenciasenlasgrandesbibliotecasquesonensumayoraque
noseannecesarios,comocandidatosparalarefactorizacin.7Unadeestasherramientas,podadoras,sebasa
enuncompiladorJavapersonalizadaparagenerarunndicedereferenciacruzadaprecisa.Acontinuacin,
utilizaelndiceparaconstruirungrficodealcanzabilidadydeterminarquclasesnoseusannunca.Clipper
estilparaorientarlosesfuerzosdedependenciaderefactorizacinmediantelabsquedadeobjetivosque
sonrelativamentefcilesdequitaroromper.

Undesarrolladorpuedehaceruncambioimportantetocarcientosomilesdearchivosatravsdel
repositorioenunasolaoperacinconsistente.

herramientasdedependenciarefactorizacinylimpiezasontiles,peroloidealseraquelosresponsablesde
cdigosdebensercapacesdeevitarquelasdependenciasnodeseadasquesecreenenelprimerlugar.En2011,
GooglecomenzaconfiarenelconceptodelavisibilidaddelaAPI,ajustedelavisibilidadpordefectode
nuevasAPIa"privado".EstoobligaalosdesarrolladoresamarcarexplcitamentelasAPIcomoapropiado
parasuusoporotrosequipos.UnaleccinaprendidadelaexperienciadeGoogleconungranrepositorio
monolticoesestetipodemecanismossedebenponerenmarchatanprontocomoseaposibleparafomentar
lasestructurasdedependenciamshiginicas.

ElhechodequelamayoradelcdigodeGoogleestdisponibleparatodoslosdesarrolladoresdeGoogleha
llevadoaunaculturadondealgunosequiposesperanqueotrosdesarrolladoresparaleersucdigoenlugarde
proporcionarlesladocumentacindeusuarioindependiente.Hayprosyloscontrasdeesteenfoque.Sin
esfuerzovahacialaescrituraomantenerdocumentacinalda,perolosdesarrolladoresdevecesms
informacinqueelcdigodelaAPIyterminanapoyndoseendetallesdeimplementacin.Este
comportamientosepuedecrearunacargademantenimientoparalosequiposqueluegotienencaractersticas
problemasdesaprobacinquenuncatuvolaintencindeexponeralosusuarios.

Estemodelotambinrequierequelosequiposcolaborarentrescuandoseutilizaelcdigofuenteabierto.Un
readelrepositorioestreservadoparaelalmacenamientodecdigofuenteabierto(desarrolladoenGoogle
oexternamente).Paraevitarconflictosdedependencia,talcomosedescribeanteriormente,esimportante
queslounaversindeunproyectodecdigoabiertoestardisponibleencualquiermomentodado.Se
esperaquelosequiposqueutilizansoftwaredecdigoabiertoparapasardevezencuandoeltiempode
actualizarsubasedecdigoparatrabajarconlasnuevasversionesdelibrerasdecdigoabiertocuandose
realizanlasactualizacionesdelabiblioteca.

Googleinvierteesfuerzoimportanteparamantenerlasaluddecdigoparahacerfrenteaalgunosproblemas
relacionadosconlacomplejidadyelcdigobasedegestindeladependencia.Porejemplo,herramientas
especialesdetectayeliminaautomticamenteelcdigomuerto,dividegrandesrefactorizacionesyasigna
automticamentelasrevisionesdecdigo(comoatravsdeRosie),ymarcalasAPIcomoobsoletos.Se
requiereunesfuerzohumanoparaejecutarestasherramientasygestionarloscorrespondientescambiosenel
cdigodegranescala.Uncostotambinseincurreporequiposquenecesitanrevisarunflujocontinuode
refactorizacionessimplesresultantesdeentodoelcdigobaselimpiezasylosesfuerzosdemodernizacin
centralizados.

Volverarriba

Alternativas
Amedidaquelapopularidadyelusodelossistemasdecontroldeversionesdistribuidos(DVCSs)comoGit
hancrecido,GooglehaconsideradolaposibilidaddepasardePiperaGitcomosusistemadecontrolde
versionesprimaria.UnequipodeGooglesecentraenelapoyoaGit,queesutilizadoporlosequiposAndroid

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 8/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
yChromedeGooglefueradelaprincipalrepositoriodeGoogle.ElusodeGitesimportanteparaestos
equiposdebidoalsocioexternoycolaboracionesdecdigoabierto.

LacomunidadGitsugierefuertementeyprefierelosdesarrolladorestienenmsymspequeosrepositorios.
UnaoperacindeGitclonrequierecopiartodoelcontenidodelapropiamquinalocal,unprocedimiento
incompatibleconungranrepositorio.ParapasaralalojamientofuentebasadaenGit,seranecesariodividirel
repositoriodeGoogleenmilesderepositoriosseparadosparalograrunrendimientorazonable.Tal
reorganizacinrequeriracambiosculturalesydeflujodetrabajoparadesarrolladoresdeGoogle.Amodode
comparacin,alojadaenGitbasedecdigoAndroiddeGooglesedivideenmsde800repositorios
separados.

DadoelvalorobtenidodelasherramientasexistentesGooglehaconstruidoylasmuchasventajasdela
estructuramonolticacdigobase,esevidentequeelpasoamsymspequeosrepositoriosnotendra
sentidoquerepositorioprincipaldeGoogle.LaalternativademoverseaGitocualquierotroDVCSque
requerirandivisinrepositorionoesconvincenteparaGoogle.

LainversinactualporelequipodefuentedeGooglesecentraprincipalmenteenelcursofiabilidad,
escalabilidadyseguridaddelossistemasdeorigendelacasa.Elequipotambinestllevandoacaboun
esfuerzoexperimentalconMercurial,guncdigoabiertoDVCSsimilaraGit.Elobjetivoesaadir
caractersticasdeescalabilidadalclienteMercurialporloquepuedesoportareficientementeunabasede
cdigodeltamaodeGooglede.EstoproporcionaraalosdesarrolladoresdeGoogleconunaalternativade
utilizarlosflujosdetrabajodeestiloDVCSpopularesenconjuncinconelrepositoriocentral.Esteesfuerzo
serealizaencolaboracinconlacomunidaddecdigoabiertoMercurial,incluyendocontribuyentesdeotras
empresasquevaloranelmodelodecdigomonoltico.

Volverarriba

Conclusin
Googleeligilaestrategiadegestindefuentemonolticaen1999,cuandoelvigentecdigobasedeGooglese
hamigradodeCVSaPerforce.LosprimerosingenierosdeGooglesostuvieronqueunnicorepositorioera
estrictamentemejorquedividirelcdigobase,aunqueenesemomentonoanticiparonlaescalafuturodela
basedecdigoytodaslasherramientasdeapoyoqueseconstruiraparahacerlaescalafactible.

Conlosaos,yaquelainversinnecesariaparacontinuarescalandoelrepositoriocentralizadocreci,el
liderazgodeGoogledevezencuandoconsidersitendrasentidoparapasardelmodelomonoltico.Apesar
delesfuerzorequerido,Googleeligivariasvecesparaseguirconelrepositoriocentraldebidoasusventajas.

Elmodelomonolticodegestindecdigofuentenoesparatodoelmundo.Eselmsadecuadoalas
organizacionescomoGoogle,conunaculturaabiertaydecolaboracin.Nofuncionarabienpara
organizacionesenlasquegranpartedelabasedecdigosonprivadasoescondidosentrelosgrupos.

EnGoogle,hemosencontrado,conunpocodeinversin,elmodelomonolticodegestindefuentespuede
escalarconxitoaunabasedecdigoconmsdemilmillonesdearchivos,35millonesdelasconfirmaciones,
ymilesdeusuariosentodoelmundo.Amedidaquelaescalaylacomplejidaddelosproyectos,tantodentro
comofueradeGoogleseguircreciendo,esperamosqueelanlisisyelflujodetrabajodescritoeneste
artculopuedebeneficiaraotrosconunpesodecisionessobrelaestructuraalargoplazoparasusbasesde
cdigo.

Volverarriba

Expresionesdegratitud
Nosgustarareconoceratodoslosmiembrosactualesyanterioresdelosequiposdedesarrollode
infraestructuradeGoogleporsudedicacinenlaconstruccinyelmantenimientodelossistemasde
referenciaenesteartculo,ascomolasmuchaspersonasqueayudaronenlarevisindelartculoen
particular:JonPerkinsyIngoWalther,lospotencialesTechactualesdePiperKyleLippincottyCrutcher
Dunnavant,lospotencialesdelatecnologaactualyanteriordelCITCHyrumWright,gurrefactorizacina
granescaladeGoogleyChrisColohan,CaitlinSadowski,MorganAmes,RobSiemborski,ylosequiposde
desarrolloysoportePiperyCITCporsusinteresantescomentariosderevisin.

Volverarriba

referencias
1.Bloch,D.AnTodoenunservidor:Perforceaescala.GoogleLibroBlancode2011
http://info.perforce.com/rs/perforce/images/GoogleWhitePaperStillAllonOneServerPerforceatScale.pdf

2.Chang,F.,Dean,J.,Ghemawat,S.,Hsieh,WC,Wallach,DA,Burrows,M.,Chandra,T.,Fikes,A.,yGruber,
REBigtable:Unsistemadealmacenamientodistribuidoparadatosestructurados.ACMTransactionson
ComputerSystems26,2(juniode2008).

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 9/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
3.Corbett,JC,Dean,J.,Epstein,M.,Fikes,A.,Frost,C.,Furman,J.,Ghemawat,S.,Gubarev,A.,Heiser,C.,
Hochschild,P.etal.Llaveinglesa:basededatosdistribuidaanivelmundialdeGoogle.ACMTransactionson
ComputerSystems31,3(agostode2013).

4.Gabriel,RP,Northrop,L.,Schmidt,DC,ySullivan,K.sistemasagranescalaUltra.EnCompanional21
SimposioACMSIGPLANenprogramacinorientadaaobjetosSistemas,LenguajesyAplicaciones(Portland,
OR,octubre2226).ACMPress,NuevaYork,2006,632634.

5.Kemper,C.Construirenlanube:Cmofuncionaelsistemadecompilacin.GoogleHerramientasde
ingenieraentradadelblog,2011http://googleengtools.blogspot.com/2011/08/buildincloudhowbuild
systemworks.html

6.Lamport,L.Paxosdeformasencilla.ACMSIGACTNoticias32,4(noviembrede2001),1825.

7.Morgenthaler,JD,Gridnev,M.,Sauciuc,R.,yBhansali,S.Buscandoacumulacindeladeuda:Experiencias
gestindeladeudatcnicaenGoogle.EnActasdelTercerTallerInternacionalsobrelagestindeladeuda
tcnica(Zrich,Suiza,junio29).IEEEPressPiscataway,NuevaJersey,2012,16.

8.Ren,G.,Tune,E.,Moseley,T.,Shi,Y.,Rus,S.,yHundt,R.Googleampliadeperfiles:Unainfraestructura
deperfiladocontinuoparacentrosdedatos.IEEEMicro30,4(2010),6579.

9.Sadowski,C,Stolee,K.,yElbaum,S.Cmobuscardesarrolladoresdecdigo:Unestudiodecaso.EnActas
dela10ReuninConjuntasobreFundamentosdeIngenieradeSoftware(Brgamo,Italia,agosto30a
septiembre4).ACMPress,NuevaYork,2015,191201.

10.Sadowski,C.,VanGogh,J.,Jaspan,C.,Soederberg,E.,yWinter,C.Tricorder:Construccindeun
ecosistemaanlisisdeprogramas.EnActasdela37ConferenciaInternacionalsobreIngenierade
Software,vol.1(Florencia,Italia,mayo1624).IEEEPressPiscataway,NuevaJersey,2015,598608.

11.Wasserman,L.escalables,refactorizacionesbasadaenejemplosconRefaster.EnActasdelaACM2013
TallersobreHerramientasderefactorizacin(Indianpolis,IN,octubre2631).ACMPress,NuevaYork,
2013,2528.

12.Wikipedia.Infiernodelasdependencias.Consultadoel20deenero2015
http://en.wikipedia.org/w/index.php?title=Dependency_hell&oldid=634636715

13.Wikipedia.Sistemadearchivosenespaciodeusuario.Accesoenjunio,4,2015
http://en.wikipedia.org/w/index.php?title=Filesystem_in_Userspace&oldid=664776514

14.Wikipedia.KerneldeLinux.Consultadoel20deenero2015http://en.wikipedia.org/w/index.php?
title=Linux_kernel&oldid=643170399

15.Wright,HK,Jasper,D.,Klimek,M.,Carruth,C.,yWan,Z.granescalarefactorizacinautomatizadousando
ClangMR.EnActasdelaConferenciaInternacionalIEEEsobreMantenimientodeSoftware(Eindhoven,
PasesBajos,Sept.2228).IEEEPress,2013,548551.

Volverarriba

autores
RachelPotvin(rpotvin@google.com)esundirectordeingenieradeGoogle,deMountainView,CA.

JoshLevenberg(joshl@google.com)esuningenierodesoftwaredeGoogle,deMountainView,CA.

Volverarriba

Notasalpie
a.Tamaototaldelcontenidosincomprimir,conexclusindelasramasdeliberacin.

segundo.Incluyeunicamenterevisadosycdigocomprometidoyexcluyecommitsrealizadosporlossistemas
automatizados,ascomosecomprometealiberarlasramas,archivosdedatos,archivos,archivosdecdigo
abiertoimportadosenelrepositorio,yotrosarchivosquenoseanfuentedecdigogenerado.

do.Googledecdigoabiertounsubconjuntodesusistemadeconstruccininternaverhttp://www.bazel.io

re.Msdel99%delosarchivosalmacenadosenPipersonvisiblesparatodoslosingenierosdeGooglea
tiempocompleto.

mi.https://github.com/google/styleguide

F.ElnombredelproyectofueinspiradoporRosieelrobotdelimpiezadelaserietelevisiva"Los
Supersnicos".

gramo.http://mercurial.selenic.com/

Volverarriba
https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 10/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM

Figuras

Figura1.MillonesdecambioscomprometidoscondepsitocentraldeGoogleeneltiempo.

Figura2.committersHumanosporsemana.

Figura3.comprometeporsemana.

Figura4.flujodetrabajoPiper.

Figura5.logotipodelequipoPiper"PiperesPiperseexpandideformarecursiva"diseodelafuente:
KirrilyAnderson.

Figura6.Releasemodeloderamificacin.

Figura7.Rosiesecomprometepormes.

Figura8.Diamondproblemadedependencia.

Volverarriba

Mesas

Mesa.estadsticasdelrepositoriodeGoogle,Enerode2015.

Volverarriba

Derechosdeautordelosautores

LaBibliotecaDigitalespublicadaporlaAssociationforComputingMachinery.Copyright2016ACM,Inc.

comentarios
RobertFink

28dedejuniode,elao20162:16

Tengocuriosidadporcomprenderlainteraccindelmodelodecdigofuente(repositoriomonolticovs
muchosrepositorios)yelmodelodeimplementacin,enparticular,alconsiderareldesplieguecontinuovs.
comunicadosexplcitos.
MiopininesquelosserviciosdeGooglesecompilanydesplegadosdesdeeltroncoqusignificaestopara
lasmigracionesdebasesdedatos(porejemplo,actualizacionesdeesquemas),enparticularcuandodiferentes

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 11/12
2017520 PorquGoogleTiendasLosmilmillonesdelneasdecdigoenunnicorepositorio|Dejuliodeelao2016|ComunicacionesdelACM
instanciasdelmismoserviciosemantienenpordiferentesequipos:Cmocoordinantalesmigracionesde
datosdistribuidosenlacaradelasactualizacionesmsomenoscontinuadelosbinarios?Allnohayuna
nocindeunaversincomercial,establedeunpaquete,necesitaefectivamenteinfinitacompatibilidadcon
versionesanteriores?
Delmismomodo,cuandounserviciosedespliegadesdeelbaldehoy,perounserviciodependientetodava
seestejecutandoeneltroncodelasemanapasada,cmoeslacompatibilidadAPIgarantizadaentreesos
servicios?

ParecequeloscontratosestrictosparalaAPIdeservicioycompatibilidadcruzadaesquemadebenestarensu
lugarparaevitarroturascomoconsecuenciadelasactualizacionesenvivo?

Curiosidadporescucharsuspensamientos,gracias!
Robert

EdChi

30dedejuniode,elao201611:13

Losequipospuedenempaquetarsuspropiosbinariosqueseejecutanenloscentrosdedatosdeproduccin.

HayefectivamenteunSLAentreelequipoquepubliqueelbinarioylosclientesquelosutiliza.Sinotegustael
SLA(incluyendolacompatibilidadhaciaatrs),ustedeslibredecompilarsupropiopaquetebinariopara
funcionarenlaproduccin.

Lamigracinserealizanormalmenteenunprocesodetrespasos:anunciar,nuevocdigoydesplazarse,a
continuacin,despreciarcdigoantiguoporeliminacin.

KevinSchultz

12dejulio20161:10

Seccin"Antecedentes",elquintoprrafo,estableceque:"LasactualizacionesdelrepositorioPipersepuede
tirarenunespaciodetrabajoysefusionconeltrabajoencurso,segnsedesee(verFigura5)."

Sinembargo,laFigura5parecevinculara"logotipodelequipoPiper'PiperesPiperseexpandideforma
recursiva'fuentedediseo:KirrilyAnderson."

Porfavor,aclarargracias.

Viendolos3comentarios

paralosautores paralosanunciantes Polticadeprivacidad Ayuda Contctenos Sitiomovil Copyright2017porlaACM.Todoslosderechosreservados.

https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 12/12

Potrebbero piacerti anche