¿Cómo maneja los parches / actualizaciones de PHP y Frameworks?

Grandes discusiones en el momento en nuestra empresa. Cómo manejar actualizaciones a PHP y PHP usado (Zend Framework) / JavaScript Frameworks como JQuery y Dojo.

¿Parcha todas las versiones de php? ¿Implementa todas las actualizaciones de Framework en los servidores de producción? Creo que se necesita una gran cantidad de tiempo para probar todas las dependencias. ¿O es la mejor práctica de disparar y olvidar?

¡Me encantaría escuchar su vencimiento en este campo! Gracias.

preguntado el 16 de mayo de 11 a las 16:05

¿Dónde están sus pruebas unitarias y funcionales? Si los tiene, la actualización y las pruebas deben ser un proceso de dos pasos (Actualizar y ejecutar pruebas). -

El selenio y las pruebas unitarias son tus amigos. -

1 Respuestas

En primer lugar, es mejor tener un equilibrador de carga con varios servidores para procesar las solicitudes. De esa manera, si ocurre un problema de implementación en uno, puede sacarlo del balanceador y dejar que los demás lo manejen.

En cuanto a si actualizaría o no dicho framework o PHP, la pregunta se reduce a:

  1. ¿Rompe la compatibilidad?? - Este es el factor más importante. Incluso para las actualizaciones de seguridad críticas, tendrá que poner su código en un servidor de prueba y solucionar todos los problemas.
  2. ¿Es una corrección de errores? ¿La corrección de errores afecta algo que estoy usando? - Si no uso SOAP y hay una corrección de errores en el código SOAP, apruebo. Ahora, si hay un error en cómo se manejan las matrices, definitivamente actualizaré.
  3. ¿Es una solución de seguridad? ¿Afecta algo que estoy usando? - La misma política aquí, pero seré más rápido con las actualizaciones.

Ahora, en cuanto a cómo manejarlo, recomendaría lo siguiente:

  1. Quite un nodo del balanceador de carga, asegúrese de que haya una copia de la fuente anterior disponible para si algo sale mal.
  2. Actualice lo que necesite, luego vuelva a colocarlo en el balanceador de carga, pero limítelo a una dirección IP que solo usted pueda ver.
  3. Comprueba que todo parezca legítimo. Si hay un problema, bájelo y vea si el problema se puede resolver, o si necesita volver a colocar la fuente anterior.
  4. Si es un problema que se puede resolver, resuélvalo y luego vuelva al paso 2.
  5. A continuación, desconecte otro servidor del equilibrador de carga y haga lo mismo.
  6. Haga esto hasta que tenga una buena división 50/50 entre los nodos de la versión anterior y los nodos de la nueva versión.
  7. Ahora, fuerce todas las solicitudes de los usuarios a ir a la nueva versión noes para asegurarse de que el sitio público esté bien. Si algo falla, fuerce a que los nodos de la versión anterior vuelvan a estar en línea.
  8. Si todo está bien, actualice los nodos de la versión anterior y devuélvalos al balanceador cuando haya terminado.

La cantidad de nodos que necesite dependerá de la escala de su sitio. Tenga en cuenta que este es un método algo más paranoico para las actualizaciones.

contestado el 16 de mayo de 11 a las 21:05

Gracias por su respuesta. Una pregunta sobre los primeros 3 puntos. Si se actualiza algo que no utiliza su aplicación, no se actualiza. ¿Cómo se maneja cuando 10 versiones más tarde hay una solución de seguridad disponible? ¿Tienes que actualizar 10 pasos? - opHASnoNAME

@ArneRie Es difícil de decir sin saber qué 10 lanzamientos posteriores constituyen como línea de tiempo. Parece que está insinuando actualizaciones incrementales, pero en su lugar estaría haciendo una actualización completa, por lo que sería una ronda de los pasos anteriores. Puede hacerlo de forma incremental, pero la cantidad de tiempo que tomaría en comparación con solo hacer una actualización completa y solucionar problemas potenciales generalmente no vale la pena. Otro consejo sobre las rupturas de compatibilidad, siga las listas de PHP. Sería una circunstancia muy inusual para ellos descartar una solución de ruptura de compatibilidad sin una buena cantidad de advertencia. - onteria_

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.