Resta aggiornato con le ultime news SAEP!

continuous-delivery-sviluppo-software.jpg

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, quando avviene di frequente - leggi "più volte al giorno": l’integrazione dagli ambienti di lavoro degli 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 rilanciabile 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.

  • Categories:
  • 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, come funzionano e vantaggi
Le SPA o Single Page Application sono applicazioni web fruibili come singola pagina senza necessità di caricamento per pagine: scopriamone ...
software-gestionale.jpg#
Software Gestionale
Le soluzioni software gestionali Saep ICT e Saep Informatica nascono per soddisfare qualsiasi necessità di gestione aziendale: sommano l'esperienza di ...
pwa.png#
PWA: cosa sono le progressive web apps
Le PWA – Progressive Web Application sono applicazioni estremamente focalizzate sull’importanza della User Experience e che si distinguono per ben ...
consulenza-informatica-milano.png#
Cosa fa un Consulente IT nel 2019
La consulenza informatica: "IT Consulting" o "Business and Technology Consulting" è una forma di consulenza che consiste nella prestazione professionale, ...
sviluppo-ecommerce-responsive-mobile-first-indexing.jpg#
Perché avere un e-commerce responsive: il Mobile First Indexing
Se sul finire di questo 2018 qualcuno ancora stesse sottovalutando l'importanza di ottimizzare contenuti e servizi per la navigazione da ...
Consulenza SEO Milano#
Consulenza SEO a Milano
Che voi abbiate un sito aziendale o un'e-commerce da promuovere e rilanciare, probabilmente avete già sentito parlare del termine SEO ...
come-indicizzare-una-single-page-application.jpg#
Sviluppare applicazioni SPA compatibili con l’ottimizzazione SEO.
Le Single Page Application non vanno di pari passo con la SEO? Ni. Si possono sviluppare buone applicazioni SPA strizzando ...
sviluppo-app-android-ios-milano.png#
Come scegliere una società di sviluppo app
Ecco alcune linee guida per aiutarti a trovare la giusta azienda di sviluppo app cui affidarti per trasformare la tua ...
quanto-costa-una-software-house.png#
Quanto costa lavorare con una software house
Probabilmente ti sei chiesto quanto costa una collaborazione con un'agenzia di sviluppo software, la cosiddetta software house.La creazione di soluzioni ...
check-list-fattori-ranking-on-page.jpg#
Fattori di ranking on-page: la checklist
SEO o Search Engine Optimization è il nome dato all'attività che tenta di migliorare il posizionamento di un sito web ...
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 e software house che lavorano ...
sviluppo-software-personalizzato.jpg#
Sviluppo software personalizzato
Il processo di sviluppo software è un'attività complessa che richiede un’attenta pianificazione, un costante controllo e una documentazione specifica e ...
landing-page.jpg#
Landing pages: Cos'è una Pagina di Destinazione
Nel marketing digitale, una landing page è una pagina web autonoma, creata appositamente ai fini di una campagna pubblicitaria o ...
sviluppo-in-python-milano.jpg#
Sviluppo software in Python - perché ci piace.
Cerchi un team che possa supportarti nello sviluppo di software in Python? Sviluppiamo applicazioni WEB di tipo Enterprise in Python ...
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 da Google. Il DNS Google ...
Schermata 2019-04-17 alle 11.47.57.png#
Google Material Design - La nostra guida
Cos’è il Materiale DesignIl Material Design è uno stile, un codice, un linguaggio di design sviluppato da Google supportato nativamente ...
sviluppo-python-django-milano.jpg#
Sviluppo Python & Django, tutti i vantaggi: a tu per tu con chi programma
Ciao Matteo, innanzitutto raccontaci almeno un po’ di te: come sei arrivato in SAEP ICT e che tipo di percorso ...
sicurezza-ecommerce-milano2.jpg#
Sicurezza nell’eCommerce: principali rischi e come difendersi (parte 2)
Misure di sicurezza per i sistemi eCommerce: cosa dice il DGPR EuropeoLe misure di sicurezza nell’ambito di sistemi di eCommerce ...
app-per-offerte-commerciali.jpg#
App per la gestione delle offerte commerciali
Offerte e preventivi: i parametri utili per snellire i processiCome ogni commerciale o agente di commercio sa, la creazione dell’offerta ...
sicurezza-ecommerce-milano.jpg#
La sicurezza nell’eCommerce: tecniche e strumenti per tutelarsi
Controlli e verifiche periodiche: giocare d’anticipoControlli periodici consentono di agire tempestivamente, di anticipare eventuali attacchi, di scoprire eventuali falli e ...
sviluppo-applicazioni-angular-milano.png#
Sviluppo web application in Angular: tutti i vantaggi
Caratteristiche principali di AngularAngular è un framework opensource dedicato allo sviluppo di applicazioni WEB e sviluppato principalmente da Google. Dire ...