Consiglio tesi: Applicazione del machine learning a DevOps

Messaggioda antonioc95 » 01/02/2019, 17:22

Sono uno studente di un corso di laurea triennale in informatica, siccome mi mancano gli ultimi 2 esami, ho iniziato a dedicarmi alla tesi.
Il professore che ho scelto come relatore mi ha consigliato una tesi sperimentale devo provare ad applicare il machine learning a una pipeline DevOps al fine di migliorare il ciclo di sviluppo e rilascio del software.
Io ho iniziato a studiare sia come funzionano gli algoritmi di machine learning, sia come funzionano le pipeline DevOps. Mi sono anche informato su come integrare le due cose, ma non ho trovato niente di concreto, solo qualche consiglio (per esempio analizzare i log del progetto con algoritmi di classificazione, monitorare i rilasci ecc.), quindi mi sa che dovrò inventare qualcosa io.
Comunque in pratica devo fare questo: costruire una piccola pipeline DevOps in cui faccio finta di sviluppare un qualsiasi progetto e usare qualche algoritmo di machine learning per analizzare la pipeline al fine di migliorare il lavoro (in qualche modo che non ho ancora inquadrato bene). Ovviamente trattandosi di una laurea triennale, non devo fare niente di esageratamente complicato.
Volevo chiedere: qualcuno potrebbe darmi qualche consiglio? Per esempio che strumenti DevOps potrei utilizzare (ho inziato a smanettare con Jenkins e Docker, ma non so se c'è qualcosa di più adatto al mio scopo)?
Eventualmente in che modo mi consigliate di integrare il ML per "aiutare" la pipeline DevOps?
Grazie.
antonioc95
Junior Member
Junior Member
 
Messaggio: 62 di 138
Iscritto il: 14/05/2016, 09:03

Re: Consiglio tesi: Applicazione del machine learning a DevOps

Messaggioda vict85 » 01/02/2019, 19:35

Potrei dire delle cose sbagliate perché sono uno sviluppatore ma non ho una formazione informatica (sono laureato in matematica) e non ho esperienza relativa di DevOps.
Il set up della azienda in cui lavoro è, se non sbaglio, fatto in questo modo: usiamo gerrit per gestire il nostro codice e ogni volta che pushiamo qualcosa gerrit triggera un job su jenkins che 1) mette il change su master, 2) compila l'applicazione e i test per varie architetture e 3) esegue i test secondo alcune regole. Inoltre ci sono dei job che vengono eseguiti periodicamente o solo manualmente. Una cosa che penso possa essere automatizzata con del machine learning è il riconoscere i test instabili, ovvero quei test che non falliscono in maniera deterministica e distinguerli da quei test che invece falliscono perché il nuovo codice introdotto li ha effettivamente fatti fallire. Almeno questa è la prima idea che mi è venuta in mente. Non so cosa facciano nella mia azienda a riguardo: a me vengono eventualmente comunicati dopo che sono già stati identificati. Suppongo che venga abbastanza fatto a mano (insomma si guarda la frequenza con cui fallisce e se uno fallisce spesso si chiede a qualcuno di testarlo localmente).
vict85
Moderatore
Moderatore
 
Messaggio: 9478 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: Consiglio tesi: Applicazione del machine learning a DevOps

Messaggioda antonioc95 » 02/02/2019, 15:45

vict85 ha scritto:Potrei dire delle cose sbagliate perché sono uno sviluppatore ma non ho una formazione informatica (sono laureato in matematica) e non ho esperienza relativa di DevOps.
Il set up della azienda in cui lavoro è, se non sbaglio, fatto in questo modo: usiamo gerrit per gestire il nostro codice e ogni volta che pushiamo qualcosa gerrit triggera un job su jenkins che 1) mette il change su master, 2) compila l'applicazione e i test per varie architetture e 3) esegue i test secondo alcune regole. Inoltre ci sono dei job che vengono eseguiti periodicamente o solo manualmente. Una cosa che penso possa essere automatizzata con del machine learning è il riconoscere i test instabili, ovvero quei test che non falliscono in maniera deterministica e distinguerli da quei test che invece falliscono perché il nuovo codice introdotto li ha effettivamente fatti fallire. Almeno questa è la prima idea che mi è venuta in mente. Non so cosa facciano nella mia azienda a riguardo: a me vengono eventualmente comunicati dopo che sono già stati identificati. Suppongo che venga abbastanza fatto a mano (insomma si guarda la frequenza con cui fallisce e se uno fallisce spesso si chiede a qualcuno di testarlo localmente).

Intanto grazie mille per la risposta e per le informazioni che mi hai dato.
Da quello che ho capito Jenkins è il tool per il CI più utilizzato, e da quello che vedo viene utilizzato in progetti seri e grossi. Quello che volevo sapere io è se per il mio scopo ha senso usare Jenkins o è meglio usare qualcosa di più semplice.
antonioc95
Junior Member
Junior Member
 
Messaggio: 63 di 138
Iscritto il: 14/05/2016, 09:03

Re: Consiglio tesi: Applicazione del machine learning a DevOps

Messaggioda apatriarca » 03/02/2019, 18:46

Personalmente vedo diversi problemi in un progetto di questo tipo.

1. Ti manca un'idea precisa di quello che vorresti ottenere. Rischi di rimanere bloccato nel tentativo di dare una forma alla tesi. Te lo dico per esperienza. Sono andato avanti diversi mesi nella mia tesi magistrale senza sapere cosa volessi effettivamente dire, avevo anche scritto alcuni capitoli, ma cambiare argomento è stata alla fine la decisione migliore che potessi fare.

2. Il progetto mi sembra troppo generico e impegnativo per una tesi triennale. Entrambe le parti, costruire una pipeline DevOps per un progetto e applicare algoritmi di machine learning, mi sembrano già sufficienti per una tesi e più raggiungibili come obiettivi.

3. Simulare lo sviluppo e la vita di un progetto è qualcosa di decisamente difficile da fare. Un progetto prende spesso una "vita propria" una volta che viene rilasciato in quanto potrebbe venire utilizzato in modi molto diversi da quelli inizialmente pensati dagli sviluppatori. Inoltre nuove priorità potrebbero presentarsi e cambiare la direzione intrapresa fino a quel momento.

4. Gli algoritmi di machine learning richiedono spesso molti dati per essere applicati. Ottenere questi dati e dare loro una forma adatta ad essere analizzata richiede spesso molto tempo e sperimentazione. Non sono algoritmi che applichi come "black box" e che magicamente funzionano come vorresti. A volte le soluzioni ottenute potrebbero anche stupire..

Per quanto riguarda Jenkins direi che va bene. Non è un tool complicato. Di fatto è semplicemente un server che automatizza una serie di task. La complessità delle task e della pipeline dipende da te, ma pipeline semplici sono abbastanza facili da configurare. Per applicare i tuoi algoritmi di machine learning hai inoltre bisogno di avere la possibilità di configurare in modo automatico le tue task in base al risultato del tuo algoritmo ed è un tipo di utilizzo che è sinceramente più complicato della media dei progetti.. Anche di quelli seri e grossi (che potrebbero avere una pipeline molto più semplice di quello che ti aspetti..).
apatriarca
Moderatore
Moderatore
 
Messaggio: 5182 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Consiglio tesi: Applicazione del machine learning a DevOps

Messaggioda antonioc95 » 04/02/2019, 12:33

apatriarca ha scritto:Personalmente vedo diversi problemi in un progetto di questo tipo.

1. Ti manca un'idea precisa di quello che vorresti ottenere. Rischi di rimanere bloccato nel tentativo di dare una forma alla tesi. Te lo dico per esperienza. Sono andato avanti diversi mesi nella mia tesi magistrale senza sapere cosa volessi effettivamente dire, avevo anche scritto alcuni capitoli, ma cambiare argomento è stata alla fine la decisione migliore che potessi fare.

2. Il progetto mi sembra troppo generico e impegnativo per una tesi triennale. Entrambe le parti, costruire una pipeline DevOps per un progetto e applicare algoritmi di machine learning, mi sembrano già sufficienti per una tesi e più raggiungibili come obiettivi.

3. Simulare lo sviluppo e la vita di un progetto è qualcosa di decisamente difficile da fare. Un progetto prende spesso una "vita propria" una volta che viene rilasciato in quanto potrebbe venire utilizzato in modi molto diversi da quelli inizialmente pensati dagli sviluppatori. Inoltre nuove priorità potrebbero presentarsi e cambiare la direzione intrapresa fino a quel momento.

4. Gli algoritmi di machine learning richiedono spesso molti dati per essere applicati. Ottenere questi dati e dare loro una forma adatta ad essere analizzata richiede spesso molto tempo e sperimentazione. Non sono algoritmi che applichi come "black box" e che magicamente funzionano come vorresti. A volte le soluzioni ottenute potrebbero anche stupire..

Per quanto riguarda Jenkins direi che va bene. Non è un tool complicato. Di fatto è semplicemente un server che automatizza una serie di task. La complessità delle task e della pipeline dipende da te, ma pipeline semplici sono abbastanza facili da configurare. Per applicare i tuoi algoritmi di machine learning hai inoltre bisogno di avere la possibilità di configurare in modo automatico le tue task in base al risultato del tuo algoritmo ed è un tipo di utilizzo che è sinceramente più complicato della media dei progetti.. Anche di quelli seri e grossi (che potrebbero avere una pipeline molto più semplice di quello che ti aspetti..).

Intanto grazie per la risposta.
Ad alcune di queste cose che hai scritto ci avevo già pensato, e non hai torto.
Per la questione machine learning, ammetto di non essere ancora competente in materia, ho visto solo qualche corso introduttivo online, ma in linea di massima ho capito come funziona, so che ci vogliono un sacco di dati per avere delle buone predizioni, ovviamente in un progetto del genere difficilmente riuscirò ad ottenere un sacco di dati (essendo una cosa simulata).
In ogni caso, proprio perchè si tratta di una simulazione e soprattutto considerando che si tratta di una tesi per una laurea triennale, non devo fare niente di esagerato e anche se i risultati finali non saranno particolarmente buoni, non ci fa niente. Devo fare solo qualche esempio di integrazione tra le due cose, senza aspettarmi risultati finali eclatanti, in questo link ci sono alcuni consigli su qualcosa che si potrebbe fare: https://www.quora.com/How-is-machine-learning-used-in-DevOps
Alla luce di questo che ti ho detto, e dalla tua esperienza, pensi che non sia fattibile una tesi del genere?
Grazie ancora.
antonioc95
Junior Member
Junior Member
 
Messaggio: 64 di 138
Iscritto il: 14/05/2016, 09:03


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite