Come è possibile costruire l'intero codice base dal sorgente su Google?

8

La prima risposta a un vecchio, recentemente attivo domanda collegata a un video che parla di come è fatto il repository di Google.

Una cosa interessante che è stata menzionata è il fatto che tutto è compilato dalla fonte, senza fare affidamento sui binari. Questo aiuta a evitare problemi con le dipendenze che diventano obsolete ma ancora utilizzate in altri progetti, un problema I effettivamente incontrato molto.

Come è tecnicamente possibile? Se provo la stessa cosa nella mia azienda, anche considerando l'enorme divario tra la scala della mia base di codice aziendale e quella di Google, non sarebbe possibile per due motivi:

  • L'IDE (Visual Studio) diventerà rapidamente insensibile, dato che soffre molto anche su piccole soluzioni contenenti, ad esempio, 50 progetti.

  • Qualsiasi analisi statica verrebbe ridotta dalle dimensioni dell'intero codebase. Ad esempio, le metriche del codice o il controllo statico dei contratti di codice sarebbero difficilmente possibili (i contratti di codice richiederebbero probabilmente giorni o settimane).

  • Con l'integrazione continua, la compilazione richiederebbe molto tempo e croccherebbe i server non appena un progetto con molte dipendenze viene modificato, richiedendo la ricompilazione di un grande albero di progetti.

Come può una piccola azienda aggirare tali problemi ed essere in grado di:

  1. Utilizza l'IDE senza essere influenzato da scarse prestazioni,

  2. Compilare il codice dopo ogni commit senza eseguire il crunch del server, anche quando le conseguenze di una modifica richiedono la ricompilazione di una grande quantità di codebase?

posta Arseni Mourzenko 08.05.2013 - 23:42
fonte

2 risposte

11

Stai assumendo un processo di compilazione tradizionale e il processo di Google è tutt'altro che tradizionale. C'è una serie di articoli nel blog di strumenti di progettazione che spiegano il loro processo in dettaglio, elaborando la presentazione del 2010: Strumenti per l'integrazione continua su Google Scale :

  1. Build in the Cloud: accesso al codice sorgente
  2. Build in the Cloud: come il sistema di generazione funziona
  3. Build in the Cloud: distribuzione delle fasi di creazione
  4. Build in the Cloud: accesso al codice sorgente
  5. Test alla velocità e alla scala di Google

Per riassumere, usano un sistema di build distribuito personalizzato che consente un grado molto elevato di parallelismo e automazione, sfruttando appieno l'infrastruttura esistente. Inoltre fa molto affidamento sul caching, con una percentuale di hit della cache complessiva del 90%.

Ma come puoi applicare tutto questo nella tua azienda? Il primo passo è la distribuzione della compilazione, e per questo è necessario:

  • Una nuvola
  • Un compilatore distribuito
  • Una cache del compilatore

In un ambiente di sviluppo gcc, l'impostazione di una farm di compilazione è relativamente semplice. distcc si occupa della distribuzione e ccache si occupa della cache e funzionano perfettamente insieme. Non conosco strumenti simili per l'ecosistema di Microsoft (presumo che tu stia utilizzando un linguaggio Microsoft basato sulla tua scelta di IDE), ma so che MSBuild può eseguire build in parallelo , sfruttando le CPU multi-core. Non proprio una fattoria compilata, ma sicuramente un passo nella giusta direzione.

    
risposta data 09.05.2013 - 02:56
fonte
2
  1. Non è necessario creare tutti i 2000 progetti per utilizzare solo quelli necessari.
  2. Il linguaggio Go è stato appositamente progettato per alleviare questo problema rendendo i tempi di compilazione molto veloci. è stato uno dei motivi per cui hanno inventato la lingua.

Detto questo, sarei diffidente nei confronti della "costruzione just-in-time", a meno che il codice distribuito a livello aziendale sia stato verificato come parte di un ciclo di rilascio formale (più o meno) e non sia solo una compilazione casuale a caso. H

Avere 5000 sviluppatori che accedono a 2000 progetti in uno stato di flusso continuo sembra una ricetta per il disastro, e Google assume persone molto intelligenti, quindi sono abbastanza certo che non è ciò che sta realmente accadendo.

    
risposta data 09.05.2013 - 00:03
fonte