Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps

19
Universit` a degli Studi di Trieste Dipartimento di Ingegneria e Architettura Corso 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

Transcript of Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps

Page 1: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps

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

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

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

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

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

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

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

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

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

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

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

Pipeline

Page 13: Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps

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

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

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

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

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

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

Grazie per la corteseattenzione.