Creando y actualizando proyectos de Symfony mucho más rápido

Hace unos años, publicamos el Symfony Installer para crear proyectos Symfony mucho más rápido. Mientras que Composer podía tardar hasta varios minutos en crear un nuevo proyecto, el instalador de Symfony tardaba menos de 10 segundos.

El truco estaba en que el instalador descargaba un archivo ZIP con todas las dependencias de la versión de Symfony que estabas instalando. Así no hacía falta que Composer resolviera todas las dependencias del proyecto, que es lo que más tiempo tarda.

Sin embargo, con el lanzamiento de Symfony 4 decidimos abandonar el instalador de Symfony y volver a Composer. El motivo es que queríamos utilizar tantas herramientas estándar como fuera posible y Composer lo es. Lo malo es que crear proyectos Symfony es mucho más lento ahora e incluso a veces puedes sufrir errores de tipo "out of memory".

Mejorando el rendimiento de la instalación via Composer

Durante los últimos meses hemos trabajado intensamente en la mejora del rendimiento de Symfony Flex que es el paquete responsable de crear y gestionar proyectos Symfony. Hace unos días, hemos hecho unas mejoras increíbles:

  1. Los dos "skeletons" usados para crear proyectos, symfony/skeleton (para aplicaciones pequeñas, APIs, microservicios, etc.) y symfony/website-skeleton (para aplicaciones web tradicionales) ahora incluyen un archivo composer.lock para evitar la resolución de dependencias de Composer (más detalles: symfony/skeleton #66 y symfony/web-skeleton #11). Un proceso automático actualiza esos archivos composer.lock siempre que una dependencia publica una nueva version.
  2. Symfony Flex ahora elimina todas las etiquetas de Composer obsoletas en todos los componentes de Symfony antes de crear el proyecto. Esto hace que desaparezcan cientos de versiones (obsoletas) de las dependencias del proyecto y así se evitan cientos de miles de operaciones innecesarias en Composer.

Pruebas de rendimiento

Gracias a estos cambios, crear proyectos Symfony nuevos es entre un 60% y un 90% más rápido y actualizar proyectos existentes es hasta un 50% más rápido. Estas cifras pueden variar en tu caso dependiento de la caché de Composer, el tamaño de tu proyecto y la velocidad de tu conexión a Internet.

Crear nuevos proyectos

$ composer create-project symfony/skeleton mi_proyecto
  # ANTES:    25 segundos / 395 MB
  # DESPUES:  10 segundos / 142 MB
 
$ composer create-project symfony/website-skeleton mi_proyecto
  # ANTES:    3 minutos 32 segundos / 766 MB
  # DESPUES:            21 segundos / 144 MB

Actualizar proyectos existentes

$ composer update
  # ANTES:    1 minuto 10 segundos / 346 MB
  # DESPUES:           33 segundos / 188 MB

Fuente: Creating and updating Symfony projects much faster

Comentarios

Publicada el

13 de julio de 2018

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.