![Page 1: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/1.jpg)
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
![Page 2: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/2.jpg)
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.
![Page 3: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/3.jpg)
Cos’e una pipeline di sviluppo?
Una pipeline di sviluppo software e la rappresentazione del percorsoche un software deve percorrere per arrivare in produzione.
![Page 4: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/4.jpg)
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
![Page 5: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/5.jpg)
Cosa si intende con strumenti DevOps?
Con strumenti DevOps indichiamo una suite di strumenti chepermettono l’automazione delle operazioni di amministrazione delsistema.
![Page 6: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/6.jpg)
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.
![Page 7: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/7.jpg)
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.
![Page 8: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/8.jpg)
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.
![Page 9: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/9.jpg)
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
![Page 10: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/10.jpg)
Shopizer
Shopizer e una applicazione open-source scritta in linguaggio Javache permette la creazione di siti web volti alla vendita di prodotti.
![Page 11: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/11.jpg)
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
![Page 12: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/12.jpg)
Pipeline
![Page 13: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/13.jpg)
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
![Page 14: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/14.jpg)
Stage 2 – Test di carico e di interfaccia utente
I Modifica dei sorgenti
I Ricompilazione con ilsupporto a MySQL
![Page 15: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/15.jpg)
Stage 2 – Test di carico e di interfaccia utente
I Installazione di JMeter eSelenium
I Effettuazione test di carico(JMeter) e di interfacciautente (Selenium)
![Page 16: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/16.jpg)
Stage 3 – Messa in produzione su Google Cloud
I Configurazione epreparazione dell’ambientedi produzione su GoogleCloud
I Creazione e provisioningdella macchina virtuale
![Page 17: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/17.jpg)
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.
![Page 18: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/18.jpg)
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
![Page 19: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062316/58efef371a28ab021f8b4573/html5/thumbnails/19.jpg)
Grazie per la corteseattenzione.