Resta aggiornato con le ultime news SAEP!

continuous-delivery-sviluppo-software.jpg

Quando sviluppiamo un software lo facciamo in team: siamo cioè un gruppo di persone, tra ingegneri e sviluppatori, che vanno a contribuire allo sviluppo delle diverse parti del software. Isole in sé autonome che devono essere in grado di dialogare tra loro per funzionare al meglio.



Continuous integration e continuous delivery: cosa sono

Innanzitutto definiamo il concetto di continuous integration o integrazione continua.
Un esempio pratico?
Quando sviluppiamo un software lo facciamo in team: siamo cioè un gruppo di persone, tra ingegneri e sviluppatori, che vanno a contribuire allo sviluppo delle diverse parti del software.
Ad un certo punto però le diverse parti vanno assemblate, ovvero integrate tra loro affinché lavorino efficacemente insieme: vanno cioè allineate.

Ecco: la continuous integration esprime proprio quest’allineamento. Esso avviene di frequente - spesso "più volte al giorno"- e consiste nell’integrazione dagli ambienti di lavoro dei singoli sviluppatori verso un ambiente condiviso in cui risiede il software nel suo complesso.


Il concetto nacque originariamente nel contesto dell’Extreme Programming, come contromisura preventiva al problema dell'integration hell, (l’”inferno” dell'integrazione di porzioni di software sviluppati in modo indipendente su lunghi periodi di tempo e potenzialmente significativamente divergenti).
Nello sviluppo non continuous gli sviluppi delle diverse parti del software procedono indipendentemente per lungo tempo, ed è solo al momento dell’integrazione che gli eventuali (inevitabili) problemi emergono: il momento dell’integrazione diventava quindi la cartina tornasole degli errori di progettazione e/o sviluppo, cui era spesso macchinoso rimediare vista la distanza temporale trascorsa dall’inizio dello sviluppo.

Il controllo di versione: ovvero la conoscenza è potere (e responsabilità)

Con la continuous integration si apre un nuovo scenario di sviluppo: ogni fase della produzione, dal piccolo commit di codice al test sino al rilascio di funzionalità cardine viene tracciata e corrisponde ad una certa “versione” del software.
Ogni modifica o integrazione ha cioè un numero identificativo ed è tracciata ogni informazione ad essa correlata: quando, come e da chi è stata lanciata.
Cosa ne deriva?
Tantissimi vantaggi per un codice di qualità:

  • Se c’è un errore è più facile capire da dove è partito e perché
  • Gli eventuali difetti e bug vengono intercettati subito e si gioca d’anticipo nel correggerli
  • Ogni nuova versione del codice rappresenta una versione migliorata, ottimizzata di sé stessa
  • Ogni sviluppatore è palesemente reso responsabile della parte di codice rilasciata: è una esplicita chiamata alla responsabilità e allo sviluppo qualitativo cui ogni sviluppatore non può sottrarsi

Continuous delivery: quando il Giorno del Giudizio non è più il Giorno del Giudizio

La continuous delivery è la conseguenza intrinseca della continuous integration: se il software è continuamente e frequentemente integrato, allora è anche continuamente e frequentemente rilasciabile in produzione, ovvero pubblicabile online e visibile al cliente.
E’ questo un punto cardine della tecnologia agile, che anche noi in SAEP applichiamo con le dovute personalizzazioni: il software come abbiamo detto è diviso in parti e lavorazioni, ciascuna delle quali va frequentemente integrata con le altre e rilasciata in produzione.

Ogni modifica introdotta nel codice è potenzialmente rilasciabile a giro breve, senza più lunghi tempi di attesa tra sviluppo e messa in produzione delle modifiche.
In che termini lo sviluppo con continuous integration porta qualità nello sviluppo del software e in ultima istanza agli occhi del cliente finale anche non tecnico?

1. Il D-day è rimandato (alle calendae greche)

Nello sviluppo non agile e senza continuous delivery il giorno del rilascio corrispondeva al Giorno del Giudizio Universale.
Provate a pensarci: 3 mesi di sviluppo e 1 solo giorno in cui tutti i nodi possono potenzialmente venire al pettine.

Spaventerebbe chiunque, giusto?
Con la continuous delivery invece gli sviluppatori sono fisiologicamente vaccinati al rilascio: la release non è più il D-Day tanto temuto, ma solo una delle tante fasi del processo di sviluppo e continuo miglioramento del software.

2. Un miglioramento continuo

Il software stesso non è più un monolite statico e difficilmente penetrabile, ma un complesso di parti di codice in sé autonome e tra loro cooperanti che vengono testate e fatte dialogare tra loro di continuo, permettendone un’ottimizzazione progressiva senza soluzione di continuità.

3. Pianificazione trasparente di tempi e obiettivi

Con lo sviluppo software sotto capillare controllo, è molto più semplice pianificare obiettivi realistici e progressivi su un periodo di tempo concordato tra team di sviluppo e team cliente.
Gli obiettivi possono essere presidiati, le richieste integrative o i cambiamenti in corsa sono capillarmente tracciati, così come i loro impatti sull’integrazione con le altre funzionalità previste.

Questo consente di avere controllo anche su eventuali ritardi – non più subiti come conseguenze di meccanismi imprevedibili, ma come scelte consapevoli di eventuali cambi di direzione - sui tempi complessivi di sviluppo ed i relativi costi.

La combo continuous integration + continuous delivery sconfigge la paura del rilascio e apre la strada ad un’evoluzione del software in sostanza più rapida, controllata e di qualità rispetto al passato.

  • Categorie:
  • Sviluppo WEB

Articoli correlati

sviluppo-single-page-application-milano.png__800x450_q85_crop_subject_location-800,495_subsampling-2.jpg#
Single Page Application: cosa sono, ...
Le SPA o Single Page Application sono applicazioni web fruibili come singola pagina senza necessità ...
software-gestionale.jpg#
Software Gestionale
Le soluzioni software gestionali Saep ICT e Saep Informatica nascono per soddisfare qualsiasi necessità di ...
pwa.png#
PWA: cosa sono le progressive ...
Le PWA – Progressive Web Application sono applicazioni estremamente focalizzate sull’importanza della User Experience e ...
consulenza-informatica-milano.png#
Consulenza informatica - la figura ...
La consulenza informatica, "IT Consulting" o "Business and Technology Consulting" è una forma di consulenza ...
sviluppo-ecommerce-responsive-mobile-first-indexing.jpg#
Perché avere un e-commerce responsive: ...
Se sul finire di questo 2018 qualcuno ancora stesse sottovalutando l'importanza di ottimizzare contenuti e ...
come-indicizzare-una-single-page-application.jpg#
Single page application e la ...
Le Single Page Application non vanno di pari passo con la SEO? Ni. Si possono ...
sviluppo-app-android-ios-milano.png#
Come scegliere una società di ...
Ecco alcune linee guida per aiutarti a trovare la giusta azienda di sviluppo app cui ...
quanto-costa-una-software-house.png#
Quanto costa lavorare con una ...
Probabilmente ti sei chiesto quanto costa una collaborazione con un'agenzia di sviluppo software, la cosiddetta ...
check-list-fattori-ranking-on-page.jpg#
Fattori di ranking on-page: la ...
SEO o Search Engine Optimization è il nome dato all'attività che tenta di migliorare il ...
significato-acronimo-ict.png#
ICT significato e definizione
Ti sarà capitato di chiederti cosa significhi ICT, l'acronimo che identifica l'attività di molte aziende ...
sviluppo-software-personalizzato.jpg#
Sviluppo software personalizzato
Il processo di sviluppo software è un'attività complessa che richiede un’attenta pianificazione, un costante controllo ...
landing-page.jpg#
Landing pages: Cos'è una Pagina ...
Nel marketing digitale, una landing page è una pagina web autonoma, creata appositamente ai fini ...
sviluppo-in-python-milano.jpg#
Sviluppo software in Python - ...
Se sei atterrato su questo articolo è perché probabilmente cerchi un team che possa supportarti ...
dns_pubblico_di_google.png#
DNS Google pubblico diventa 8.8.8.8
Google Public DNS è un servizio gratuito offerto agli utenti Internet di tutto il mondo ...
Schermata 2019-04-17 alle 11.47.57.png#
Google Material Design
Cos’è il Materiale DesignIl Material Design è uno stile, un codice, un linguaggio di design ...
sviluppo-python-django-milano.jpg#
Sviluppo Python & Django, tutti ...
Ciao Matteo, innanzitutto raccontaci almeno un po’ di te: come sei arrivato in SAEP ICT ...
sicurezza-ecommerce-milano2.jpg#
Misure di sicurezza per i ...
Misure di sicurezza per i sistemi eCommerce: cosa dice il DGPR EuropeoLe misure di sicurezza ...
app-per-offerte-commerciali.jpg#
App per la gestione delle ...
Offerte e preventivi: i parametri utili per snellire i processiCome ogni commerciale o agente di ...
sviluppo-applicazioni-angular-milano.png#
Sviluppo web application in Angular
Caratteristiche principali di AngularAngular è un framework opensource dedicato allo sviluppo di applicazioni WEB e ...
sviluppo-software-linguaggio-python.png#
Python: un linguaggio in rapida ...
Il linguaggio di programmazione Python è confermato da O'Reilly come uno degli argomenti più cercati ...