La gestione di un multi-store Magento, composto da decine di store-view e dinamiche differenti, nasconde spesso gestioni complesse e tutt’altro che banali.
In molti conoscono o hanno addirittura affrontato personalmente i limiti di Magento all’aumentare del numero di prodotti gestiti, mentre sono pochi quelli che hanno potuto valutare i side-effect e l’overhead necessari per gestire una gerarchia di store così complessa all’interno della stessa installazione, sia in fatto di performance che di costi di aggiornamento.
Avere a che fare con uno store internazionale costringe inoltre a lavorare su un sistema praticamente sempre “carico” in quanto il carico di utenti e di acquisti, la cui distribuzione è concentrata in alcune ore del giorno, viene però re-distribuita lungo la giornata a causa del differente fuso orario degli store nazionali.
Alessandro Montalti prenderà in esame, a supporto dell’intervento, il caso reale riguardante la progettazione e lo sviluppo del portale Arena Water Instinct: l’eCommerce ufficiale del brand italiano di abbigliamento sportivo, che conta più di 28 store aperti nel mondo (storeview della stessa installazione di Magento) e oltre 5000 prodotti configurabili gestiti.
Verranno quindi affrontati i principali aspetti del sistema realizzato, descrivendo l’architettura sia dal punto di vista sistemistico (server NGIX, Memcache, Varnish) che dal punto di vista di sviluppo (ingegnerizzazione del codice, progettazione dei flussi dati, es. importazione prodotti, prezzi, stock…), con focus particolare sulle ottimizzazioni rese necessarie da questo contesto.
Smau Napoli 2015 - Telecom Italia Digital Solutions
Meet Magento 2015 Italy, Montalti - "Gestione di un multi-store internazionale: Il caso Arena Water Instinct"
1.
2. ALESSANDRO MONTALTI
Web Analyst & Developer
Cosmobile Srl.
@alemontalti – www.cosmobile.com
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
3. Brand & web
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
4. Brand & web: selling strategies
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
5. Crescita e-commerce: retail sales in USA e EU
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
6. Crescita e-commerce: number of online buyers
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
source: eMarketer
7. International stores: scenario iniziale
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
…
head offices e-commerce
LOGICHE
“FULLY CUSTOM”
ma difficile gestione
uniforme…
8. International stores: scenario ottimale
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
…
head offices
VANTAGGI:
UNIFORMITA’
GESTIONE
AGGIORNAMENTI
OTTIMIZZAZIONI
e-commerce
ma nella realtà…
COMPROMESSO!
9. International stores: variabili gestionali/marketing
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
• CATALOGO PRODOTTI
• INFORMAZIONI PRODOTTO
• CATEGORIZZAZIONE
• VETRINE PRODOTTI
• ecc…
Escluso ovviamente il CONTENUTO e la LINGUA di default dello store…
Possono variare:
Conseguentemente, viene modificato il LAYOUT dello store e la UX.
10. International stores: variabili burocratiche/economiche
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Tutte le informazioni dipendenti dal paese in cui si sta vendendo…
• TASSAZIONE (VAT)
• VALUTA
• PRICING
• PROMOZIONI e COUPON
• METODI PAGAMENTO
• METODI SPEDIZIONE
11. E-commerce & platforms: la scelta di Magento
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
E’ importante quindi scegliere una piattaforma modulare ed estensibile,
capace di adattarsi alle necessità presenti e future.
12. Scaling Magento
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Magento ha una politica di replicazione dei dati (overhead) per coniugare
FLESSIBILITA’ e PERFORMANCE
• Tabelle ‘flat’ in database
• Processi di indicizzazione
• Modularità e generalità
• ecc…
Impiego di grandi risorse computazionali
13. Scaling Magento
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Magento ha una politica di replicazione dei dati (overhead) per coniugare
FLESSIBILITA’ e PERFORMANCE
NUMERO DI STORE VIEW
NUMERO DI PRODOTTI
NUMERO DI CATEGORIE
NUMERO DI ATTRIBUTI E TIPO
14. Scaling Magento
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Come gestire la complessità e assicurare buone performance?
Magento cache?
Varnish?
CDN?
MySQL optimization?
APC?
Cloud services?
ANALISI e PROGETTAZIONE ad hoc!
“Non sempre la somma di buoni strumenti è una soluzione migliore.”
15. ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
ARENA WATER INSTINCT
www.arenawaterinstinct.com
16. ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
ARENA WATER INSTINCT
www.arenawaterinstinct.com
• Magento CE 1.7.0.2
• Singola installazione
• 28 store online
• 2 store catalogo (Global e USA)
• 10 000 prodotti configurabili
• 3 gerarchie di categorizzazione
indipendenti
• 30 000 pagine indicizzate dai
motori di ricerca
• 4 flussi di importazione continui
• Carico utenti praticamente
uniforme lungo la giornata
Qualche numero …
17. Arena Water Instinct: architettura di sistema
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Data Manager Gestionale Arena
Load-balancer
2 nodi VPS
12 vCore ad alta priorità
32Gb RAM dedicata
Dischi SSD su RAID10
18. Arena Water Instinct: ottimizzazioni – CDN
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Caching e replicazione geolocalizzata dei contenuti statici dello store
(immagini, video, audio, CSS, JS).
19. Arena Water Instinct: ottimizzazioni – Varnish
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Utilizzo di Varnish per staticizzare le pagine PHP e creare un primo
livello di caching molto performante.
Molto importante configurare correttamente Turpentine (plugin ufficiale
Magento) per escludere le parti della pagina che devono rimanere
dinamiche (es. carrello, wishlist, ecc…)
20. Arena Water Instinct: architettura di sistema (update)
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Load-balancer
CDN
(solo contenuti
statici)
21. Arena Water Instinct: progettazione flussi di importazione
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Una volta a regime, quali informazioni devo mantenere aggiornate? Con che scadenza?
4 flussi indipendenti di sincronizzazione tra Data Manager e Magento
1 - PRODOTTI
Aggiunta nuove collezioni
(1 update / 3 mesi circa)
Manutenzione straordinaria (variabile)
2 - PREZZI [come sopra]
3 - STOCK Real-time (quasi, ogni 5 minuti)
4 - ORDINI Real-time (quasi, ogni 5 minuti)
22. Arena Water Instinct: importazione prodotti
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Script shell in PHP, estende la classe Mage_Shell_Abstract e utilizza le API di Magento.
Sono stati sviluppati oltre 30 script per effettuare modifiche periodiche o sporadiche sul
sistema. Come per Magento, importanti flessibilità e modularità.
• Modalità di inserimento o aggiornamento prodotti
• Selezione della storeview
• Possibilità di modificare un singolo SKU
• Possibilità di modificare un singolo attributo
• Gestione o meno delle immagini prodotto
• Gestione o meno dei prezzi
• Modalità di simulazione (con log errori)
• Disabilitazione degli indici
Principali modalità di lancio:
… e molte altre ancora!
23. Arena Water Instinct: importazione prodotti
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Analisi e testing di ogni chiamata per ottimizzare le risorse:
• Alternative a $product->save()
• Disabilitazione indici
• Logging avanzato di tempistiche e dati parziali
• Utilizzo di “direct queries“
Criticità forte dal lato dell’utilizzo delle risorse: il lancio di operazioni pesanti
su un sistema in produzione può essere CRITICO, fino al crash del sistema!!!
Per Arena, un’importazione standard di 5000 prodotti con 3 immagini ciascuno
(circa) all’inizio durava fino a qualche ora, per singola storeview.
Dopo queste (ed altre) ottimizzazioni, ora circa 10 minuti!
24. Arena Water Instinct: cronjobs planning
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Fondamentale la pianificazione della manutenzione e dell’aggiornamento del
sistema… Ma quando?
Analisi del carico utenti e della computazione attuale
carico utenti (surfing user, bot, landing pages)
25. Arena Water Instinct: cronjobs planning
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Fondamentale la pianificazione della manutenzione e dell’aggiornamento del
sistema in esame.
analisi del carico utenti e della computazione attuale
Ma dopo l’apertura degli store USA (GMT-6 / GMT-10) e Australia (GMT+8 / GMT+11) ?!
giallo = idle
blu = user
Computazione server
cronjobs
26. Arena Water Instinct: sfide future
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Molte nuovi orizzonti e implementazioni:
• Nuovi stores in apertura (tra gli altri, Australia)
• Un nuovo design una nuova UX completamente studiata per
Arena
• Supporto a nuove informazioni prodotto
• Nuove logiche custom per l’importazione prodotti
• Integrazione di nuovi strumenti per monitorare e fare analisi di
marketing granulari
…sicuramente molto altro (che sapremo solo la settimana prima della release)!
27. Ringraziamo per il supporto
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
Partner sistemistica e housingStaff tecnico
28. GRAZIE PER L‘ATTENZIONE
ALESSANDRO MONTALTI Gestione di un multi-store internazionale … : il caso Arena Water Instinct
Meet Magento Italy Milano, 6-7 Marzo 2015 @alemontalti #mm15it
DOMANDE? COMMENTI?
a.montalti@cosmobile.com @alemontalti www.cosmobile.com