Nel nostro Rapporto sull'esperienza Agile pubblicato sul sito Sito web dell'Alleanza Agile Ho spiegato in dettaglio come abbiamo imparato ad adattarci continuamente alle nuove situazioni e a imparare dai nostri errori. Il documento illustra le nostre pratiche organizzative e interpersonali. Questo è, a tutti gli effetti, il lato sociale di Agile. Ma c'è anche una parte tecnica molto importante che dobbiamo prendere in considerazione.
Senza gli strumenti e le pratiche tecniche, l'agilità è solo una grande storia di ideali. Organizzare le cose è inutile senza l'infrastruttura necessaria a sostenere il tipo di lavoro che i processi lean o la pianificazione scrum richiedono.
Noi di Syneto abbiamo implementato un sistema di integrazione e distribuzione continua. Facciamo anche continuous delivery all'interno della nostra azienda. Quindi, a cosa servono tutti questi strumenti?
Dopo aver terminato di scrivere un piccolo ma funzionale pezzo di codice, uno sviluppatore software salva le modifiche e le invia a un repository centrale di codice sorgente. Questa operazione può avvenire con una rapidità di un paio di minuti o raramente, come una volta ogni due giorni. Di solito eseguiamo il commit e il push in media una volta all'ora.
L'integrazione continua è una pratica di sviluppo del software in cui i membri di un team integrano il loro lavoro frequentemente, di solito ogni persona integra almeno una volta al giorno, portando a più integrazioni giornaliere.
- Martin Fowler
Abbiamo un altro server che monitora continuamente il repository centrale del codice sorgente. Ogni volta che un nuovo codice viene inviato da uno dei nostri sviluppatori, questo server avvia un processo di integrazione del nuovo codice. Questo è il integrazione continua server. Il codice viene trasferito in un'altra directory, tutti i file vengono compilati e codificati e vengono eseguiti i test unitari. In questa fase vengono eseguite anche altre verifiche, come il controllo dell'interfaccia grafica e dell'interazione con il sistema operativo sottostante. Si tratta di un processo completamente automatizzato che esercita circa 70% di tutti i percorsi della nostra applicazione.
Se tutto va bene, il distribuzione continua si avvia automaticamente. Il risultato finale della nostra procedura di compilazione è il file Sistema operativo di archiviazione sistema operativo con le sue centinaia di pacchetti software individuali. Questi devono essere costruiti utilizzando il sistema di gestione dei pacchetti del nostro sistema operativo, chiamato IPS.
Il passo finale della nostra infrastruttura automatizzata è la consegna continua processo. Questo prende i pacchetti IPS e li rende disponibili su un server di aggiornamento. Utilizziamo solo un server di staging interno, i nostri utenti finali non ricevono aggiornamenti ogni volta che modifichiamo il codice. Anche se sarebbe relativamente sicuro distribuire continuamente agli utenti finali, l'ecosistema dei dispositivi di storage è troppo sensibile per questo tipo di soluzioni. Quindi, prima che gli utenti ricevano gli aggiornamenti, vengono eseguiti diversi altri passaggi e test. Ma questo è un argomento per un altro post del blog.