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

Post on 14-Apr-2017

27 views 0 download

Transcript of 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

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.