`composer install` para implementaciones de producción

Tenemos una aplicación de misión crítica que se implementa en ~ 200 instancias de EC2 usando Chef

Nuestro directory de proveedores actualmente es ignorado por GIT, pero hemos comprometido dependencies importantes en GIT en otros lugares y los estamos cargando automáticamente. Nuestro plan es migrar al método más convencional de instalar todo a través de Composer dentro de / vendor y usar el autocargador del compositor.

Mi pregunta es: cuando lanzamos / deployments masivos (más de 200 serveres simultáneamente), el código se extrae de GIT en un nuevo directory de versiones en el server y, por lo tanto, tendremos que ejecutar nuestra installation de compositor. ¿Hay alguna técnica para "boost" la confiabilidad de la installation del compositor? o no hay realmente nada de qué preocuparse Dada nuestra cantidad de serveres, incluso una tasa de falla del 1% significa que el cliente tiene una interrupción.

Tenemos otra aplicación que desencadena la installation del compositor en cada implementación y al less durante 24 horas no pudimos implementar porque una de las dependencies estaba "inactiva" o movida. ¿Cuáles son algunas forms de eludir este problema, al time que evitamos comprometer nuestras dependencies con nuestro GIT principal?

¡Gracias!

¿Hay alguna técnica para "boost" la confiabilidad de la installation del compositor?

¿Cuáles son algunas forms de eludir este problema, al time que evitamos comprometer nuestras dependencies con nuestro GIT principal?

Mis sugerencias:

  • no ejecute Composer en producción
  • comstack y empaqueta tu aplicación para implementación
  • ejecutar la composer install y search las dependencies es un paso de compilation
  • El producto final de la cadena de herramientas de compilation es una aplicación empaquetada que incluye dependencies de proveedores y carga automática, list para la implementación
  • luego deployment su software v1.2.3 a x cantidad de instancias

(Nota: el autocargador Composer genera files reubicables. La ruta es dinámica y no está vinculada a un directory específico. Esto permite descomprimir una aplicación empaquetada con las dependencies del proveedor recuperadas y la carga automática generada en cualquier carpeta).

Implementamos Jenkins para clonar nuestro GIT, ejecutar la installation del compositor para producción, ejecutar algunas secuencias de commands de shell para ayudar a empaquetar cosas, y generamos un file .tar.gz y publicamos el file en un depósito de construcciones en AWS S3 (nombres de file basados ​​en una twig siendo construido). Ajustamos nuestro sistema de implementación para recuperar desde el segmento S3 (que tiene permissions muy restringidos para proteger el acceso al código)