SlideShare a Scribd company logo
1 of 25
Download to read offline
EASY MAGENTO SYNCHRONIZATION
Presented by Alessandro Ronchi & Roberto Gambuzzi
Mage::day(2013); // Modena - 8 Novembre 2013
CHI SIAMO
Membri e Fondatori del PUG MoRe
Magento Certified Developers
Colleghi in @webgriffe
PERCHÉ E COME È NATO
PROBLEMA
Propagare modifiche in Admin Panel su diversi ambienti

SOLUZIONI POSSIBILI

A mano: time consuming, error prone, costoso
Upgrade Script: time consuming, e conflitti su feature
branch
DB centralizzato: no offline, concorrenza spietata
Selenium: selettori da correggere e non cross-platform
MageFlow (?): "MageFlow Beta is launching in December"
Mageploy: niente codice, distribuito, time-saving
COME FUNZIONA
LIVE DEMO
COME FUNZIONA
STATUS E RUN (GIT PULL SU ALTRO AMBIENTE)
vgatpeie2/a/w/a10$gtpl
arn@rcs3:vrwwmg80 i ul
rmt:Cutn ojcs 2,dn.
eoe onig bet: 7 oe
rmt:Cmrsigojcs 10 (/) dn.
eoe opesn bet: 0% 44, oe
rmt:Ttl1 (et 3,rue 1 (et 3
eoe oa 4 dla ) esd 4 dla )
Upcigojcs 10 (41) dn.
nakn bet: 0% 1/4, oe
Fo gtu.o:u-oedm-aea21
rm ihbcmpgmr/eomgdy03
e542.e42 mse
aa9.7439 atr
- oii/atr
> rgnmse
Udtn e542.e42
paig aa9.7439
Fs-owr
atfrad
vrmgpo/aelyalcv
a/aelymgpo_l.s
1flscagd 1isrin()
ie hne,
netos+

|

1+
COME FUNZIONA
STATUS
vgatpeie2/a/w/a10$ppselmgpo.h arn@rcs3:vrwwmg80 h hl/aelypp s
Mgpo v119-takn i atv -ue i rbro
aely
..
rcig s cie
sr s oet
PnigAtosls:
edn cin it
I:1
D
-Sv nwMgzio'a-0'(rnh o MnOt2 0:25 21)
ae e aazn mg01 aoci n o c 8 92:6 03
Ttlpnigatos 1
oa edn cin:

RUN
vgatpeie2/a/w/a10$ppselmgpo.h arn@rcs3:vrwwmg80 h hl/aelypp r
Mgpo v119-takn i atv -ue i rbro
aely
..
rcig s cie
sr s oet
Ato I # -scesEeet cet cnsces
cin D 1
ucs lmno rao o ucso
Eeue atos 11
xctd cin: /
COME FUNZIONA
PANNELLO DI ADMIN
COME FUNZIONA
PANNELLO DI ADMIN (DELETE)
COME FUNZIONA
PANNELLO DI ADMIN (COMMIT E PUSH DELLA DELETE)
vgatpeie2/a/w/a10$gtsau
arn@rcs3:vrwwmg80 i tts
#O bac mse
n rnh atr
#Cagsntsae frcmi:
hne o tgd o omt
#
#
mdfe: vrmgpo/aelyalcv
oiid
a/aelymgpo_l.s
#
vgatpeie2/a/w/a10$gtcmi -m"lmnt mgzio
arn@rcs3:vrwwmg80 i omt a Eiiao aazn"
[atredb6 Eiiaomgzio
mse de2] lmnt aazn
1fl cagd 1isrin+
ie hne,
neto()
vgatpeie2/a/w/a10$gtps
arn@rcs3:vrwwmg80 i uh
Cutn ojcs 9 dn.
onig bet: , oe
Dlacmrsinuigu t 2tras
et opeso sn p o
hed.
Cmrsigojcs 10 (/) dn.
opesn bet: 0% 33, oe
Wiigojcs 10 (/) 40bts dn.
rtn bet: 0% 55, 4 ye, oe
Ttl5(et 2,rue 0(et 0
oa
dla ) esd
dla )
T gtgtu.o:u-oedm-aea21.i
o i@ihbcmpgmr/eomgdy03gt
374f.de2 mse - mse
5db.edb6 atr > atr
COME FUNZIONA
PANNELLO DI ADMIN (RICEZIONE DELLE DELETE DA PARTE
PRIMO DEV)
aesnr@oasi~NtenPoet/ae80 ppselmgpo.h lsadoKwlk:/eBasrjcsmg10$ h hl/aelypp s
Mgpo v119-takn i atv -ue i aoci
aely
..
rcig s cie
sr s rnh
PnigAtosls:
edn cin it
I:2-Dlt eitn Mgzio'a-0'(oet o MnOt2 1:12 21)
D
eee xsig aazn mg01 rbro n o c 8 02:0 03
Ttlpnigatos 1
oa edn cin:
aesnr@oasi~NtenPoet/ae80 ppselmgpo.h lsadoKwlk:/eBasrjcsmg10$ h hl/aelypp r
Mgpo v119-takn i atv -ue i aoci
aely
..
rcig s cie
sr s rnh
Ato I # -scesEeet cnelt cnsces
cin D 2
ucs lmno aclao o ucso
Eeue atos 11
xctd cin: /
COME È SVILUPPATO
THE MAGENTO WAY
Request Funnel: registra le invocazioni alle Action a cui
è associato un Tracker
Tracker: implementa encoding e decoding dei
parametri delle Action convertendo gli ID specifici di
ogni ambiente in UUID
UUID (Universally Unique Identifier): identifica
univocamente le entità secondo una logica specifica;
implementazione potenzialmente complessa che può
richiedere vincoli
Config: un modulo può aggiungere i propri Tracker
dichiarandoli nel config.xml
COME È SVILUPPATO
COME È SVILUPPATO
DICHIARAZIONE DI UN TRACKER NEL CONFIG.XML
<ofg
cni>
..
.
<eal>
dfut
..
.
<aely
mgpo>
<cin>
atos
<eomgdy03
dm_aea21>
<iald0/iald
dsbe><dsbe>
<ls>eoMgdy03MdlMgpo_cinMgzii/ls>
casDm_aea21_oe_aelyAto_aazn<cas
<dm_aea21>
/eomgdy03
<atos
/cin>
<mgpo>
/aely
..
.
<dfut
/eal>
..
.
<cni>
/ofg
COME È SVILUPPATO
LA CLASSE CHE IMPLEMENTA IL TRACKER
Estende
PgoeMgpo_oe_cinAsrc
uMR_aelyMdlAto_btat
Implementazione minima per registrare le informazioni
utili nel log utilizzando la funzione m t h )della classe
ac(
base
<pp
?h
casDm_aea21_oe_aelyAto_aazn
ls eoMgdy03MdlMgpo_cinMgzii
etnsPgoeMgpo_oe_cinAsrc
xed uMR_aelyMdlAto_btat
{
cntVRIN=''
os ESO
1;
poetd$cd ='eomgdy3mgzii;
rtce _oe
dm_aea1_aazn'
poetd$bakbeaas=ary'e' 'omky)
rtce _lnalPrm
ra(ky, fr_e';

}

poetdfnto _eVrin){
rtce ucin gteso(
rtr
eun
Mg:hle(pgoemgpo'-gteso()''sl:VRIN
ae:epr'umr_aely)>eVrin2...ef:ESO;
}
COME È SVILUPPATO
LA FUNZIONE MATCH() DELLA CLASSE BASE
<pp
?h
pbi fnto mth){
ulc ucin ac(
$ =Mg:hle(pgoemgpo';
h
ae:epr'umr_aely)
$-lg"ouenm:%" $hs>rqet>eMdlNm()
h>o(Mdl ae s, ti-_eus-gtoueae);
$-lg"otolrnm:%" $hs>rqet>eCnrleNm()
h>o(Cnrle ae s, ti-_eus-gtotolrae);
$-lg"cinnm:%" $hs>rqet>eAtoNm()
h>o(Ato ae s, ti-_eus-gtcinae);
$-lg"eus Prmtr:%" pitr$hs>rqet>ePrm(,tu);
h>o(Rqet aaees s, rn_(ti-_eus-gtaas) re)
rtr fle
eun as;
}
COME È SVILUPPATO
INFORMAZIONI NEL LOG DOPO UNA SAVE ACTION
NEW
DELETE
21-02T84:70:0DBG()
031-80:42+00 EU 7:
Mdl nm:dma21
oue ae emg03
21-02T84:70:0DBG()
031-80:42+00 EU 7:
Cnrle nm:amntlmgzi
otolr ae dihm_aaz
n
i
21-02T84:70:0DBG()
031-80:42+00 EU 7:
Ato nm:sv
cin ae ae
21-02T84:70:0DBG()
031-80:42+00 EU 7:
(

RqetPrmtr:Ary
eus aaees ra

2E
/
)

[e]= 1a1e6.595b4a
ky > d237..11804
[omky = v1o5h58O
fr_e] > 1MzRXU43
[oie = mg01
cdc] > a-0
[oe = MCne
nm] > Betr
[ain]= I
nzoe > T
[it]= Mdn
cta > oea
[a]= 410
cp > 10
[niiz]= vaeVrii,5
idrzo > il iglo
[mi]= mg0@oegupog
eal > a01mr.rs.r

21-02T90:80:0DBG()
031-80:02+00 EU 7:
Mdl nm:dma21
oue ae emg03
21-02T90:80:0DBG()
031-80:02+00 EU 7:
Cnrle nm:amntlmgzi
otolr ae dihm_aaz
n
i
21-02T90:80:0DBG()
031-80:02+00 EU 7:
Ato nm:dlt
cin ae eee
21-02T90:80:0DBG()
031-80:02+00 EU 7:
RqetPrmtr:Ary
eus aaees ra
(
[d = 1
i] >
[e]= f690.2c3a
ky > 617..3e06
)
COME È SVILUPPATO
CLASSE COMPLETA PER IL TRACKING DEI MAGAZZINI
s Gtu
u iHb
<pp
?h
casDm_aea21_oe_aelyAto_aazn etnsPgoeMgpo_oe_
ls eoMgdy03MdlMgpo_cinMgzii xed uMR_aelyMdl
{
cntVRIN=''
os ESO
1;
poetd$cd ='eomgdy3mgzii;
rtce _oe
dm_aea1_aazn'
poetd$bakbeaas=ary'e' 'omky)
rtce _lnalPrm
ra(ky, fr_e';

poetdfnto _eVrin)
rtce ucin gteso(
{
rtr Mg:hle(pgoemgpo'-gteso().''.sl:VRIN
eun ae:epr'umr_aely)>eVrin2
.
ef:ESO;
}
pbi fnto mth)
ulc ucin ac(
{
i ($hs>rqet {
f !ti-_eus)
rtr fle
eun as;
}

i (ti-_eus-gtoueae)= 'emg03){
f $hs>rqet>eMdlNm( = dma21'
i (ti-_eus-gtotolrae)= 'dihm_aazn' {
f $hs>rqet>eCnrleNm( = amntlmgzii)
i (nary$hs>rqet>eAtoNm(,ary'ae,'eee
f i_ra(ti-_eus-gtcinae) ra(sv' dlt'
rtr tu;
eun re
}
}
}
}

rtr fle
eun as;

pbi fnto ecd(
ulc ucin noe)
{
COME È SVILUPPATO
RISULTATO DEL TRACKING (CSV)
cl:18927
o1 32516
cl:aoci
o2 rnh
cl:Sv nwMgzio'a-0'
o3 ae e aazn mg01
cl:Dm_aea21_oe_aelyAto_aazn
o4 eoMgdy03MdlMgpo_cinMgzii
cl:Dm_aea21
o5 eoMgdy03
cl:amntlmgzii
o6 dihm_aazn
cl:sv
o7 ae
cl:oOtOYINZlZIc.t3lmyXwmyy7Q=
o8 3nzj6mvGjS7..bJLddNL9ZIf=
cl:111
o9 ..
CONFLITTI
Scenario: due programmatori hanno creato un
magazzino con lo stesso codice. Il primo ha già fatto
commit e push.
Il secondo si ritrova nello stato seguente:
aesnr@oasi~NtenPoet/ae80 gtpl
lsadoKwlk:/eBasrjcsmg10$ i ul
rmt:Cutn ojcs 9 dn.
eoe onig bet: , oe
rmt:Cmrsigojcs 10 (/) dn.
eoe opesn bet: 0% 11, oe
rmt:Ttl5(et 2,rue 5(et 2
eoe oa
dla ) esd
dla )
Upcigojcs 10 (/) dn.
nakn bet: 0% 55, oe
Fo gtu.o:u-oedm-aea21
rm ihbcmpgmr/eomgdy03
4809.8d1 mse
639.57ab atr
- oii/atr
> rgnmse
At-egn vrmgpo/aelyalcv
uomrig a/aelymgpo_l.s
CNLC (otn) Mrecnlc i vrmgpo/aelyalcv
OFIT cnet: eg ofit n a/aelymgpo_l.s
Atmtcmrefie;fxcnlcsadte cmi tersl.
uoai eg ald i ofit n hn omt h eut
CONFLITTI
Cosa troveremo nel m g p o _ l . s ?
aelyalcv

<<<<HA
<<< ED
18963,rnh,Sv nwMgzio'a-0',eoMgdy03MdlMgpo_ci
32550aoci"ae e aazn mg01"Dm_aea21_oe_aelyAt
====
===
18964,oet,Sv nwMgzio'a-0',eoMgdy03MdlMgpo_ci
32516rbro"ae e aazn mg01"Dm_aea21_oe_aelyAt
>>>>57ab2237408f845fec5f
>>> 8d11291323e35372160c

Come si risolve? Parlandosi :-)
Un conflitto di questo tipo è il risultato di una mancata
comunicazione; va risolto scegliendo l'azione da
mantenere o eliminando entrambe e registrandone una
nuova.
CONCLUSIONI
AS-IS

Attribute Tracker
Category Tracker
CMS Tracker
Store
System Config (sperimentale)

TO BE

Più Tracker possibili
Controllo dei vincoli
Test automatici
?

Q & (HOPEFULLY) A
GRAZIE!
RIMANIAMO IN CONTATTO...
Mageploy: mageploy.com
Twitter: @aleron75 - @pug_more
GitHub: github.com/aleron75 - github.com/pugmore
Blog: www.magentocommunity.it
PUG MoRe: http://more.grusp.org
Magento Italia on G+

More Related Content

Similar to Mageploy presentato al Mage::day() 2013

Routing (2/3) | Train to Symfony
Routing (2/3) | Train to SymfonyRouting (2/3) | Train to Symfony
Routing (2/3) | Train to Symfonyinmarelibero
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance OptimizationAlessandro Martin
 
Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15Giovanni Buffa
 
Sviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTSviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTCristiano Costantini
 
A static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsA static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsLino Possamai
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebMassimiliano Dessì
 
Il ruolo della documentazione nel successo dei progetti di automazione
Il ruolo della documentazione nel successo dei progetti di automazioneIl ruolo della documentazione nel successo dei progetti di automazione
Il ruolo della documentazione nel successo dei progetti di automazioneEnzoBirindelli
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)jampslide
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacyTommaso Torti
 
Modificare e personalizzare WordPress attraverso 20 Snippets
Modificare e personalizzare WordPress attraverso 20 SnippetsModificare e personalizzare WordPress attraverso 20 Snippets
Modificare e personalizzare WordPress attraverso 20 SnippetsPetrozzi Emilio
 
Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1Steve Maraspin
 

Similar to Mageploy presentato al Mage::day() 2013 (20)

eZ publish - Extension
eZ publish - ExtensioneZ publish - Extension
eZ publish - Extension
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
Routing (2/3) | Train to Symfony
Routing (2/3) | Train to SymfonyRouting (2/3) | Train to Symfony
Routing (2/3) | Train to Symfony
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
 
Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15
 
Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2
 
Sviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTSviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWT
 
X2 Linux Riassunti
X2 Linux RiassuntiX2 Linux Riassunti
X2 Linux Riassunti
 
Perl Template Toolkit
Perl Template ToolkitPerl Template Toolkit
Perl Template Toolkit
 
Pycon Jungle
Pycon JunglePycon Jungle
Pycon Jungle
 
A static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsA static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming Errors
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
CleanCode
CleanCodeCleanCode
CleanCode
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
 
Il ruolo della documentazione nel successo dei progetti di automazione
Il ruolo della documentazione nel successo dei progetti di automazioneIl ruolo della documentazione nel successo dei progetti di automazione
Il ruolo della documentazione nel successo dei progetti di automazione
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
 
Modificare e personalizzare WordPress attraverso 20 Snippets
Modificare e personalizzare WordPress attraverso 20 SnippetsModificare e personalizzare WordPress attraverso 20 Snippets
Modificare e personalizzare WordPress attraverso 20 Snippets
 
Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1
 

More from Alessandro Ronchi

Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...
Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...
Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...Alessandro Ronchi
 
Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Alessandro Ronchi
 
Some lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSISome lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSIAlessandro Ronchi
 
The lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSIThe lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSIAlessandro Ronchi
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento coreAlessandro Ronchi
 
How I ended up touching Magento core
How I ended up touching Magento coreHow I ended up touching Magento core
How I ended up touching Magento coreAlessandro Ronchi
 
A true story about Magento best practices
A true story about Magento best practicesA true story about Magento best practices
A true story about Magento best practicesAlessandro Ronchi
 

More from Alessandro Ronchi (8)

Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...
Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...
Meet Magento IT 2021 - Principles & Advantages of Hexagonal Architecture on M...
 
Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3Awesome architectures in Magento 2.3
Awesome architectures in Magento 2.3
 
Some lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSISome lessons learned contributing to #MagentoMSI
Some lessons learned contributing to #MagentoMSI
 
The lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSIThe lessons I learned contributing to #MagentoMSI
The lessons I learned contributing to #MagentoMSI
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento core
 
How I ended up touching Magento core
How I ended up touching Magento coreHow I ended up touching Magento core
How I ended up touching Magento core
 
A true story about Magento best practices
A true story about Magento best practicesA true story about Magento best practices
A true story about Magento best practices
 
Magento best practices
Magento best practicesMagento best practices
Magento best practices
 

Recently uploaded

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 

Recently uploaded (9)

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 

Mageploy presentato al Mage::day() 2013

  • 1. EASY MAGENTO SYNCHRONIZATION Presented by Alessandro Ronchi & Roberto Gambuzzi Mage::day(2013); // Modena - 8 Novembre 2013
  • 2. CHI SIAMO Membri e Fondatori del PUG MoRe Magento Certified Developers Colleghi in @webgriffe
  • 3. PERCHÉ E COME È NATO PROBLEMA Propagare modifiche in Admin Panel su diversi ambienti SOLUZIONI POSSIBILI A mano: time consuming, error prone, costoso Upgrade Script: time consuming, e conflitti su feature branch DB centralizzato: no offline, concorrenza spietata Selenium: selettori da correggere e non cross-platform MageFlow (?): "MageFlow Beta is launching in December" Mageploy: niente codice, distribuito, time-saving
  • 4.
  • 6. COME FUNZIONA STATUS E RUN (GIT PULL SU ALTRO AMBIENTE) vgatpeie2/a/w/a10$gtpl arn@rcs3:vrwwmg80 i ul rmt:Cutn ojcs 2,dn. eoe onig bet: 7 oe rmt:Cmrsigojcs 10 (/) dn. eoe opesn bet: 0% 44, oe rmt:Ttl1 (et 3,rue 1 (et 3 eoe oa 4 dla ) esd 4 dla ) Upcigojcs 10 (41) dn. nakn bet: 0% 1/4, oe Fo gtu.o:u-oedm-aea21 rm ihbcmpgmr/eomgdy03 e542.e42 mse aa9.7439 atr - oii/atr > rgnmse Udtn e542.e42 paig aa9.7439 Fs-owr atfrad vrmgpo/aelyalcv a/aelymgpo_l.s 1flscagd 1isrin() ie hne, netos+ | 1+
  • 7. COME FUNZIONA STATUS vgatpeie2/a/w/a10$ppselmgpo.h arn@rcs3:vrwwmg80 h hl/aelypp s Mgpo v119-takn i atv -ue i rbro aely .. rcig s cie sr s oet PnigAtosls: edn cin it I:1 D -Sv nwMgzio'a-0'(rnh o MnOt2 0:25 21) ae e aazn mg01 aoci n o c 8 92:6 03 Ttlpnigatos 1 oa edn cin: RUN vgatpeie2/a/w/a10$ppselmgpo.h arn@rcs3:vrwwmg80 h hl/aelypp r Mgpo v119-takn i atv -ue i rbro aely .. rcig s cie sr s oet Ato I # -scesEeet cet cnsces cin D 1 ucs lmno rao o ucso Eeue atos 11 xctd cin: /
  • 9. COME FUNZIONA PANNELLO DI ADMIN (DELETE)
  • 10. COME FUNZIONA PANNELLO DI ADMIN (COMMIT E PUSH DELLA DELETE) vgatpeie2/a/w/a10$gtsau arn@rcs3:vrwwmg80 i tts #O bac mse n rnh atr #Cagsntsae frcmi: hne o tgd o omt # # mdfe: vrmgpo/aelyalcv oiid a/aelymgpo_l.s # vgatpeie2/a/w/a10$gtcmi -m"lmnt mgzio arn@rcs3:vrwwmg80 i omt a Eiiao aazn" [atredb6 Eiiaomgzio mse de2] lmnt aazn 1fl cagd 1isrin+ ie hne, neto() vgatpeie2/a/w/a10$gtps arn@rcs3:vrwwmg80 i uh Cutn ojcs 9 dn. onig bet: , oe Dlacmrsinuigu t 2tras et opeso sn p o hed. Cmrsigojcs 10 (/) dn. opesn bet: 0% 33, oe Wiigojcs 10 (/) 40bts dn. rtn bet: 0% 55, 4 ye, oe Ttl5(et 2,rue 0(et 0 oa dla ) esd dla ) T gtgtu.o:u-oedm-aea21.i o i@ihbcmpgmr/eomgdy03gt 374f.de2 mse - mse 5db.edb6 atr > atr
  • 11. COME FUNZIONA PANNELLO DI ADMIN (RICEZIONE DELLE DELETE DA PARTE PRIMO DEV) aesnr@oasi~NtenPoet/ae80 ppselmgpo.h lsadoKwlk:/eBasrjcsmg10$ h hl/aelypp s Mgpo v119-takn i atv -ue i aoci aely .. rcig s cie sr s rnh PnigAtosls: edn cin it I:2-Dlt eitn Mgzio'a-0'(oet o MnOt2 1:12 21) D eee xsig aazn mg01 rbro n o c 8 02:0 03 Ttlpnigatos 1 oa edn cin: aesnr@oasi~NtenPoet/ae80 ppselmgpo.h lsadoKwlk:/eBasrjcsmg10$ h hl/aelypp r Mgpo v119-takn i atv -ue i aoci aely .. rcig s cie sr s rnh Ato I # -scesEeet cnelt cnsces cin D 2 ucs lmno aclao o ucso Eeue atos 11 xctd cin: /
  • 12. COME È SVILUPPATO THE MAGENTO WAY Request Funnel: registra le invocazioni alle Action a cui è associato un Tracker Tracker: implementa encoding e decoding dei parametri delle Action convertendo gli ID specifici di ogni ambiente in UUID UUID (Universally Unique Identifier): identifica univocamente le entità secondo una logica specifica; implementazione potenzialmente complessa che può richiedere vincoli Config: un modulo può aggiungere i propri Tracker dichiarandoli nel config.xml
  • 14. COME È SVILUPPATO DICHIARAZIONE DI UN TRACKER NEL CONFIG.XML <ofg cni> .. . <eal> dfut .. . <aely mgpo> <cin> atos <eomgdy03 dm_aea21> <iald0/iald dsbe><dsbe> <ls>eoMgdy03MdlMgpo_cinMgzii/ls> casDm_aea21_oe_aelyAto_aazn<cas <dm_aea21> /eomgdy03 <atos /cin> <mgpo> /aely .. . <dfut /eal> .. . <cni> /ofg
  • 15. COME È SVILUPPATO LA CLASSE CHE IMPLEMENTA IL TRACKER Estende PgoeMgpo_oe_cinAsrc uMR_aelyMdlAto_btat Implementazione minima per registrare le informazioni utili nel log utilizzando la funzione m t h )della classe ac( base <pp ?h casDm_aea21_oe_aelyAto_aazn ls eoMgdy03MdlMgpo_cinMgzii etnsPgoeMgpo_oe_cinAsrc xed uMR_aelyMdlAto_btat { cntVRIN='' os ESO 1; poetd$cd ='eomgdy3mgzii; rtce _oe dm_aea1_aazn' poetd$bakbeaas=ary'e' 'omky) rtce _lnalPrm ra(ky, fr_e'; } poetdfnto _eVrin){ rtce ucin gteso( rtr eun Mg:hle(pgoemgpo'-gteso()''sl:VRIN ae:epr'umr_aely)>eVrin2...ef:ESO; }
  • 16. COME È SVILUPPATO LA FUNZIONE MATCH() DELLA CLASSE BASE <pp ?h pbi fnto mth){ ulc ucin ac( $ =Mg:hle(pgoemgpo'; h ae:epr'umr_aely) $-lg"ouenm:%" $hs>rqet>eMdlNm() h>o(Mdl ae s, ti-_eus-gtoueae); $-lg"otolrnm:%" $hs>rqet>eCnrleNm() h>o(Cnrle ae s, ti-_eus-gtotolrae); $-lg"cinnm:%" $hs>rqet>eAtoNm() h>o(Ato ae s, ti-_eus-gtcinae); $-lg"eus Prmtr:%" pitr$hs>rqet>ePrm(,tu); h>o(Rqet aaees s, rn_(ti-_eus-gtaas) re) rtr fle eun as; }
  • 17. COME È SVILUPPATO INFORMAZIONI NEL LOG DOPO UNA SAVE ACTION NEW DELETE 21-02T84:70:0DBG() 031-80:42+00 EU 7: Mdl nm:dma21 oue ae emg03 21-02T84:70:0DBG() 031-80:42+00 EU 7: Cnrle nm:amntlmgzi otolr ae dihm_aaz n i 21-02T84:70:0DBG() 031-80:42+00 EU 7: Ato nm:sv cin ae ae 21-02T84:70:0DBG() 031-80:42+00 EU 7: ( RqetPrmtr:Ary eus aaees ra 2E / ) [e]= 1a1e6.595b4a ky > d237..11804 [omky = v1o5h58O fr_e] > 1MzRXU43 [oie = mg01 cdc] > a-0 [oe = MCne nm] > Betr [ain]= I nzoe > T [it]= Mdn cta > oea [a]= 410 cp > 10 [niiz]= vaeVrii,5 idrzo > il iglo [mi]= mg0@oegupog eal > a01mr.rs.r 21-02T90:80:0DBG() 031-80:02+00 EU 7: Mdl nm:dma21 oue ae emg03 21-02T90:80:0DBG() 031-80:02+00 EU 7: Cnrle nm:amntlmgzi otolr ae dihm_aaz n i 21-02T90:80:0DBG() 031-80:02+00 EU 7: Ato nm:dlt cin ae eee 21-02T90:80:0DBG() 031-80:02+00 EU 7: RqetPrmtr:Ary eus aaees ra ( [d = 1 i] > [e]= f690.2c3a ky > 617..3e06 )
  • 18. COME È SVILUPPATO CLASSE COMPLETA PER IL TRACKING DEI MAGAZZINI s Gtu u iHb
  • 19. <pp ?h casDm_aea21_oe_aelyAto_aazn etnsPgoeMgpo_oe_ ls eoMgdy03MdlMgpo_cinMgzii xed uMR_aelyMdl { cntVRIN='' os ESO 1; poetd$cd ='eomgdy3mgzii; rtce _oe dm_aea1_aazn' poetd$bakbeaas=ary'e' 'omky) rtce _lnalPrm ra(ky, fr_e'; poetdfnto _eVrin) rtce ucin gteso( { rtr Mg:hle(pgoemgpo'-gteso().''.sl:VRIN eun ae:epr'umr_aely)>eVrin2 . ef:ESO; } pbi fnto mth) ulc ucin ac( { i ($hs>rqet { f !ti-_eus) rtr fle eun as; } i (ti-_eus-gtoueae)= 'emg03){ f $hs>rqet>eMdlNm( = dma21' i (ti-_eus-gtotolrae)= 'dihm_aazn' { f $hs>rqet>eCnrleNm( = amntlmgzii) i (nary$hs>rqet>eAtoNm(,ary'ae,'eee f i_ra(ti-_eus-gtcinae) ra(sv' dlt' rtr tu; eun re } } } } rtr fle eun as; pbi fnto ecd( ulc ucin noe) {
  • 20. COME È SVILUPPATO RISULTATO DEL TRACKING (CSV) cl:18927 o1 32516 cl:aoci o2 rnh cl:Sv nwMgzio'a-0' o3 ae e aazn mg01 cl:Dm_aea21_oe_aelyAto_aazn o4 eoMgdy03MdlMgpo_cinMgzii cl:Dm_aea21 o5 eoMgdy03 cl:amntlmgzii o6 dihm_aazn cl:sv o7 ae cl:oOtOYINZlZIc.t3lmyXwmyy7Q= o8 3nzj6mvGjS7..bJLddNL9ZIf= cl:111 o9 ..
  • 21. CONFLITTI Scenario: due programmatori hanno creato un magazzino con lo stesso codice. Il primo ha già fatto commit e push. Il secondo si ritrova nello stato seguente: aesnr@oasi~NtenPoet/ae80 gtpl lsadoKwlk:/eBasrjcsmg10$ i ul rmt:Cutn ojcs 9 dn. eoe onig bet: , oe rmt:Cmrsigojcs 10 (/) dn. eoe opesn bet: 0% 11, oe rmt:Ttl5(et 2,rue 5(et 2 eoe oa dla ) esd dla ) Upcigojcs 10 (/) dn. nakn bet: 0% 55, oe Fo gtu.o:u-oedm-aea21 rm ihbcmpgmr/eomgdy03 4809.8d1 mse 639.57ab atr - oii/atr > rgnmse At-egn vrmgpo/aelyalcv uomrig a/aelymgpo_l.s CNLC (otn) Mrecnlc i vrmgpo/aelyalcv OFIT cnet: eg ofit n a/aelymgpo_l.s Atmtcmrefie;fxcnlcsadte cmi tersl. uoai eg ald i ofit n hn omt h eut
  • 22. CONFLITTI Cosa troveremo nel m g p o _ l . s ? aelyalcv <<<<HA <<< ED 18963,rnh,Sv nwMgzio'a-0',eoMgdy03MdlMgpo_ci 32550aoci"ae e aazn mg01"Dm_aea21_oe_aelyAt ==== === 18964,oet,Sv nwMgzio'a-0',eoMgdy03MdlMgpo_ci 32516rbro"ae e aazn mg01"Dm_aea21_oe_aelyAt >>>>57ab2237408f845fec5f >>> 8d11291323e35372160c Come si risolve? Parlandosi :-) Un conflitto di questo tipo è il risultato di una mancata comunicazione; va risolto scegliendo l'azione da mantenere o eliminando entrambe e registrandone una nuova.
  • 23. CONCLUSIONI AS-IS Attribute Tracker Category Tracker CMS Tracker Store System Config (sperimentale) TO BE Più Tracker possibili Controllo dei vincoli Test automatici
  • 25. GRAZIE! RIMANIAMO IN CONTATTO... Mageploy: mageploy.com Twitter: @aleron75 - @pug_more GitHub: github.com/aleron75 - github.com/pugmore Blog: www.magentocommunity.it PUG MoRe: http://more.grusp.org Magento Italia on G+