Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
REGISTRARSE
Buscar
CASA EDICINACTUAL NOTICIAS BLOGS OPININ INVESTIGACIN PRCTICA CARRERAS ARCHIVO VDEOS
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
https://cacm.acm.org/magazines/2016/7/204032whygooglestoresbillionsoflinesofcodeinasinglerepository/fulltext 12/12