Che cos'è la distribuzione software?
Secondo Wikipedia, per "distribuzione software" si intendono tutte le attività che rendono disponibile per l'uso un sistema software. Il processo di distribuzione generale è costituito da diverse attività correlate, con possibili transizioni tra di esse. Ogni sistema software è unico. Pertanto, la "distribuzione" deve essere interpretata come un processo generale da personalizzare in base ai requisiti o alle caratteristiche specifiche.
Alcuni usano i termini "distribuzione" e "installazione" in modo intercambiabile, ma l'installazione del software è solo una parte del processo di distribuzione. La distribuzione implica molto di più. Le attività di distribuzione possono includere:
- "Racking e stacking" di un server.
- Distribuzione di un componente software aggiornato in tale server.
- Uso di elementi quali script e infrastruttura come codice.
- Addirittura l'uso di un'unità USB per installare manualmente il software nei computer aziendali.
La distribuzione manuale del software è un'attività che può richiedere molto lavoro e non è facilmente scalabile. L'automazione rende più semplice e conveniente garantire la coerenza quando si implementa un nuovo software o si aggiorna quello esistente all'interno di un'organizzazione.
L'obiettivo, nell'ambito di questo percorso di apprendimento, è come distribuire al meglio il software per garantirne l'affidabilità. Questo modulo affronta non solo la distribuzione del software, ma anche quella dell'infrastruttura cloud. Eventuali riferimenti alla distribuzione di un servizio o di una soluzione possono indicare la distribuzione di software, infrastruttura cloud, configurazione e tutti gli elementi necessari per rendere un sistema software disponibile per l'uso in modo affidabile.
Scenario: distribuzione epica
Il termine epico significa "grande, monumentale o vasto", ma nel contesto di questa discussione, non è una buona cosa. Il termine "epico" è stato coniato da Jez Humble nel suo libro Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation dal momento che rappresenta un'attività su larga scala (e altamente dirompente). Ecco un esempio di come avviene di solito:
- Un'organizzazione sviluppa un'applicazione per le vendite. Questa applicazione viene aggiornata esattamente due volte all'anno.
- Durante questi aggiornamenti, vengono distribuite tutte le nuove funzionalità, le correzioni di bug (di piccole e grandi dimensioni) e gli aggiornamenti delle dipendenze.
- La prima distribuzione dell'anno è pianificata per il fine settimana della Festa del lavoro, mentre la seconda è prevista per il fine settimana dopo il giorno del Ringraziamento.
- Ogni aggiornamento è una situazione del tipo "tutti in campo". Il team dell'applicazione, il team di supporto, il team dell'infrastruttura e il reparto di gestione: tutti sono coinvolti nella distribuzione.
- I servizi risultano temporaneamente offline mentre è in corso la distribuzione.
- La storia ha dimostrato che la distribuzione si accompagna sempre a problemi, progettazione su richiesta, risoluzione dei problemi e modifiche di gestione della configurazione.
- Raramente va bene e, al suo completamento, in genere risulta assemblata in un modo non riproducibile.
Non si tratta di una buona situazione di distribuzione. Il metodo di distribuzione epica è un'intensa attività manuale che presenta una serie di problemi:
- È complessa.
- È stressante.
- È rischiosa.
- È lenta.
- Non è riproducibile a causa della complessità di tutti i passaggi.
- Spesso richiede il coinvolgimento di diversi esperti per completare la distribuzione.
Poiché questo processo è lungo e difficoltoso, deve essere pianificato in momenti in cui causerà la minima interruzione della produttività degli utenti, vale a dire in momenti che potrebbero essere poco pratici per il team di distribuzione, ad esempio nei fine settimana e durante le feste.
È possibile che i membri del team si sentano sotto pressione per completare la colossale operazione entro i tempi previsti, cosa che potrebbe indurli a commettere errori di configurazione. Inoltre, i tempi prolungati tra una distribuzione e l'altra possono far dimenticare come vanno esattamente le cose.
Il dilemma della distribuzione
La distribuzione del software è un'attività complessa, e quando si "accumulano" più modifiche essenziali, correzioni e aggiunte di funzionalità in un'unica distribuzione, si aumenta la complessità e di conseguenza la probabilità che si verifichi un errore. Inoltre, in caso di problemi, questa complessità rende ancora più difficile tenere traccia esattamente di ciò che ha causato il problema.
Questa complessità può anche creare problemi per gli utenti finali, in quanto potrebbero dover imparare a gestire tutte le nuove funzionalità e le modifiche in una sola volta, per non parlare dei bug introdotti dalla complessità della distribuzione epica.
Dovrebbe esserci una soluzione migliore e, in effetti, c'è. La buona notizia è che la tradizionale strategia di distribuzione epica non è l'unica opzione. Nella prossima unità, verrà illustrato un modo migliore per mettere in atto questo processo.