progetto e implementazione di una pipeline di sviluppo software con tecnologie devops
Post on 14-Apr-2017
30 Views
Preview:
TRANSCRIPT
Universita degli Studi di TriesteDipartimento di Ingegneria e ArchitetturaCorso di Laurea in Ingegneria Informatica
Progetto e implementazione di
una pipeline di sviluppo software
con tecnologie DevOps
Laureando:Mattia Milleri
Relatore:prof. Francesco Fabris
Correlatore:ing. Sergio Benedetti
DevOps
DevOps e un termine che descrive un insieme di pratiche volte adaiutare la collaborazione fra quelli che sono i due maggiori agentinel processo di sviluppo di una applicazione: gli sviluppatori(DEVelopers) da una parte e la parte di amministrazione di sistemi(OPerationS) dall’altra.
Cos’e una pipeline di sviluppo?
Una pipeline di sviluppo software e la rappresentazione del percorsoche un software deve percorrere per arrivare in produzione.
A che richieste risponde?
Richieste necessarie per avere un’applicazione stabile e sicura.
I se devono esserci dei fallimenti in un qualche punto dellapipeline, e importante avere dei test che falliscono presto
I togliere la componente di errore umano nella fase diinstallazione
I avere la certezza dell’uguaglianza fra le varie macchine di teste di produzione
I rendere la preparazione dell’ambiente e l’installazionedell’applicazione qualcosa di programmabile
Cosa si intende con strumenti DevOps?
Con strumenti DevOps indichiamo una suite di strumenti chepermettono l’automazione delle operazioni di amministrazione delsistema.
Quali utilizzeremo?
I Vagrant
Vagrant e un programma che permette la creazione emanutenzione di macchine virtuali. La costruzione di unamacchina virtuale e interamente formalizzata all’interno diuno script, detto Vagrantfile, che permette di descrivere lecaratteristiche richieste all’interno di quest’ultima.
Quali utilizzeremo?
I Ansible
Ansible e un sistema di automazione open-source chepermette il provisioning e la configurazione remota dimacchine virtuali oltre all’installazione di applicazioni web.
Quali utilizzeremo?
I Jenkins
Jenkins e un server di Continuous Integration open-sourcescritto in linguaggio Java. Permette di definire eautomatizzare il processo di costruzione e installazione diun’applicazione, descrivendo in una pipeline tutti i passi per ildeployment di un’applicazione in produzione.
Architettura del sistema
Il sistema sara composto da tre strati:
I una workstation su cui sara installato Jenkins, dove eseguira ilJenkinsfile, che e lo script principale di automazione dellapipeline
I lo script Jenkinsfile utilizzera Vagrant per la creazione dellemacchine virtuali
I il Vagrantfile, lo script di Vagrant, a ogni creazione dimacchina virtuale richiamera gli script di Ansible per ilprovisioning
Shopizer
Shopizer e una applicazione open-source scritta in linguaggio Javache permette la creazione di siti web volti alla vendita di prodotti.
Shopizer
L’applicazione ha i seguenti prerequisiti che andranno soddisfatti:
I un sistema operativo su cui far girare la macchina virtualeJava e l’application server
I installazione di Java 8
I un application server, nel nostro caso Tomcat 8
I un server MySQL
Pipeline
Stage 1 – Test di unita e di integrazione
I Scarica il codice del progettodalla repository git
I Effettua la compilazione e itest di unita
I Viene creata la virtualmachine
I Vengono effettuati i testsull’applicazione nella virtualmachine
Stage 2 – Test di carico e di interfaccia utente
I Modifica dei sorgenti
I Ricompilazione con ilsupporto a MySQL
Stage 2 – Test di carico e di interfaccia utente
I Installazione di JMeter eSelenium
I Effettuazione test di carico(JMeter) e di interfacciautente (Selenium)
Stage 3 – Messa in produzione su Google Cloud
I Configurazione epreparazione dell’ambientedi produzione su GoogleCloud
I Creazione e provisioningdella macchina virtuale
Conclusioni
Il progetto di creazione di una pipeline completa per l’automazionee avvenuto con successo, dimostrando che e possibile eliminare lanecessita di esecuzione manuale di molte operazioni all’interno delprocesso di sviluppo software.Conseguenze di questo approccio automatizzato, oltre a quello dirisparmio di tempo, sono di poter effettuare la messa in produzionedi una applicazione in modo piu coerente, il che portal’applicazione stessa ad essere piu stabile e sicura.
Sviluppi futuri
I Test sulla sicurezza del sistema
I Test di accettazione da parte dell’utente
I Creazione di una repository aziendale di Vagrant Box, inrisposta alla necessita di avere configurazioni particolari per lemacchine virtuali
Grazie per la corteseattenzione.
top related