Domenico La Rocca
UNBREAKABLE DELIVERY PIPELINE.
Rel. Guido Marchetto. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering), 2020
|
PDF (Tesi_di_laurea)
- Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives. Download (1MB) | Preview |
Abstract: |
Accelerare i tempi di rilascio del software è ormai un'esigenza di qualsiasi azienda. Il DevOps, tramite la collaborazione tra i team e l'utilizzo di nuove teconologie, permette di automatizzare tutti quei processi affidati agli sviluppatori diminuendo gli errori e rallentamenti nei rilasci. La fase di rilascio di un software avviene in almeno due fasi: Test e Produzione. Senza l'approccio DevOps, durante la fase di Test, lo sviluppatore ha il compito di decidere le risorse da assegnare all'applicazione, verificarne le funzionalità e fare degli stress test, infine, prende la decisione di convalidare il prodotto. Una volta che il software è stato rilasciato nell'ambiente di Produzione, si verifica a runtime il comportamento e in caso di problemi, sarà lo sviluppatore ad effettuare dei meccanismi di rollback manualmente. L'elaborato di tesi ha come intento di migliorare le fasi descritte precedentemente con l'adozione della metodologia DevOps e inserire ulteriori automatismi che ad oggi non sono ancora adottati dalle aziende. Le tecnologie utilizzate per farlo sono state Jenkins, Istio e Spinnaker. - Jenkins: attraverso le sue Pipeline è possibile programmare l'automatizzazione di varie parti del processo. - Istio: per la gestione del traffico nel cluster Kubernetes. - Spinnaker: per effettuare il rilascio al pubblico della nuova versione. Nella Fase di Test si è automatizzato il processo utilizzando i test automatici di Selenium e JMeter i cui risultati vengono analizzati sfruttando dei plugin di Jenkins. Mentre per la parte della stima delle risorse si è creato un algoritmo eseguito su una Pipeline di Jenkins. Per distribuire al pubblico o meno la nuova versione si è deciso di classificare le performance di quest'ultima. I classificatori proposti sono due, in base alle esigenze del team DevOps si può scegliere di utilizzarne solo una o entrambe in modo complementare. 1) Analisi matematica delle performance. 2) Classificatore di machine learning, sfruttando la libreria python XGBOOST per l'algoritmo di parallel gradient boosting tree. A questo punto l'ultima fase da migliorare è la Fase di Produzione. Per fare ciò, sfruttando le funzionalità di Istio e Spinnaker, si è implementato un canary deploy. La nuova versione non viene più rilasciata a tutto il pubblico immediatamente ma viene resa disponibile per gradi. Ogni volta che il traffico verso la nuova versione deve aumentare viene eseguito un test automatico che va a giudicarne le performance. In questo modo si assicura che la nuova versione andrà a ricevere più utenti se e solo se il suo comportamento procede come programmato.Se invece il test darà un risultato negativo verrà eseguita una rollback automatica alla versione precedente. Sfruttando tecnologie nuove, come Istio e Spinnaker, e introducendo sia il machine learning che il canary deploy gestiti in modo automatico, il progetto di tesi riesce ad automatizzare il processo. Il progetto è aperto a possibili migliorie da svolgere come lavori futuri che riguardano varie parti dell'elaborato. Si può studiare una soluzione con un classificatore in machine learning per quanto riguarda la stima delle risorse. Come anche rifinire la complementarità delle due soluzioni per la classificazione della nuova versione dove il passaggio dall'analisi matematica a quella con machine learning sia automatica. Invece, nella la fase di Produzione potrebbe essere interessante implementare una nuovo test da effettuare ad ogni step del canary deploy. |
---|---|
Relators: | Guido Marchetto |
Academic year: | 2019/20 |
Publication type: | Electronic |
Number of Pages: | 96 |
Subjects: | |
Corso di laurea: | Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering) |
Classe di laurea: | New organization > Master science > LM-32 - COMPUTER SYSTEMS ENGINEERING |
Aziende collaboratrici: | Blue Reply Srl |
URI: | http://webthesis.biblio.polito.it/id/eprint/15255 |
Modify record (reserved for operators) |