Deploy con Idephix: fuori l’estensione, dentro la ricetta

ideato

Idephix è il nostro tool di automazione in PHP, lo usiamo per creare script di build, automatizzare processi e task ripetitivi, ma soprattutto per automatizzare e gestire i deploy. Negli ultimi tempi abbiamo riorganizzato il codice del progetto e abbiamo deciso di eliminare l’estensione dedicata per rendere la scrittura di script di rilascio più facile e veloce. Se vuoi sapere perché o semplicemente come aggiornare il tuo idxfile ora che l’estensione di deploy non esiste più, continua a leggere.

Fin dalle sue prime release, Idephix, prevede un meccanismo di estensioni che permette agli sviluppatori di aggiungere funzionalità al tool. Tramite le estensioni è possibile implementare dei comportamenti aggiuntivi ed attivarli o disattivarli a piacimento in ogni progetto che ne abbia bisogno, questo senza dover duplicare il codice relativo ogni volta. Una delle prime estensioni che abbiamo realizzato, ed aggiunto fin dalle prime release di idephix, è stata “Deploy“; già dal nome si può intuire che il suo scopo ultimo è quello di gestire, appunto, i rilasci delle nostre applicazioni.

Il problema emerso da questo approccio è che, nonostante le necessità soddisfatte dalle estensioni siano simili, il codice prodotto in realtà è tantissimo. Implementare uno script di deploy che sia adattabile e utilizzabile, senza modifiche, da più progetti implica una serie di opzioni di personalizzazione molto altaQuesto ovviamente aggiunge un certo livello di complessità.

Un altro aspetto fondamentale è il grado di confidenza. Il deploy è sempre una fase delicata (per questo è bene automatizzarla) e lo sviluppatore deve avere estrema confidenza e fiducia verso gli script che la automatizzano. Con il tempo abbiamo scoperto che avere la procedura di deploy all’interno di un’estensione rendeva le operazioni di deploy e gli step previsti dallo script meno espliciti e meno evidenti. Questo, di riflesso, rendeva lo sviluppatore meno sicuro perché non sapeva esattamente cosa sarebbe successo.

Durante il refactoring del sistema di estensioni di Idephix abbiamo preso in considerazione questi problemi e abbiamo deciso che un’ estensione, per risolvere il problema del deploy, non era la soluzione giusta. Se da un lato abbiamo riconosciuto l’impossibilità di offrire una soluzione “chiavi in mano” per il rilascio dei progetti, dall’altro però vogliamo  che Idephix resti un aiuto nell’implementazione di questi automatismi.

Uno sviluppatore che sceglie Idephix non deve partire da 0 per la realizzazione del suo script di deploy

Abbiamo quindi deciso di eliminare l’estensione Deploy, ma di mettere comunque a disposizione una nostra ricetta per risolvere il problema. In questo modo lo sviluppatore ha comunque un punto di partenza (che è quello che usiamo per i nostri progetti) per impostare lo script, ma può facilmente introdurre le modifiche che il suo specifico progetto richiedono.

Al momento questa è l’unica ricetta disponibile all’interno del cookbook, ed è quella che viene utilizzata quando lanciate il comando initFile. In futuro ne verranno sicuramente aggiunte altre, in modo da avere soluzioni di deploy specifiche per certi CMS o anche per altri casi di utilizzo.

Deploy Recipe VS Deploy Extension

Trovo che avere una collezioni di ricette dalle quali attingere per comporre il mio idxfile sia molto più comodo e veloce rispetto ad avere una pacchetto di estensioni. Durante lo sviluppo di Idephix abbiamo, fatto una serie di compromessi, cercando di scegliere sempre la soluzione che garantisse semplicità e velocità di utilizzo per lo sviluppatore. Credo che anche rimuovere qualche estensione in favore di ricette da utilizzare alla bisogna vada in questa direzione e penso che sia una buona scelta. Un buon esempio di “less is more”.