Best practice per gestire al meglio un progetto web dalla A alla Z

Technical, User Experience

2 Lug, 2019

Chi è che non ha in mente l’immagine di uno sviluppatore geek barbuto che scrive linee di codice nel suo garage in qualsiasi momento del giorno e della notte da un semplice text editor? Scrive cose strane e incomprensibili, una serie di numeri e lettere con caratteri speciali, poi ti chiama dicendo che “è tutto ok, siamo online”. Chi è questo mago che non ha frequentato Hogwarts? Un computer, una tastiera, uno schermo, una soda, delle ciambelle (senza glutine) e hop… il trucco è fatto e la NSA viene hackerata… No…. WAIT!

geek girl Best practice per gestire al meglio un progetto web dalla A alla Z
Sì, lei non conferma il nostro immaginario di sviluppatore geek. 

Un’idea, un bisogno, un progetto

La prima vera cosa da definire bene è sapere che cosa bisogna fare. Sembra una banalità, un’ovvietà! Ovviamente, certo… diciamo che tutto diventa migliore quando mettiamo a fuoco il perimetro progettuale. Tutto parte da un’idea: a volte eccentrica, a volte per rispondere ad un bisogno preciso. In ogni caso, il sapere verso cosa stiamo andando è necessario per definire il perimetro del progetto, dell’applicazione che sarà da realizzare e di quali bisogni dovrà rispondere. Generalmente si inizia con un insieme di specifiche che permetteranno di redigere le specifiche funzionali dettagliate (le regole dell’applicazione descritte nel modo più esaustivo possibile al fine di poter testare il corretto funzionamento dell’applicazione man mano che il progetto procede fino ad arrivare alla versione finale). Il documento di specifiche funzionali e tecnico fornisce le basi per lo sviluppo del progetto: quale perimetro di attività e cosa farà l’applicazione. Senza questo documento si perderà diverso tempo senza grande successo. A volte sembra che all’inizio di un progetto si investa molto tempo senza però rendersi conto che sarà tutto di guadagnato durante la fase di sviluppo.

L’IDE

L’IDE (Integrated Development Environment) è il primo strumento necessario (o per lo meno uno di quelli che facilitano notevolmente la vita) per gli sviluppatori. Adattato al linguaggio utilizzato per lo sviluppo dell’applicazione (PHP, Java, NodeJS, …), aiuta lo sviluppatore a prevenire errori di sintassi più comuni, fornisce metodi e funzioni in auto-completamento, pre-compila alcuni elementi (chiusura parentesi, rientro del codice, ecc). Ci sono diversi IDE sul mercato, alcuni sono open source come Eclipse, altri disponibili con licenza come PHPStorm o IntelliJ. I più coraggiosi però possono provare a dilettarsi con un semplice text editor.

Ambienti multipli

All’interno di un progetto sono presenti diversi ambienti. Alcuni sono indispensabili come l’ambiente di produzione (altrimenti il sito o l’applicazione non saranno utilizzabili), altri sono opzionali nella pratica, ma certamente più che necessari (scappate da chi sostiene il contrario).

Ambiente di sviluppo

Permette di sviluppare l’applicativo in locale sulla propria macchina (il sito sarà quindi accessibile solo da questa macchina specifica). Questo ambiente è direttamente accessibile e aggiornato ad ogni modifica di codice attraverso l’IDE. Una volta che lo sviluppo delle funzionalità sarà completato e testato dallo sviluppatore, questo potrà “condividere” il proprio lavoro al resto del team attraverso un tool di gestione delle versioni (ne parleremo più tardi), che permetterà di procedere con il deploy su tutti gli ambienti di test interni e di test lato cliente, fino ad arrivare al deploy in produzione.

Per simulare gli ambienti finali (server di produzione) in ambiente locale, possiamo utilizzare diversi tool come ad esempio Docker.

Docker Best practice per gestire al meglio un progetto web dalla A alla Z
Progetto in sviluppo in ambiente locale

Ambiente di test/ integrazione continua

Quando lo sviluppatore ha terminato e testato le funzionalità sulle quali ha lavorato, condivide il proprio lavoro attraverso lo strumento di gestione  di test (interno) o di integrazione continua (delivery automatica a ogni volta che uno sviluppatore aggiorna l’applicativo con una nuova funzionalità). L’ambiente di test, e quindi l’ambiente di produzione, sarà sempre aggiornato con l’ultima versione.

Teamwork Best practice per gestire al meglio un progetto web dalla A alla Z
Un lavoro di team tutt’altro che terminato.

Ambiente di pre-produzione

Stiamo arrivando al core della questione… l’ambiente di pre-produzione, come suggerisce il nome, indica l’ambiente prima del go live della piattaforma. Viene utilizzato principalmente per fornire una versione del sito, che contiene l’insieme delle funzionalità, ed ognuna dovrà essere testata e approvata così come il buon funzionamento della totalità del sito. Una volta approvata la pre-produzione, l’insieme di queste funzionalità viene trasposta nell’ambiente di produzione, si parla quindi di rilascio o di rilascio di una nuova versione (a seconda dell’importanza delle modifiche apportate).

Importante notare che l’ambiente di pre-produzione dovrà essere molto simile a quello di produzione (stessa versione del linguaggio, plugin, tool, memoria, ecc).

Progetto terminato castello sabbia Best practice per gestire al meglio un progetto web dalla A alla Z
Il progetto è terminato, pronto per essere testato prima dell’inizio della messa in produzione. 

Ambiente di produzione

È l’ultimo degli ambienti, quello che verrà visitato da tutti gli utenti dell’applicazione. Quando si verifica un problema su questo ambiente generalmente non è mai un buon segno… il famoso bug in produzione si trasforma subito in ALERT GENERALE.

Ah sì, a proposito… è VIETATO fare deploy in produzione il venerdì o il giorno prima di una festività. Meglio mettere in campo tutte le possibilità che si hanno piuttosto che giocare con il fuoco. Questa buona norma è regolamentata anche dalla Convention de Genève sur les Développements Informatiques e il non rispetto è soggetto a possibili sanzioni. No, davvero, non si consegna nulla il venerdì.

Un sistema di deploy

Si tratta di un sistema di deploy che permette di gestire e garantire la delivery del codice su un ambiente di destinazione specifico. Non consegneremo più file per file, oltre ad essere una pratica noiosa è soggetta ad errore e non sicura per l’applicazione. Abbiamo degli strumenti che ci permettono di consegnare automaticamente una versione specifica, usiamoli! Ponetevi sempre la domanda: se vi venisse consegnata una scatola di LEGO (questo articolo non è sponsorizzato), sarebbe più sicuro ricevere l’intera scatola contenente tutte le componenti di Star Wars Millennium Falcon (ogni riferimento è puramente casuale) che ricevere pezzo per pezzo saltuariamente, giusto? Bene, è esattamente la stessa cosa per un applicativo.

delivery Best practice per gestire al meglio un progetto web dalla A alla Z
No, Poste Italiane non consegna progetti. 

Uno strumento di monitoraggio

Uno strumento di monitoraggio che permette di sapere lo status di ogni progetto. Ogni funzionalità è monitorata, sappiamo chi ha il lead, a che percentuale di avanzamento si trova, su quale ambiente è stata realizzata, ecc. E’ indispensabile per garantire che il progetto venga sviluppato in modo impeccabile. Possiamo citare Redmine come uno tra gli strumenti riconosciuti, in particolare permette di gestire bug, anomalie e richieste evolutive.

Uno strumento di gestione delle versioni

Ne abbiamo parlato in precedenza. Lo strumento di gestione delle versioni consente di saltare il codice e ogni versione per tutta la vita dell’applicazione. Così il codice sorgente è accessibile a tutti i membri del team di progetto e sarà possibile tornare alle versioni precedenti in caso di necessità, raggruppare per di funzionalità (ad esempio avere la versione 1 in produzione, la versione 1.1 in pre-produzione, la versione 1.2 in test, ecc). È ovviamente un tool INDISPENSABILE. Il più famoso oggi è GIT, ma anche SVN e CVS.

Abbiamo cercato di ripercorrere macroscopicamente tutti gli step principali fino ad arrivare alla messa in produzione di un sito o di un’applicazione. Naturalmente ogni progetto ha un perimetro specifico con vincoli di diverso tipo; ogni strumento esistente dovrà quindi essere adattato ad ogni situazione, ma l’idea generale è quella di strutturare la vita di ogni singolo progetto dalla nascita dell’idea fino al go-live. È quindi importante pianificare e gestire ogni singolo step per assicurarsi che tutto fili liscio come l’olio. Ecco cosa conta 😁.

 

* No, la CGDI non esiste. Scusate ma non consegnamo il venerdì.  

Lascia un commento.