• Non ci sono risultati.

La differenza tra DevOps e l’approccio tradizionale Agile

1.3 DevOps : Developer and Operations

1.3.3 La differenza tra DevOps e l’approccio tradizionale Agile

Si tende a pensare che Agile e DevOps siano due metodologie distinte, quando in real- tà DevOps è un miglioramento recente della metodologia Agile. La principale differenza che DevOps apporta è la tra Developer, solitamente orientati esclusivamente alla creazio- ne di cambiamenti e all’aggiunta o alla modifica di funzionalità, e Operation, solitamente orientati allo stabilimento e miglioramento dei servizi, in tutte le fasi del ciclo di vita del prodotto, con l’obbiettivo che questa collaborazione porti ad un enorme valore sia per quanto riguarda la qualità del prodotto finale, sia per la velocità con cui questo viene realizzato. DevOps estende i principi della metodologia Agile che si fondano su valori, metodi e pratiche, concentrandosi sull’intero servizio,ed aggiunge anche gli strumenti. Secondo il Manifesto Agile infatti, gli strumenti assumono una minima importanza, ma questo ha portato nel tempo a trascurarli notevolmente con conseguenze spesso non in linea con l’obiettivo del cliente. Un altro modo di vedere le differenze tra i due metodi è che Agile, risolve i problemi della tecnologia, mentre DevOps cerca di risolvere un problema di business attraverso un insieme di pratiche, cultura e valori che portano ad avere un software più solido e che viene prodotto più velocemente, con meno problemi durante il ciclo di vita. Infatti DevOps accumuna l’obiettivo di Developers e Operators, cioè puntare all’ottimizzazione dell’intero sistema invece che alle ottimizzazioni locali, ciò implica che al raggiungimento degli obbietti di business, sarà risolto il problema del cliente, sia esso un problema di Developer o di Operation.

DevOps Perchè viene usato

Come spiegato nel capitolo precedente, se i principi di Devops vengono adottati nel ci- clo di vita del rilascio si può davvero ottimizzare il rilascio del software. Le organizzazione che stanno adottando i principi DevOps avranno sicuramente un vantaggio rispetto alle organizzazioni che non lo utilizzano. I processi devono cambiare con il tempo e devono essere in linea con le esigenze del mercato in quanto quest’ultimo è altamente mutevo- le. DevOps infatti consente all’organizzazione di lanciare prodotti più rapidamente sul mercato,[19] e favorisce:

1. Prevedibilità: con questo termine si intende che DevOps offre un tasso di falli- mento significativamente inferiore per le nuove releases.

2. Riproducibilità: qualsiasi cosa è versionata così che la versione precedente possa essere ripristinata in qualsiasi momento.

3. Manutenibilità: il processo di recupero deve essere immediato in caso di arresto anomalo di una nuova versione o disabilitazione del sistema corrente.

4. Time to market(il tempo che intercorre dall’ideazione di un prodotto alla sua effettiva commercializzazione): come già detto, DevOps riduce il time to market quasi alla metà attraverso un rilascio del software semplificato. Questo sopratutto per le applicazioni digitali e mobili.

5. Maggiore qualità: DevOps aiuta il team a fornire una migliore qualità dello sviluppo delle applicazioni in quanto considera anche i problemi legati all’infra- struttura.

6. Rischio ridotto: DevOps incorpora aspetti di sicurezza nel ciclo di vita del rilascio del software. Aiuta a ridurre i problemi durante il ciclo di vita.

7. Resilienza: lo stato operazionale del sistema software è più stabile, sicuro e le modifiche sono verificabili.

8. Efficienza dei costi: DevOps offre efficienza dei costi nel processo di sviluppo del software, che è sempre auspicabile nella gestione delle aziende IT.

9. Suddivide codice molto grande in porzioni più piccole: DevOps si basa sul metodo di programmazione agile. Pertanto, consente di suddividere blocchi di codice più grande in blocchi più piccoli e gestibili.

2.1

DevOps Lifecicle

DevOps è una profonda integrazione tra sviluppo e operazioni. Comprendere DevOps non è possibile senza conoscere il ciclo di vita di DevOps. Ecco un breve riepilogo sul ciclo di via di DevOps (DevOps lifecycle) presente in figura 2.1:

1. Plan. Inizialmente va pianificato il tipo di applicazione che è necessario sviluppare. Serve per fare un quadro generale del processo di sviluppo.

2. Code: Scrivere il codice dell’applicazione secondo i requisiti del cliente,se i requisiti sono già stati definiti, seguire la precedente fase di plan.

3. Build: In questa fase, le nuove funzionalità sono integrate con il codice esistente sviluppato nella fase precedente così che poi avrà luogo il test. Lo sviluppo continuo è possibile solo grazie alla continua integrazione e test.In questa fase DevOps, lo sviluppo del software avviene costantemente. L’intero processo di sviluppo è separato in piccoli cicli di sviluppo. Ciò avvantaggia il team DevOps: accelerare lo sviluppo del software e il processo di delivery.

4. Test: Questo è il punto centrale dell’applicazione. Bisogna provare l’applicazione che si è creata, e riscrivere l’applicazione se necessario. Il team di controllo qualità utilizzerà strumenti come Selenium per identificare e correggere i bug rilevati nel nuovo codice.

5. Releases: Se la fase di test va a buon fine, è il momento di rilasciare l’applicazione in produzione(Live).

6. Deploy: Eventualmente distribuire il codice in cloud per un ulteriore utilizzo. In questa fase, il processo di distribuzione si svolge in modo continuo. Viene eseguito in modo tale che qualsiasi modifica apportata in qualsiasi momento nel codice, non influisca ad esempio sul funzionamento di un sito Web ad alto traffico.

7. Operate: Eseguire l’operazione sul codice, se presente.

8. Monitor: In questa fase, il team si prenderà cura del comportamento inappropria- to del sistema o dei bug rilavati in produzione. Monitorare le prestazioni dell’appli- cazione secondo i requisiti del cliente.Apportare eventuali modifiche per soddisfare

i clienti. E se non si riesce a soddisfare un requisito, apportare modifiche in quella particolare area per soddisfare il cliente.

In questo modo si ripete continuamente il DevOps lifecycle.