In occasione dell’apertura del Magento Stack Exchange su http://magento.stackexchange.com/ ho posto la seguente domanda: “Qual è la vostra miglior strategia di deploy su Magento?”
La domanda e le relative risposte sono visibili al seguente indirizzo: http://magento.stackexchange.com/questions/252/what-is-the-best-deploy-strategy
Mi sono stati forniti ottimi spunti ma non la risposta che speravo: non esiste un tool o un best practice comunemente adottato per facilitare il deploy di soluzioni Magento.
Allora, mi son detto, perché non svilupparlo?
Facciamo un passo indietro: cosa si intende in questo caso per deploy e perché è così importante avere un tool?
Sviluppare una soluzione Magento non significa soltanto scrivere codice. Significa anche lavorare all’interno dell’Admin Control Panel, configurare la piattaforma, creare entità come attributi, prodotti, categorie. Tutte queste attività vanno ripetute su ciascun ambiente su cui si lavora: i vari ambienti dei singoli sviluppatori, l’eventuale ambiente di pre-staging, l’ambiente di staging e quello di produzione.
Naturalmente tutto quello che si può fare attraverso l’Admin Control Panel si può fare scrivendo codice e infatti diverse risposte alla mia domanda su Stack Exchange andavano in questa direzione: devi sviluppare il codice che crea le entità e modifica la configurazione di sistema e non farlo attraverso l’Admin Control Panel.
Abbiamo sviluppato in passato numerosi progetti con questa logica e sebbene sia l’unico modo (sino ad ora) per essere sicuri che tutto quello che serve sia replicato in maniera identica su tutti gli ambienti questo non evita la possibilità che uno sviluppatore modifichi una configurazione o crei una entità attraverso l’Admin Control Panel dimenticando di scrivere il codice che replica questa azione. Senza contare al tempo che richiede scrivere il codice che replica queste azioni e la possibilità di inserire bug in questo codice.
Perché non automatizzare tutto questo? In fondo basterebbe tracciare tutto ciò che accade nell’Admin Control Panel e, ove possibile, replicare queste azioni automaticamente. Se poi il tracciamento fosse condiviso attraverso gli stessi strumenti di source versioning abitualmente utilizzati per mantenere allineata la base di codice il gioco sarebbe fatto.
Da queste considerazioni nasce Mageploy, l’unica estensione (che io sappia almeno al momento) che consentitrà (il futuro è d’obbligo) di fare tutto questo.
Il prototipo o POC (Proof Of Concept) è già stato sviluppato. Al momento siamo in grado di replicare la creazione degli Attributi e degli Attribute Set. Questi ultimi sono complessi da gestire e non abbiamo ancora risolto tutte le relative problematiche. I prossimi passi saranno quelli di sviluppare la tracciatura automatica almeno per System Config e Categorie.
Il codice sarà ampiamente refattorizzato quindi sconsiglio di utilizzare già Mageploy però se volete seguirne l’evoluzione potete farlo attraverso il relativo repository GitHub: https://github.com/pug-more/mageploy
Speriamo di poter presentare l’estensione al PHP-Day 2013, abbiamo già sottoposto la candidatura.
One Response to Strategie di deploy su Magento