SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
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.

Contenu connexe

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

Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Automated UI testing for iOs and Android mobile apps
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
 
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...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Emerasoft, solutions to collaborate
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
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
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Progettazione e sviluppo di un software applicativo su un single board computer
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 computerAlessandro Mascherin
 
Machine learning models continuous deployment on azure using devops
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 devopsIgor Antonacci
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
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 Kubernetesblexin
 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
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 OwnCloudSonia Pepe
 
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...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Mattia De Bernardi
 
Integrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzatoIntegrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzatoGian Maria Ricci
 

Similaire à Progetto e implementazione di una pipeline di sviluppo software con tecnologie DevOps (20)

Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Automated UI testing for iOs and Android mobile apps
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
 
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...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
Tesi di Laurea
Tesi di LaureaTesi di Laurea
Tesi di Laurea
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
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
 
Hardware e plugin
Hardware e pluginHardware e plugin
Hardware e plugin
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Progettazione e sviluppo di un software applicativo su un single board computer
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
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
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
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
 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
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
 
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...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
 
PALUZZANO TESI
PALUZZANO TESIPALUZZANO TESI
PALUZZANO TESI
 
Xamarin Test Cloud
Xamarin Test CloudXamarin Test Cloud
Xamarin Test Cloud
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Integrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzatoIntegrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzato
 
Continuos Integration
Continuos IntegrationContinuos Integration
Continuos Integration
 
Presentazione CERT-CHECK
Presentazione CERT-CHECKPresentazione CERT-CHECK
Presentazione CERT-CHECK
 
Iloveyou
IloveyouIloveyou
Iloveyou
 

Dernier

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 

Dernier (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 

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.