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

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.
1 de 19

Recomendados

Progetto e implementazione di una pipeline di sviluppo software con tecnologi... por
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
880 vistas39 diapositivas
I processi di sviluppo software: l'evoluzione agile ed il DevOps por
I processi di sviluppo software: l'evoluzione agile ed il DevOpsI processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsGiulio Destri
2.8K vistas49 diapositivas
DevOps - Come diventare un buon DevOpper por
DevOps -  Come diventare un buon DevOpperDevOps -  Come diventare un buon DevOpper
DevOps - Come diventare un buon DevOpperConsulthinkspa
969 vistas27 diapositivas
Total Testing in DevOps por
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOpsGianni Bombelli
96 vistas30 diapositivas
I processi di sviluppo software: la storia por
I processi di sviluppo software: la storiaI processi di sviluppo software: la storia
I processi di sviluppo software: la storiaGiulio Destri
935 vistas22 diapositivas
CI/CD - Presentazione Introduttiva por
CI/CD - Presentazione IntroduttivaCI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaMatteo Di Carlo
693 vistas15 diapositivas

Más contenido relacionado

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

Designing with microservices - Daniele Mondello por
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
338 vistas39 diapositivas
Automated UI testing for iOs and Android mobile apps por
Automated UI testing for iOs and Android mobile appsAutomated UI testing for iOs and Android mobile apps
Automated UI testing for iOs and Android mobile appsMassimo Bonanni
231 vistas30 diapositivas
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d... por
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Emerasoft, solutions to collaborate
891 vistas46 diapositivas
Rich client application: MVC4 + MVVM = Knockout.js por
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
701 vistas28 diapositivas
Tesi di Laurea por
Tesi di LaureaTesi di Laurea
Tesi di LaureaFelice Pescatore
618 vistas19 diapositivas
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova por
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
7.3K vistas15 diapositivas

Similar a Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps(20)

Designing with microservices - Daniele Mondello por Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello338 vistas
Automated UI testing for iOs and Android mobile apps por Massimo Bonanni
Automated UI testing for iOs and Android mobile appsAutomated UI testing for iOs and Android mobile apps
Automated UI testing for iOs and Android mobile apps
Massimo Bonanni231 vistas
Rich client application: MVC4 + MVVM = Knockout.js por Giorgio Di Nardo
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
Giorgio Di Nardo701 vistas
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova por Andrea Dottor
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Andrea Dottor7.3K vistas
Niccolò Becchi: Introduzione a GWT por firenze-gtug
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
firenze-gtug451 vistas
Progettazione e sviluppo di un software applicativo su un single board computer por Alessandro Mascherin
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
Machine learning models continuous deployment on azure using devops por Igor Antonacci
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
Igor Antonacci42 vistas
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes por blexin
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
blexin31 vistas
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud por Sonia Pepe
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudAutomatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Sonia Pepe599 vistas
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen... por Mattia De Bernardi
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Mattia De Bernardi273 vistas
Integrazione continua e Deploy automatizzato por Gian Maria Ricci
Integrazione continua e Deploy automatizzatoIntegrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzato
Gian Maria Ricci405 vistas

Último

Convegno 16/11 da IRETI | TROIANO Luigia por
Convegno 16/11 da IRETI | TROIANO LuigiaConvegno 16/11 da IRETI | TROIANO Luigia
Convegno 16/11 da IRETI | TROIANO LuigiaServizi a rete
48 vistas15 diapositivas
Convegno 16/11 da IRETI | PERSI Davide por
Convegno 16/11 da IRETI | PERSI DavideConvegno 16/11 da IRETI | PERSI Davide
Convegno 16/11 da IRETI | PERSI DavideServizi a rete
10 vistas21 diapositivas
Convegno 16/11 da IRETI | ROCCHI Daniele por
Convegno 16/11 da IRETI | ROCCHI DanieleConvegno 16/11 da IRETI | ROCCHI Daniele
Convegno 16/11 da IRETI | ROCCHI DanieleServizi a rete
18 vistas11 diapositivas
Convegno 16/11 da IRETI | CARNI Marco por
Convegno 16/11 da IRETI | CARNI MarcoConvegno 16/11 da IRETI | CARNI Marco
Convegno 16/11 da IRETI | CARNI MarcoServizi a rete
9 vistas12 diapositivas
Webinar EBWorld 28 novembre 2023 por
Webinar EBWorld 28 novembre 2023Webinar EBWorld 28 novembre 2023
Webinar EBWorld 28 novembre 2023Servizi a rete
18 vistas12 diapositivas
Progettazione ed installazione impianti d'antenna por
Progettazione ed installazione impianti d'antenna Progettazione ed installazione impianti d'antenna
Progettazione ed installazione impianti d'antenna Massimo Talia
5 vistas6 diapositivas

Último(10)

Convegno 16/11 da IRETI | TROIANO Luigia por Servizi a rete
Convegno 16/11 da IRETI | TROIANO LuigiaConvegno 16/11 da IRETI | TROIANO Luigia
Convegno 16/11 da IRETI | TROIANO Luigia
Servizi a rete48 vistas
Convegno 16/11 da IRETI | PERSI Davide por Servizi a rete
Convegno 16/11 da IRETI | PERSI DavideConvegno 16/11 da IRETI | PERSI Davide
Convegno 16/11 da IRETI | PERSI Davide
Servizi a rete10 vistas
Convegno 16/11 da IRETI | ROCCHI Daniele por Servizi a rete
Convegno 16/11 da IRETI | ROCCHI DanieleConvegno 16/11 da IRETI | ROCCHI Daniele
Convegno 16/11 da IRETI | ROCCHI Daniele
Servizi a rete18 vistas
Convegno 16/11 da IRETI | CARNI Marco por Servizi a rete
Convegno 16/11 da IRETI | CARNI MarcoConvegno 16/11 da IRETI | CARNI Marco
Convegno 16/11 da IRETI | CARNI Marco
Servizi a rete9 vistas
Webinar EBWorld 28 novembre 2023 por Servizi a rete
Webinar EBWorld 28 novembre 2023Webinar EBWorld 28 novembre 2023
Webinar EBWorld 28 novembre 2023
Servizi a rete18 vistas
Progettazione ed installazione impianti d'antenna por Massimo Talia
Progettazione ed installazione impianti d'antenna Progettazione ed installazione impianti d'antenna
Progettazione ed installazione impianti d'antenna
Massimo Talia5 vistas
Convegno 16/11 da IRETI | CURATOLA Franco por Servizi a rete
Convegno 16/11 da IRETI | CURATOLA FrancoConvegno 16/11 da IRETI | CURATOLA Franco
Convegno 16/11 da IRETI | CURATOLA Franco
Servizi a rete8 vistas
Convegno 16/11 da IRETI | PALLOTTA Marco por Servizi a rete
Convegno 16/11 da IRETI | PALLOTTA MarcoConvegno 16/11 da IRETI | PALLOTTA Marco
Convegno 16/11 da IRETI | PALLOTTA Marco
Servizi a rete6 vistas
Convegno 16/11 da IRETI | CASE Nicola por Servizi a rete
Convegno 16/11 da IRETI | CASE NicolaConvegno 16/11 da IRETI | CASE Nicola
Convegno 16/11 da IRETI | CASE Nicola
Servizi a rete10 vistas
Convegno 16/11 da IRETI | SPINUSO+MAGGI por Servizi a rete
Convegno 16/11 da IRETI | SPINUSO+MAGGIConvegno 16/11 da IRETI | SPINUSO+MAGGI
Convegno 16/11 da IRETI | SPINUSO+MAGGI
Servizi a rete18 vistas

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

  • 1. 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
  • 2. 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.
  • 3. 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.
  • 4. 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
  • 5. Cosa si intende con 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 `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.
  • 7. 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.
  • 8. 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.
  • 9. 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
  • 10. Shopizer Shopizer `e una applicazione open-source scritta in linguaggio Java che permette la creazione di siti web volti alla vendita di prodotti.
  • 11. 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
  • 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 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.
  • 18. 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
  • 19. Grazie per la cortese attenzione.