Páginas

domingo, 18 de mayo de 2014

Actualización de software

Recientemente me encontré ante un grave error de aplicación tras una actualización (upgrade).
Leyendo lo tal cual, parece que no sigues los procedimientos de actualización. Poniéndonos en materia.


Es un desarrollo genérico, que contiene proceso automático de actualización y comprobación del mismo. Aun así antes de realizar la actualización en el entorno de producción realizamos pruebas en en una copia idéntica en un entorno de pruebas.
La actualización en el entorno de pruebas funciona correctamente, no da ningún error, y las baterías de pruebas se consiguen realizar sin encontrar ninguna incidencia.
El entorno de producción se actualiza y se realizan de nuevo pruebas confirmando que todo funciona correctamente. Por lo que se deja como versión estable para el resto de usuarios.

Al poco tiempo llego una notificación de incidencia por parte del usuario.
Se realizan las pruebas siguiendo los pasos indicados y se confirma que es una incidencia.
Se analiza con la opción interna del software que tanto el software como la base de datos son correctos.

Pasos siguientes:
  • Confirmar que no es un error de actualización.
    • Se revisa la web del producto y no indica nada.
    • Se instala una versión limpia del software y el error no se produce. Por lo que se confirma que es un error en nuestra actualización.
  • Para conocer el origen del error
    • Cambiamos en el entorno erróneo la base de datos asignada a la limpia. El error no se reproduce.
    • Cambiamos en el entorno limpio la base de datos limpia a la del entorno erróneo. El error se reproduce. Pues todo hace indicar que es un error en la base de datos.
  • Análisis de base de datos
    • Realizamos una comparación de bases de datos a través de una herramienta reconocida para eso mismo. El resultado devuelto es que no existen diferencias.
    • Solo nos queda a nivel de registros, pero eso ya implica diferencias entre entornos y configuraciones.
  • Solución:
    • Revisión de tabla a tabla de las diferencias.
      • Como indicaba los registros pueden ser muy diferentes pero correctos, debido a configuración o los datos reales de producción, que son validos.
      • Por lo que se realizo es una actualización de las tablas de la base de datos limpia, con los datos de producción, que no de configuración. Cada vez que se actualizaba una tabla se comprobaba que funcionaba correctamente.
      • En caso de error se analizaba la tabla y se procedía a realizar actualizaciones de tablas relacionadas.
Tras estos pasos la actualización volvió a estabilizarse.

Con todo esto, lo que se pretende indicar, es que el procedimiento de actualización debe:
  • Estar documentado
  • Revisar los errores conocidos del producto en su pagina y foros
  • Formar al usuario final, si fuera necesario, por los cambios que incorpore la nueva actualización.
  • Probado de forma intensa por sistemas
  • Tener copias antes de realizar la actualización y procedimiento para quitar la actualización (Downgrade) en caso necesario. 
  • Realizar pruebas en entorno lo mas similar posible al entorno de producción.
  • Posibles procedimientos de conversión de datos y sistemas. Documentado indicando cuando se pueden realizar, por quien y quien sera la persona que los autorice.
  • Prueba de cambios por el usuario.
  • Prueba de aceptación, aprobadas por parte del usuario / cliente. 
  • Cambio a producción.
  • Revisión en producción
  • Aceptación del cambio en producción.
  • Y aun así pueden suceder errores. Pero si no lo tenemos en un protocolo de actuación, seguramente sea un desastre.

No hay comentarios:

Publicar un comentario