Come ottenere la massima efficienza con Magento 2. Intervista a Max Pronko
Pubblicato: 2017-01-17Max Pronko è uno di quei guru Magento che un principiante deve seguire. È un esperto di Magento e oratore pubblico, uno sviluppatore certificato Magento e un popolare blogger di Magento 2.
Con 10 anni di esperienza nello sviluppo di software e nella consulenza in Magento, Max ha progettato e implementato con successo prodotti di alta qualità su scala medio-grande.
Segui Max su Twitter.
Recentemente Max è stato a Meet Magento Ungheria e ha presentato casi d'uso reali di ottimizzazione delle prestazioni nel keynote di Magento 2. A questo proposito, vorremmo iniziare la nostra intervista con un paio di domande che riguardano direttamente questa presentazione.
Parte 1: Sfide comuni delle estensioni Magento
Quasi tutti i commercianti Magento 2 utilizzano estensioni 3D party che da un lato migliorano notevolmente la funzionalità delle piattaforme predefinite, ma dall'altro influenzano negativamente il flusso di lavoro delle prestazioni.
Natalie: Nel complesso, come puoi valutare la qualità del codice delle estensioni di terze parti e il modo in cui possono influenzare i carichi del server?
Max: Grazie per l'opportunità di parlare di Magento 2, Natalie. Seguo il tuo blog da più di un anno e ogni volta che lo visito trovo degli articoli interessanti. Grazie per questo.
Come forse saprai, mi piace rivedere il codice per il numero di motivi:
- In primo luogo, acquisisco esperienza e osservo tecniche interessanti su come convertire i requisiti aziendali in funzionalità completamente funzionali e di alta qualità. Soprattutto quando si tratta di Magento 2.
- In secondo luogo, mi aiuta a capire quanto sia buona la condivisione delle conoscenze nell'ecosistema Magento.
Il 95% delle estensioni di terze parti richiede una revisione approfondita del codice e una guida per migliorarlo.
Per ora ho eseguito la revisione del codice delle estensioni di terze parti per circa 2 anni. Sfortunatamente, non posso dire di essere soddisfatto dei risultati che ho ottenuto: il 95% delle estensioni di terze parti richiede una revisione approfondita del codice e una guida per migliorarlo. Lasciami essere super silenzioso sugli standard di codifica.
Riscontro problemi con le prestazioni di tutte le pagine del sito Web anche se un'estensione crea e copre solo una selezione di pagine con alcune funzionalità specifiche. Ad esempio, includendo un blocco non memorizzabile nella cache nel file di configurazione del layout predefinito. Magento disabilita automaticamente la cache delle pagine per tutte le pagine.
Un altro esempio è l'utilizzo di operazioni di back-end che richiedono tempo senza memorizzare i risultati dell'esecuzione in una variabile di classe. Potrebbe ridurre drasticamente il caricamento della prima pagina.
Ho avuto la possibilità di recensire circa 60 estensioni comprese quelle a pagamento e gratuite, quindi la mia valutazione si basa su questo numero. Di sicuro, ci sono le estensioni che posso consigliare di utilizzare.
Natalie: Secondo te, quali sono i problemi di ottimizzazione del codice più frequenti?
Non ho mai visto l'utilizzo di classi proxy nelle estensioni di terze parti. Tuttavia, può ridurre il tempo di inizializzazione ricorsiva dell'oggetto.
Max: di solito le estensioni vengono create in un round senza ottimizzazione delle prestazioni che posso chiamare "Implement and Deliver". Raramente arriva un secondo round e il codice non viene ottimizzato. Ad esempio, non ho mai visto l'utilizzo di classi proxy in estensioni di terze parti . Tuttavia, può ridurre il tempo di inizializzazione ricorsiva dell'oggetto.
Natalie: Che consiglio di ottimizzazione puoi dare a quegli sviluppatori alle prime armi, che scrivono le loro prime estensioni per Magento 2?
Max: è un'ottima idea testare le tue estensioni con Magento 2 al di fuori dell'ambiente locale, preferibilmente da qualche parte nel cloud. Al giorno d'oggi, non è costoso avere un server virtuale da DigitalOcean o AWS per $ 5-10 ed eseguire un test utente end-to-end di base . Almeno, potrebbe mostrare differenze di prestazioni piuttosto buone rispetto alle versioni predefinite di Magento 2.x.
Parte 2: Ottimizzazione delle prestazioni M2
Natalie: Cosa puoi dire sulle peculiarità della cache dei blocchi (cosa è meglio usare/evitare nelle chiavi della cache)?
Max: Magento 2 Community Edition viene fornito con il supporto del server proxy Varnish. È ottimo per tutti i commercianti che non si preoccupano dei visitatori per la prima volta quando la cache non è pronta. Block cache entra in gioco per le pagine che non sono archiviate in Varnish. Potresti non aspettarti vernice su pagine come Account cliente, Ricerca catalogo, Carrello.
La corretta chiave della cache per blocco è molto importante per creare voci di cache corrette e aumentare gli hit della cache in uno storage di back-end come Redis. Idealmente, tutte le entità coinvolte nel rendering front-end dovrebbero implementare l'interfaccia Magento\Framework\DataObject\IdentityInterface fornita con il metodo getIdentities() . Questo metodo è molto utile se è necessario compilare le chiavi della cache appropriate per la cache dei blocchi.
Natalie: Qualcosa sull'ottimizzazione delle query SQL?
Max: per l'ottimizzazione SQL di solito provo a elencare tutte le possibili variazioni di dati selezionate da una tabella. Idealmente, tutte le query dovrebbero raggiungere gli indici MySQL per prestazioni migliori. So che è un caso ideale, tuttavia, può davvero aiutare ad accelerare le query su un gran numero di record in una tabella. Naturalmente, l'ottimizzazione delle query SQL è un argomento enorme, quindi posso parlarne per ore.
Parte 3: Magento 2 Cerca
Magento 2 può vantare di avere una ricerca immediata migliore rispetto a M1, ma le query composte, gli errori di battitura, la correzione automatica, i sinonimi non sono supportati. Inoltre, la ricerca M2 non esegue la scansione di categorie e pagine CMS.
Natalie: Quali sono i modi migliori per migliorare la ricerca nell'edizione CE: estensioni o motori di ricerca esterni?
Max: prendo in considerazione l'utilizzo di Elasticsearch per Magento 2 Community Edition. Ovviamente, richiede uno sviluppo interno o tramite estensioni di terze parti. Per uno dei progetti Magento 2 abbiamo utilizzato una ricerca integrata con configurazione aggiuntiva come sinonimi e reindirizzamenti a una pagina di destinazione per query di ricerca comuni. Tuttavia, questa è una soluzione a breve termine, andrei con un servizio esterno.
Natalie: Parlando di motori di ricerca esterni, qual è il migliore per i siti Web di piccoli/medi/grandi dati: Solr, Sphinx o Elasticsearch (o qualche altro)?
Max: Per i piccoli siti web, prenderei in considerazione la ricerca Magento 2 predefinita. Per altri, si tratta più di quanto siano buone l'estensione e la documentazione nel caso in cui desideri creare la tua soluzione. Elasticsearch è la mia opzione preferita.
Natalie: Puoi consigliare estensioni di ricerca che possono migliorare la funzionalità predefinita?
Max: ho esperienza per rivedere il modulo di completamento automatico per Magento 2 realizzato da MageWorx. Migliora significativamente l'esperienza dell'utente rispetto alla funzionalità di suggerimento automatico di Magento 2 Community Edition predefinita. Il modulo MageWorx AutoComplete guiderà più conversioni e vendite per un commerciante. Per quanto riguarda l'implementazione del codice, il mio punteggio è 4,5 su 5. Ci sono alcuni piccoli miglioramenti che potrebbero essere apportati per aumentare l'esperienza complessiva dello sviluppatore. Una delle cose belle del modulo di completamento automatico è il fatto che è scaricabile gratuitamente. Prenderò in considerazione l'utilizzo e la raccomandazione di questo modulo per Magento 2 Merchants.
A parte questo, continuerò a rivedere i moduli relativi alla ricerca per Magento 2 e fornirò il mio feedback sulla qualità del codice.
Parte 4: Sfide di Magento 2
Natalie: Sei uno sviluppatore Magento testato in battaglia, dopo anni di lavoro con Magento, quali sono i problemi più impegnativi portati dalla seconda versione della piattaforma?
Ad esempio, come so, anche lievi modifiche al codice in M2 portano a una serie di azioni (come bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile, ecc. )
Max: Penso che nella maggior parte dei casi quando uno sviluppatore si siede di fronte a PHPStorm e scrive un codice non ci sia tempo per scavare davvero nell'architettura di Magento 2. Ad esempio, conosco un paio di bravi sviluppatori che si lamentano dei componenti dell'interfaccia utente e della mancanza di esempi reali sul loro utilizzo. I nuovi Magento DevDocs offrono una buona panoramica dei componenti dell'interfaccia utente.
Gli sviluppatori con una buona esperienza in Magento 1 trovano Magento 2 complesso e talvolta impegnativo. La nuova tecnologia offre sempre nuove opportunità per imparare qualcosa di nuovo.
C'è anche una foto a riguardo.
Natalie: E infine, Magento 2 è stato rilasciato a novembre 2015. Pensi che sia completamente pronto per i commercianti di tutto il mondo per iniziare a migrare?
Max: Assolutamente SI. Magento 2, come software, ha più vantaggi di un certo numero di problemi aperti su GitHub. Ovviamente può portare più entrate rispetto a Magento 1 in caso di migrazione e strategia di marketing ben pianificate. Ricordo di aver detto "Sì" a uno dei nostri progetti Magento 2 nell'agosto 2015 quando era solo una versione beta. Ora siamo più che felici di utilizzare e creare siti Web di eCommerce basati su Magento 2.
Il mio team di Pronko Consulting sarà felice di dare vita a una nuova visione e lanciare un nuovo sito Web Magento 2.
*****
Vogliamo ringraziare Max per questa intervista e augurare a lui e al suo team un anno produttivo e di successo.