Cómo obtener la máxima eficiencia con Magento 2. Entrevista con Max Pronko
Publicado: 2017-01-17Max Pronko es uno de esos gurús de Magento que un novato debe seguir. Es experto en Magento y orador público, desarrollador certificado de Magento y un popular bloguero de Magento 2.
Con 10 años de experiencia en consultoría y desarrollo de software en Magento, Max ha diseñado e implementado con éxito productos de alta calidad de mediana a gran escala.
Sigue a Max en Twitter.
Recientemente, Max estuvo en Meet Magento Hungría y presentó casos de uso reales de optimización del rendimiento en el discurso de apertura de Magento 2. En este sentido, nos gustaría comenzar nuestra entrevista con un par de preguntas que se relacionan directamente con esta presentación.
Parte 1: Desafíos comunes de las extensiones de Magento
Casi todos los comerciantes de Magento 2 utilizan extensiones de terceros que, por un lado, mejoran en gran medida la funcionalidad de las plataformas predeterminadas, pero, por otro, influyen negativamente en el flujo de trabajo de rendimiento.
Natalie: En general, ¿cómo puede calificar la calidad del código de las extensiones de terceros y la forma en que pueden influir en las cargas del servidor?
Max: Gracias por la oportunidad de hablar sobre Magento 2, Natalie. Llevo más de un año siguiendo tu blog y cada vez que lo visito encuentro algunos artículos interesantes. Gracias por esto.
Como sabrás, me gusta revisar el código debido a varias razones:
- En primer lugar, adquiero experiencia y observo técnicas interesantes sobre cómo convertir los requisitos comerciales en funciones completamente funcionales y de alta calidad. Especialmente cuando se trata de Magento 2.
- En segundo lugar, me ayuda a comprender lo bueno que es compartir conocimientos en el ecosistema de Magento.
El 95 % de las extensiones de terceros requieren una revisión exhaustiva del código y orientación para mejorar el código.
He estado revisando el código de extensiones de terceros durante aproximadamente 2 años. Desafortunadamente, no puedo decir que estoy satisfecho con los resultados que obtuve: el 95 % de las extensiones de terceros requieren una revisión exhaustiva del código y orientación para mejorarlo. Permítanme ser súper silencioso sobre los estándares de codificación.
Tengo problemas con el rendimiento de todas las páginas del sitio web, incluso si una extensión crea y cubre solo una selección de páginas con alguna funcionalidad específica. Por ejemplo, incluir un bloque no almacenable en caché en el archivo de configuración de diseño predeterminado. Magento desactiva el caché de página automáticamente para todas las páginas.
Otro ejemplo es el uso de operaciones de back-end que consumen mucho tiempo sin almacenar los resultados de la ejecución en una variable de clase. Puede reducir drásticamente la carga de la primera página.
Tuve la oportunidad de revisar alrededor de 60 extensiones, incluidas las pagas y las gratuitas, por lo que mi calificación se basa en este número. Por supuesto, hay extensiones que puedo recomendar usar.
Natalie: ¿Cuáles son, en su opinión, los problemas de optimización de código más frecuentes?
Nunca he visto el uso de clases Proxy en extensiones de terceros. Sin embargo, puede reducir el tiempo de inicialización recursiva del objeto.
Max: por lo general, las extensiones se crean en una ronda sin optimización del rendimiento, lo que puedo llamar "Implementar y entregar". Rara vez llega una segunda ronda y el código no se optimiza. Por ejemplo, nunca he visto el uso de clases Proxy en extensiones de terceros . Sin embargo, puede reducir el tiempo de inicialización recursiva del objeto.
Natalie: ¿Qué consejo de optimización puede dar a los desarrolladores novatos que escriben sus primeras extensiones para Magento 2?
Max: Es una gran idea probar sus extensiones con Magento 2 fuera del entorno local, preferiblemente en algún lugar de la nube. Hoy en día, no es costoso tener un servidor virtual de DigitalOcean o AWS por $ 5-10 y ejecutar una prueba de usuario básica de extremo a extremo . Al menos, puede mostrar diferencias de rendimiento bastante buenas en comparación con las versiones Magento 2.x listas para usar.
Parte 2: Optimización del rendimiento de M2
Natalie: ¿Qué puedes decir sobre las peculiaridades de la caché de bloques (qué es mejor usar/evitar en las claves de caché)?
Max: Magento 2 Community Edition viene con soporte de servidor proxy Varnish. Es excelente para todos los comerciantes que no se preocupan por los visitantes primerizos cuando el caché no está listo. El caché de bloques entra en juego para las páginas que no están almacenadas en Varnish. Es posible que no espere Varnish en páginas como Cuenta de cliente, Búsqueda de catálogo, Carrito de compras.
La clave de caché adecuada por bloque es muy importante para crear entradas de caché adecuadas y aumentar las coincidencias de caché en un almacenamiento de back-end como Redis. Idealmente, todas las entidades involucradas en la representación frontal deberían implementar la interfaz Magento\Framework\DataObject\IdentityInterface que viene con el método getIdentities() . Este método es muy útil si necesita compilar claves de caché adecuadas para el caché de bloques.
Natalie: ¿Algo sobre la optimización de consultas SQL?
Max: Para la optimización de SQL, generalmente trato de enumerar todas las posibles variaciones de datos seleccionadas de una tabla. Idealmente, todas las consultas deberían llegar a los índices de MySQL para un mejor rendimiento. Sé que es un caso ideal, sin embargo, realmente puede ayudar a acelerar las consultas en una gran cantidad de registros en una tabla. Por supuesto, la optimización de consultas SQL es un tema muy amplio, por lo que puedo hablar de ello durante horas.
Parte 3: Búsqueda de Magento 2
Magento 2 puede presumir de tener una mejor búsqueda lista para usar que M1, pero aún no admite consultas compuestas, errores tipográficos, autocorrección, sinónimos. Además, la búsqueda M2 no analiza categorías ni páginas CMS.
Natalie: ¿Cuáles son las mejores formas de mejorar la búsqueda en la edición CE: extensiones o motores de búsqueda externos?
Max: Considero usar Elasticsearch para Magento 2 Community Edition. Por supuesto, requiere desarrollo, ya sea interno o utilizando extensiones de terceros. Para uno de los proyectos de Magento 2, usamos una búsqueda integrada con configuración adicional, como sinónimos y redireccionamientos a una página de destino para consultas de búsqueda comunes. Sin embargo, esta es una solución a corto plazo, iría con algún servicio externo.
Natalie: Hablando de motores de búsqueda externos, ¿cuál es mejor para sitios web de datos pequeños/medianos/grandes: Solr, Sphinx o Elasticsearch (o algún otro)?
Max: Para sitios web pequeños, consideraría la búsqueda predeterminada de Magento 2. Para otros, se trata más de qué tan buena es la extensión y la documentación en caso de que desee crear su propia solución. Elasticsearch viene como mi opción preferida.
Natalie: ¿Puede recomendar extensiones de búsqueda que puedan mejorar la funcionalidad predeterminada?
Max: tengo experiencia para revisar el módulo Autocompletar para Magento 2 creado por MageWorx. Mejora significativamente la experiencia del usuario en comparación con la función de sugerencia automática predeterminada de Magento 2 Community Edition. El módulo Autocompletar de MageWorx generará más conversiones y ventas para un comerciante. Con respecto a la implementación del código, mi puntaje es 4.5 de 5. Hay algunas mejoras menores que se podrían realizar para aumentar la experiencia general del desarrollador. Una de las cosas buenas del módulo Autocompletar es el hecho de que se puede descargar gratis. Consideraré usar y recomendar este módulo para Magento 2 Merchants.
Aparte de eso, continuaré revisando los módulos relacionados con la búsqueda para Magento 2 y brindaré mis comentarios sobre la calidad del código.
Parte 4: Desafíos de Magento 2
Natalie: Usted es un desarrollador de Magento probado en batalla, después de años de trabajar con Magento, ¿cuáles son los problemas más desafiantes que trae la segunda versión de la plataforma?
Por ejemplo, como sé, incluso cambios leves en el código en M2 conducen a una serie de acciones (como configuración de bin/magento: actualización, configuración de bin/magento: contenido estático: implementación, configuración de bin/magento: di: compilación, etc. )
Max: Creo que en la mayoría de los casos, cuando un desarrollador se sienta frente a PHPStorm y escribe un código, no hay tiempo para profundizar realmente en la arquitectura de Magento 2. Por ejemplo, conozco un par de buenos desarrolladores que se quejan de los componentes de la interfaz de usuario y de la falta de ejemplos reales sobre su uso. Los nuevos DevDocs de Magento brindan una buena descripción general de los componentes de la interfaz de usuario.
Los desarrolladores con buena experiencia en Magento 1 encuentran que Magento 2 es complejo y, a veces, desafiante. La nueva tecnología siempre trae nuevas oportunidades para aprender algo nuevo.
Incluso hay una foto al respecto.
Natalie: Y finalmente, Magento 2 se lanzó en noviembre de 2015. ¿Cree que está completamente listo para que los comerciantes de todo el mundo comiencen a migrar?
Max: Absolutamente SÍ. Magento 2, como software, tiene más beneficios que algunos problemas abiertos en GitHub. Obviamente, puede generar más ingresos en comparación con Magento 1 en el caso de una estrategia de marketing y migración bien planificada. Recuerdo que dije 'Sí' a uno de nuestros proyectos de Magento 2 en agosto de 2015 cuando solo era una versión Beta. Ahora estamos más que felices de usar y crear sitios web de comercio electrónico basados en Magento 2.
Mi equipo en Pronko Consulting estará feliz de dar vida a una nueva visión y lanzar un nuevo sitio web de Magento 2.
*****
Queremos agradecer a Max por esta entrevista y desearle a él y a su equipo un año productivo y exitoso.