Riferimento: come funziona il processo di Continuous Integration

Oggi esploreremo la storia del termine, discuteremo le complessità dell'implementazione del CI e presenteremo alcuni strumenti popolari che possono aiutare a lavorarci.

Riferimento: come funziona il processo di Continuous Integration
/ Flickr / Altug Karakoc / CC BY / Фото изменено

Termine

Continuous Integration (integrazione continua) è un approccio allo sviluppo di applicazioni che prevede frequenti compilazioni del progetto e test del codice.

L'obiettivo è rendere il processo di integrazione prevedibile e scoprire potenziali bug e errori in una fase precoce, in modo da avere più tempo per correggerli.

Il termine Continuous Integration è apparso per la prima volta nel 1991. È stato introdotto dallo sviluppatore del linguaggio UML Grady Booch . L'ingegnere ha presentato il concetto di CI come parte della propria pratica di sviluppo — metodo Booch. Egli intendeva il perfezionamento incrementale dell'architettura nella progettazione di sistemi orientati agli oggetti. Grady non ha descritto requisiti specifici per l'integrazione continua. Ma in seguito nel suo libro «Object-Oriented Analysis and Design with Applications» ha affermato che lo scopo della metodologia è velocizzare il rilascio di «versioni interne».

Storia

Nel 1996, il CI è stato adottato dai creatori della metodologia programmazione estrema (XP) — Kent Beck e Ron Jeffries (Ron Jeffries). L'integrazione continua è diventata uno dei dodici principi chiave del loro approccio. I fondatori di XP hanno specificato i requisiti per la metodologia CI e hanno sottolineato la necessità di effettuare build del progetto più volte al giorno.

All'inizio degli anni 2000, la metodologia dell'integrazione continua è stata promossa da uno dei fondatori dell'Agile Alliance Martin Fowler (Martin Fowler). I suoi esperimenti con la CI hanno portato alla nascita del primo strumento software in questo campo: CruiseControl. L'utility è stata creata dal collega di Martin, Matthew Foemmel.

Il ciclo di build nello strumento è implementato come un demone che controlla periodicamente il sistema di gestione delle versioni per individuare modifiche nella base di codice. La soluzione è scaricabile ancora oggi ed è distribuito sotto licenza simile a BSD.

Con l'emergere del software per la CI, sempre più aziende hanno iniziato ad adottare queste pratiche. Secondo uno studio di Forrester [p.5 rapporto], nel 2009, l'86% delle cinquanta aziende tecnologiche intervistate utilizzava o stava implementando metodi CI.

Oggi, la pratica della Continuous Integration è adottata da aziende di diversi settori. Nel 2018, un grande provider di cloud ha condotto un sondaggio tra professionisti IT di aziende nel settore dei servizi, dell'istruzione e della finanza. Tra seimila rispondenti, il 58% ha dichiarato di utilizzare strumenti e principi di CI nel loro lavoro.

Come funziona

Le fondamenta della Continuous Integration si basano su due strumenti: il sistema di controllo versione e il server CI. Quest'ultimo può essere un dispositivo fisico o una macchina virtuale in un ambiente cloud. Gli sviluppatori caricano nuovo codice una o più volte al giorno. Il server CI copia automaticamente il codice con tutte le sue dipendenze e lo compila. Successivamente, esegue test di integrazione e unitari. Se i test hanno esito positivo, il sistema CI distribuisce il codice.

Lo schema generale del processo può essere rappresentato come segue:

Riferimento: come funziona il processo di Continuous Integration

La metodologia CI pone una serie di requisiti agli sviluppatori:

  • Correggere immediatamente i problemi. Questo principio è stato introdotto nella CI dall'Extreme Programming. Risolvere i bug è la priorità assoluta per gli sviluppatori.
  • Automatizzare i processi. Sviluppatori e manager devono costantemente cercare i «colli di bottiglia» nel processo di integrazione e risolverli. Ad esempio, spesso il «collo di bottiglia» nell'integrazione si scopre è il testing.
  • Effettuare build il più frequentemente possibile. Una volta al giorno, per sincronizzare il lavoro del team.

Difficoltà di implementazione

Il primo problema sono i costi operativi elevati. Anche se l'azienda utilizza strumenti CI open source (di cui parleremo in seguito), deve comunque spendere per il supporto dell'infrastruttura. Tuttavia, le tecnologie cloud possono essere una soluzione.

Esse semplificano la costruzione di configurazioni informatiche di varie dimensioni. Inoltre, le aziende una retribuzione pagano solo per le risorse utilizzate, il che aiuta a risparmiare sull'infrastruttura.

Secondo i sondaggi [стр.14 articolo], l'integrazione continua aumenta il carico di lavoro degli impiegati dell'azienda (almeno inizialmente). Devono imparare a usare nuovi strumenti, e i colleghi non sempre aiutano nell'addestramento. Quindi, devono confrontarsi con nuovi framework e servizi «on the go».

La terza difficoltà è rappresentata dai problemi di automazione. Questo riguarda le organizzazioni con un grande volume di codice legacy che non è coperto da test automatizzati. Questo porta a dover semplicemente riscrivere il codice prima di implementare il CI in modo completo.

Riferimento: come funziona il processo di Continuous Integration
/ Flickr / theilr / CC BY-SA

Chi lo utilizza

Tra i primi a riconoscere i vantaggi della metodologia ci sono stati i giganti dell'IT. Google utilizza ha implementato l'integrazione continua a metà degli anni 2000. Il CI è stato adottato per risolvere il problema dei ritardi nel funzionamento del motore di ricerca. L'integrazione continua ha aiutato a individuare e risolvere rapidamente i problemi. Oggi il CI è utilizzato da tutti i reparti del gigante dell'IT.

L'integrazione continua è utile anche per le piccole aziende, e gli strumenti di CI vengono utilizzati anche da organizzazioni finanziarie e sanitarie. Ad esempio, in Morningstar i servizi di integrazione continua hanno permesso di patchare le vulnerabilità il 70% più velocemente. Inoltre, la piattaforma medica Philips Healthcare è riuscita ad accelerare il testing degli aggiornamenti di due volte.

Strumenti

Ecco alcuni strumenti popolari per il CI:

  • Jenkins è uno dei sistemi CI più popolari. Supporta oltre mille plugin per l'integrazione con vari VCS, piattaforme cloud e altri servizi. Anche noi in 1cloud utilizziamo Jenkins: uno strumento fa parte del nostro sistema DevOps. Controlla regolarmente il ramo Git destinato ai test.
  • Buildbot — framework Python per la scrittura dei propri processi di integrazione continua. La configurazione iniziale dello strumento è piuttosto complessa, tuttavia questo è compensato dalle ampie possibilità di personalizzazione. Tra i punti di forza del framework, gli utenti evidenziano il suo basso consumo di risorse.
  • Concourse CI — server di Pivotal che utilizza i container Docker. Concourse CI si integra con qualsiasi strumento e sistema di controllo della versione. Gli sviluppatori segnalano che il sistema è adatto per aziende di tutte le dimensioni.
  • Gitlab CI — strumento integrato nel sistema di controllo versione GitLab. Il servizio funziona nel cloud e utilizza file YAML per la configurazione. Come Concourse, Gitlab CI applica container Docker, che aiutano a isolare diversi processi tra loro.
  • Codeship — server CI cloud che lavora con GitHub, GitLab e BitBucket. La piattaforma non richiede lunghe configurazioni iniziali: su Codeship sono disponibili processi CI preimpostati standard. Per progetti di piccole dimensioni (fino a 100 build al mese) e open source, Codeship è disponibile gratuitamente.

Materiali dal nostro blog aziendale:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster