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
DevOps
DevOps `e un termine che descrive un insieme di pratiche volte ad
aiutare la collaborazione fra quelli che sono i due maggiori agenti
nel 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 percorso
che un software deve percorrere per arrivare in produzione.
A che richieste risponde?
Richieste necessarie per avere un’applicazione stabile e sicura.
se devono esserci dei fallimenti in un qualche punto della
pipeline, `e importante avere dei test che falliscono presto
togliere la componente di errore umano nella fase di
installazione
avere la certezza dell’uguaglianza fra le varie macchine di test
e di produzione
rendere la preparazione dell’ambiente e l’installazione
dell’applicazione qualcosa di programmabile
Cosa si intende con strumenti DevOps?
Con strumenti DevOps indichiamo una suite di strumenti che
permettono l’automazione delle operazioni di amministrazione del
sistema.
Quali utilizzeremo?
Vagrant
Vagrant `e un programma che permette la creazione e
manutenzione di macchine virtuali. La costruzione di una
macchina virtuale `e interamente formalizzata all’interno di
uno script, detto Vagrantfile, che permette di descrivere le
caratteristiche richieste all’interno di quest’ultima.
Quali utilizzeremo?
Ansible
Ansible `e un sistema di automazione open-source che
permette il provisioning e la configurazione remota di
macchine virtuali oltre all’installazione di applicazioni web.
Quali utilizzeremo?
Jenkins
Jenkins `e un server di Continuous Integration open-source
scritto in linguaggio Java. Permette di definire e
automatizzare il processo di costruzione e installazione di
un’applicazione, descrivendo in una pipeline tutti i passi per il
deployment di un’applicazione in produzione.
Architettura del sistema
Il sistema sar`a composto da tre strati:
una workstation su cui sar`a installato Jenkins, dove eseguir`a il
Jenkinsfile, che `e lo script principale di automazione della
pipeline
lo script Jenkinsfile utilizzer`a Vagrant per la creazione delle
macchine virtuali
il Vagrantfile, lo script di Vagrant, a ogni creazione di
macchina virtuale richiamer`a gli script di Ansible per il
provisioning
Shopizer
Shopizer `e una applicazione open-source scritta in linguaggio Java
che permette la creazione di siti web volti alla vendita di prodotti.
Shopizer
L’applicazione ha i seguenti prerequisiti che andranno soddisfatti:
un sistema operativo su cui far girare la macchina virtuale
Java e l’application server
installazione di Java 8
un application server, nel nostro caso Tomcat 8
un server MySQL
Pipeline
Stage 1 – Test di unit`a e di integrazione
Scarica il codice del progetto
dalla repository git
Effettua la compilazione e i
test di unit`a
Viene creata la virtual
machine
Vengono effettuati i test
sull’applicazione nella virtual
machine
Stage 2 – Test di carico e di interfaccia utente
Modifica dei sorgenti
Ricompilazione con il
supporto a MySQL
Stage 2 – Test di carico e di interfaccia utente
Installazione di JMeter e
Selenium
Effettuazione test di carico
(JMeter) e di interfaccia
utente (Selenium)
Stage 3 – Messa in produzione su Google Cloud
Configurazione e
preparazione dell’ambiente
di produzione su Google
Cloud
Creazione e provisioning
della macchina virtuale
Conclusioni
Il progetto di creazione di una pipeline completa per l’automazione
`e avvenuto con successo, dimostrando che `e possibile eliminare la
necessit`a di esecuzione manuale di molte operazioni all’interno del
processo di sviluppo software.
Conseguenze di questo approccio automatizzato, oltre a quello di
risparmio di tempo, sono di poter effettuare la messa in produzione
di una applicazione in modo pi`u coerente, il che porta
l’applicazione stessa ad essere pi`u stabile e sicura.
Sviluppi futuri
Test sulla sicurezza del sistema
Test di accettazione da parte dell’utente
Creazione di una repository aziendale di Vagrant Box, in
risposta alla necessit`a di avere configurazioni particolari per le
macchine virtuali
Grazie per la cortese
attenzione.

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

  • 1.
    Universit`a degli Studidi 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
  • 2.
    DevOps DevOps `e untermine che descrive un insieme di pratiche volte ad aiutare la collaborazione fra quelli che sono i due maggiori agenti nel processo di sviluppo di una applicazione: gli sviluppatori (DEVelopers) da una parte e la parte di amministrazione di sistemi (OPerationS) dall’altra.
  • 3.
    Cos’`e una pipelinedi sviluppo? Una pipeline di sviluppo software `e la rappresentazione del percorso che un software deve percorrere per arrivare in produzione.
  • 4.
    A che richiesterisponde? Richieste necessarie per avere un’applicazione stabile e sicura. se devono esserci dei fallimenti in un qualche punto della pipeline, `e importante avere dei test che falliscono presto togliere la componente di errore umano nella fase di installazione avere la certezza dell’uguaglianza fra le varie macchine di test e di produzione rendere la preparazione dell’ambiente e l’installazione dell’applicazione qualcosa di programmabile
  • 5.
    Cosa si intendecon strumenti DevOps? Con strumenti DevOps indichiamo una suite di strumenti che permettono l’automazione delle operazioni di amministrazione del sistema.
  • 6.
    Quali utilizzeremo? Vagrant Vagrant `eun programma che permette la creazione e manutenzione di macchine virtuali. La costruzione di una macchina virtuale `e interamente formalizzata all’interno di uno script, detto Vagrantfile, che permette di descrivere le caratteristiche richieste all’interno di quest’ultima.
  • 7.
    Quali utilizzeremo? Ansible Ansible `eun sistema di automazione open-source che permette il provisioning e la configurazione remota di macchine virtuali oltre all’installazione di applicazioni web.
  • 8.
    Quali utilizzeremo? Jenkins Jenkins `eun server di Continuous Integration open-source scritto in linguaggio Java. Permette di definire e automatizzare il processo di costruzione e installazione di un’applicazione, descrivendo in una pipeline tutti i passi per il deployment di un’applicazione in produzione.
  • 9.
    Architettura del sistema Ilsistema sar`a composto da tre strati: una workstation su cui sar`a installato Jenkins, dove eseguir`a il Jenkinsfile, che `e lo script principale di automazione della pipeline lo script Jenkinsfile utilizzer`a Vagrant per la creazione delle macchine virtuali il Vagrantfile, lo script di Vagrant, a ogni creazione di macchina virtuale richiamer`a gli script di Ansible per il provisioning
  • 10.
    Shopizer Shopizer `e unaapplicazione open-source scritta in linguaggio Java che permette la creazione di siti web volti alla vendita di prodotti.
  • 11.
    Shopizer L’applicazione ha iseguenti prerequisiti che andranno soddisfatti: un sistema operativo su cui far girare la macchina virtuale Java e l’application server installazione di Java 8 un application server, nel nostro caso Tomcat 8 un server MySQL
  • 12.
  • 13.
    Stage 1 –Test di unit`a e di integrazione Scarica il codice del progetto dalla repository git Effettua la compilazione e i test di unit`a Viene creata la virtual machine Vengono effettuati i test sull’applicazione nella virtual machine
  • 14.
    Stage 2 –Test di carico e di interfaccia utente Modifica dei sorgenti Ricompilazione con il supporto a MySQL
  • 15.
    Stage 2 –Test di carico e di interfaccia utente Installazione di JMeter e Selenium Effettuazione test di carico (JMeter) e di interfaccia utente (Selenium)
  • 16.
    Stage 3 –Messa in produzione su Google Cloud Configurazione e preparazione dell’ambiente di produzione su Google Cloud Creazione e provisioning della macchina virtuale
  • 17.
    Conclusioni Il progetto dicreazione di una pipeline completa per l’automazione `e avvenuto con successo, dimostrando che `e possibile eliminare la necessit`a di esecuzione manuale di molte operazioni all’interno del processo di sviluppo software. Conseguenze di questo approccio automatizzato, oltre a quello di risparmio di tempo, sono di poter effettuare la messa in produzione di una applicazione in modo pi`u coerente, il che porta l’applicazione stessa ad essere pi`u stabile e sicura.
  • 18.
    Sviluppi futuri Test sullasicurezza del sistema Test di accettazione da parte dell’utente Creazione di una repository aziendale di Vagrant Box, in risposta alla necessit`a di avere configurazioni particolari per le macchine virtuali
  • 19.
    Grazie per lacortese attenzione.