Monin

Monin Descripción

Monin Inc. es una compañía con reputación internacional que desarrolla y vende saborizantes y mezclas utilizadas en la preparación de diferentes bebidas para uso hogareño y profesional. Además, mantienen un largo catálogo de recetas para utilizar sus productos que promocionan en su sitio web.

El sitio web anterior estaba estaba basado en Magento 1 cuyo ciclo de vida y soporte estaba llegando a su fin. Nos contactaron para que tengamos a nuestro cargo la migración de una serie de módulos personalizados desde Magento 1 a la nueva versión de Magento 2. Mas de 25 módulos que contemplaban reglas de negocio específicas a su empresa que van desde la selección del método de envío, selección de la tienda y lenguaje correcto según la ubicación del cliente, modificación en los precios y generación de archivos PDF para promover sus recetas y generar imágenes específicas para Pinterest, para mencionar algunas de las características de estos módulos, fueron traducidos teniendo como base los requerimientos indicados por la compañía y el código del módulo original dejandolo funcional con la nueva estructura de Magneto 2.

El mayor desafío del proyecto era mantener no solo las reglas de negocio intactas, sino que debíamos incluso mejorar la performance de cada uno de los módulos. Para esto, también utilizamos una gran cantidad de herramientas que nos permitieron identificar cuellos de botella, depurar errores y optimizar cada pieza de código de una forma organizada y controlada. 

Dado que estos módulos van a ser utilizados de manera selectiva por cada tienda según la región, los módulos fueron creados cada uno de forma independiente, en un repositorio diferente permitiendo así la instalación mediante composer y packagist dependiendo de cada necesidad. Utilizando la herramienta de composer pudimos definir las dependencias internas entre módulos y utilizando Packagist pudimos lograr la utilización sin configuración extra para los desarrolladores y el sistema base sin mayor complicación. Además, cada modulo fue probado en un sistema Magento 2 base sin modificaciones y luego con todos los demás módulos para validar que funcionan correctamente con las capacidades de fábrica de Magento 2 y que no haya colisiones entre sí. Durante este proceso integramos la herramienta de validación de código que viene incluída con Magento para validar que el código publicado cumpla con los estándares de Magento y aprovechando la suite de testing automatizado de Magento se hicieron test automatizados de integración y pruebas unitarias para algunos módulos utilizando PHPUnit y Codeception. Como los repositorios estaban alojados en GitLab, integramos la validación de código y testing con su sistema de integración continua (CI) para validar la calidad en cada liberación de cada módulo de manera automática.

Una vez que validamos que los módulos funcionan correctamente, la nueva plantilla para el sitio fue solicitada para migrar a Magento 2 cumpliendo con sus estándares e incluyendo los cambios solicitados por el equipo de marketing. Esto incluyó integrar dentro del sitio un sistema Wordpress completo que mediante la ayuda de una extensión de terceros, permite renderizar el contenido alojado en Wordpress como si fuera una página nativa de Magento. Como parte de la aplicación del diseño, se crearon más de 4 formas diferentes de mostrar el contenido de las categorías dependiendo de la categoría que pertenecía y si correspondía a un producto o una receta. Como las recetas publicadas en el sitio tienen su propia forma de mostrar el contenido, se integró la visual de este módulo que se encarga de mostrar los contenidos sincronizados desde una Rest API externa al sitio que permite relacionar sus recetas y productos en una misma vista incluyendo videos promocionales.

Para manejar el desarrollo de los módulos y diferentes base de datos se utilizó Lando, un envoltorio de docker-compose que permite configurar en un solo archivo todas las dependencias, versiones y comandos necesarios para el proyecto evitando tener diferente configuración entre el entorno de desarrollo y el de producción tanto en el código como en la versión de PHP, MySQL y los diferentes servicios relacionados.

Como el nuevo sitio necesita continuar trabajando con las mismos productos, recetas y contenidos que el sitio en Magneto 1, se integró la herramienta de migración de Magento y se la extendió para migrar los datos de las extensiones de terceros que no estaban incluidas permitiendo que los diferentes módulos continúen utilizando los datos sin perder la continuidad.

Para publicar el sitio se utilizó una plataforma PAAS llamada platform.sh que permite liberar el entorno completo y sus servicios relacionados cada vez que se hace un cambio de código. Esto permitió la automatización de el envío de los cambios para el sitio de manera automatizada a medida que los cambios eran probados y aprobados por el cliente a la versión final con mínimo tiempo de despliegue.

Luego del extensivo trabajo de migración desde Magento 1 a Magento 2 con la integración de los módulos y sitio de wordpress embebido continuamos haciendo cambios requeridos para los módulos ajustándose a los cambios de reglas de negocio y realizando los cambios para la optimización logrando mejorar su performance con herramientas como Blackfire.io y New Relic.

Visite el sitio en vivo:

EE.UU: https://www.monin.com/us/

Latino America: https://www.monin.com/spa/

Canada – Ingles: https://www.monin.com/ca/

Canada – Frances: https://www.monin.com/fr-ca/

Technologías

  • Magento 2 Enterprise: es la versión comercial de la aplicación e-comercio de código abierto más popular.
  • Lando es un contenedor gratuito y de código abierto para Docker, que nos permite usar contenedores acoplables con una sola configuración de archivo.
  • Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker con múltiples contenedores.
  • Packagist es el repositorio de paquetes predeterminado de Composer. Utilizamos paquetes privados.
  • Composer es un administrador de paquetes a nivel de aplicación para el lenguaje de programación PHP que proporciona un formato estándar para administrar las dependencias del software PHP y las bibliotecas requeridas.
  • Platform.sh PaaS para alojamiento de aplicaciones web, desarrollo e implementación en la nube con PHP
  • Wordpress es un sistema de gestión de contenido (CMS) gratuito que se utiliza para crear sitios web y blogs.
  • Amazon Web Services (AWS) es una plataforma segura de servicios en la nube, que ofrece potencia informática, almacenamiento de bases de datos, entrega de contenido y otras funcionalidades para ayudar a las empresas a escalar y crecer.
  • Magento WebAPI es un marco API REST proporcionado por Magento
  • Node.JS es una plataforma de desarrollo de código abierto para ejecutar código JavaScript del lado del servidor.
  • Redis es un almacén de estructura de datos en memoria de código abierto (licencia BSD), que se utiliza como agente de base de datos, caché y mensaje.
  • RabbitMQ es un software de corretaje de mensajes de código abierto (a veces llamado middleware orientado a mensajes) que originalmente implementó el Protocolo avanzado de mensajes en cola (AMQP)
  • PHP (preprocesador de hipertexto) es un lenguaje de script de uso general de código abierto ampliamente utilizado
  • MariaDB 10 es un motor de bases de datos relacionales de código abierto (DBMS) que es un reemplazo compatible compatible con la tecnología de bases de datos MySQL ampliamente utilizada.

 


Etiquetado como

Etiquetas

Serfe info(at)serfe.com https://www.serfe.com/images/serfe_logo_text.png https://www.serfe.com/images/serfe_logo_text.png FALUCHO 2032, S3016LDB, SANTO TOME, SANTA FE, ARGENTINA 1-305-5375397