Todos los días, alrededor del mundo, los administradores de sistemas están atorados en las salas de conferencias tratando de averiguar qué fue lo que salió mal con la última implementación de alguna importante aplicación. Después de un cambio de rutina y al parecer de menor importancia, la aplicación fracaso y nadie parece saber por qué falló o si pueden ser capaces de resolverlo. De repente alguien llama a la puerta, y un alto ejecutivo bien vestido irrumpe preguntando cuándo se resolverá el problema. La respuesta debería ser "Lo estamos solucionando ahora ", pero rara vez es así.
Esto se debe a que la mayoría de las organizaciones no creen que se pueda implementar de forma automática y correctamente los muchos componentes cambiantes necesarios de una moderna aplicación de varios niveles basada en web. Poner a más personas ante el problema no sólo puede resultar costoso, sino que también puede traducirse en más errores. Con las aplicaciones volviéndose cada vez más complejas, el futuro solamente depara más de esas juntas en búsqueda de soluciones.
El camino a seguir es automatizar la implementación de aplicaciones para reducir los errores de configuración y permitir mayor tiempo de actividad de las aplicaciones, implementaciones más consistentes, mayores tasas de cumplimiento y reducir los costos de administración. Este artículo se centra justamente en la gestión de lanzamiento de aplicaciones, lo que causa muchos de los grandes dolores de cabeza en las empresas, y describe cómo la automatización puede ayudar.
La gestión de lanzamiento de aplicaciones es el proceso de traslado de las nuevas versiones de aplicaciones desde el desarrollo y hacia las diferentes etapas de la prueba y terminando en la implementación. Ya que estos nuevos lanzamientos pueden ser críticos para alcanzar las metas del negocio, deben de ser implementadas de una forma veloz y a bajo costo, sin tener que interrumpir otros sistemas, al mismo tiempo que aseguran el cumplimiento con regulaciones gubernamentales, organizacionales y de la industria.
Los cuatro pasos para el lanzamiento de aplicaciones son los siguientes:
1.- Embalaje. Creando artículos de configuraciones múltiples que deberán ser implementados al mismo tiempo.
2.- Implementación. Utilizar los contenidos de un paquete para instalar aplicaciones y configurar sus entornos operativos.
3.- Promoción. Entrega de un paquete previamente probado a un entorno más crítico, como del desarrollo a la garantía de la calidad o de la garantía de calidad a la producción.
4.- Cumplimiento. Documentar los procesos de implementación adecuados que fueron seguidos, y validar las configuraciones de implementación.
Estas medidas, aparentemente simples son a menudo frustradas por la complejidad de los entornos de aplicaciones modernas, y por las organizaciones modernas de TI. Las aplicaciones de hoy basadas en servicios pueden contener cientos, incluso miles de elementos de configuración críticos para servidores de aplicaciones, bases de datos, servidores web, mensajería middleware y servicios de autorización. Cada componente debe estar configurado correctamente para funcionar con las versiones actuales de todos los otros componentes que conforman la aplicación. Con el tiempo, los cambios de configuración pueden causar problemas mientras la mezcla de componentes cambia, o mientras se encuentran nuevos fallos, o mientras nuevas funciones son añadidas.
Este complejo conjunto de "piezas en movimiento" se entrega desde el desarrollo hasta el personal de operaciones, cada uno con diferentes sistemas (a menudo de forma manual o informal) para el seguimiento y lanzamiento de los cambios. Esta es una fórmula para exactamente el tipo de personas y fallas en los procesos que causan el 80 por ciento de las interrupciones de misión crítica.
De acuerdo con un reporte de investigación de Gartner del 2010, en el año 2015, el 80% de las interrupciones de misión crítica serán causados por las personas y problemas de procedimiento, y más del 50% de las interrupciones serán causadas por el cambio, configuración, integración, liberación y transferencia de los problemas.
Estos expertos tratan de escribir y mantener scripts de implementación que intentan automatizar la implementación de aplicaciones y administrar la complejidad del entorno de la aplicación. Otra alternativa frecuente es implementar todos los lanzamientos de aplicación a través de cada prueba y entorno de implementación de forma manual. Incluso si una empresa puede encontrar los recursos y pagar este enfoque, se derrumbaría en la gran complejidad del entorno de aplicación, el número de cambios realizados cada semana, y el importe de la coordinación necesaria entre el personal de desarrollo y operación.
La Solución de Automatización
Un enfoque automatizado al lanzamiento de una aplicación debe abordar las cuatro etapas del proceso de lanzamiento (embalaje, implementación, promoción y cumplimiento) con flujos de trabajo que sean fáciles de elaborar y fáciles de mantener y que a su vez faciliten las "transferencias" de los paquetes de distribución entre los distintos personales operativos, donde existen tantas fallas.
Los requisitos clave de alto nivel son los siguientes:
»» Modelos basados en configuración para reducir la complejidad y asegurar lanzamientos confiables y predecibles.
»» Parámetros de plantillas de aplicación para garantizar implementaciones consistentes a través de entornos de lanzamiento, como el desarrollo, control de calidad, puesta en escena, y la producción.
»» Control de acceso basado en roles para garantizar que sólo los empleados con la debida autorización puedan autorizar y ejecutar los cambios, lo que ayuda a cumplir con la seguridad y otros requisitos de cumplimiento.
»» Capacidades de reversión granulares y precisas para deshacer los cambios que amenazan la integridad del entorno de aplicación.
Un modelo de datos, respaldado por una base de datos empresariales lista para la gestión de la configuración (CMDB), es una tecnología clave que describe y rastrea los diversos componentes necesarios para cada aplicación. El modelo de datos de configuración captura una imagen instantánea del entorno de configuración de aplicaciones, incluyendo detalles de los elementos de configuración y las interdependencias. El modelo es una representación abstracta del entorno de aplicación puede ser utilizado para comparar los ambientes entre sí o con un "patrón oro" de configuración para fines de auditoría. Además, el modelo también puede ser editado de forma segura o utilizarse como una nueva configuración, eliminando la necesidad de secuencias de comandos por completo. Esto ayuda a asegurar lanzamientos fiables y predecibles, especialmente teniendo en cuenta los muchos cambios en "partes móviles" de las aplicaciones modernas.
La gestión de cambio y lanzamiento debe ir más allá de la aprobación de cambio. La solución debe permitirle llevar a cabo la automatización de tareas y tener un fuerte control sobre las autorizaciones y la producción de lanzamiento de paquetes de aplicación y entornos de implementación.
Esta es la constante del tiempo (mientras aumenta el número de cambios y la complejidad de los entornos de aplicación se levanta) y es fundamental para evitar el tiempo de inactividad no planificado y la explosión de los costos de gestión. Esta escalabilidad es esencial dado el número de personas y organizaciones, tales como socios comerciales y subcontratistas, que participan en los ciclos del lanzamiento de una aplicación, el ritmo de lanzamientos de aplicaciones, y los requisitos cada vez mayores de cumplimiento de normas. Este enfoque también reduce la necesidad de contratar más personal para cumplir con una fecha límite para solicitar el despliegue repentino.
Una solución automatizada para el lanzamiento de aplicaciones también debe apoyar infraestructuras físicas y virtuales, para permitirle a las organizaciones implementar de manera rentable los cambios a través de ambos entornos, o migrar aplicaciones conforme sus necesidades del negocio cambian.
Flujos de trabajo automatizados y las herramientas para crearlos fácilmente pueden ayudar a proporcionar procesos consistentes y alineados, incluso como responsabilidad de los cambios se mueven entre varios grupos con el tiempo. Tener procesos consistentes y automatizados en los que respaldarse es importante, especialmente en lo que las empresas reorganizan las funciones de apoyo para que coincidan con los cambios estructurales en la organización o externalizar algunas funciones para proveedores externos.
Otro requisito clave es la necesidad de capacidades de descubrimiento que el modelo de entorno de la infraestructura existente y capturar configuraciones funcionales como un modelo para futuras implementaciones. El descubrimiento automatizado reduce drásticamente el costo y tiempo necesario para crear paquetes de implementación. Esto también reduce el tiempo para descubrir las configuraciones que se han desplazado fuera del cumplimiento y se deben cambiar para asegurar una implementación exitosa.
Por último, es importante recordar que el lanzamiento de aplicaciones es sólo parte del desafío de operaciones de las aplicaciones. Los administradores de TI deben gestionar proyectos y carteras, rendimiento de la aplicación y cumplimiento de la configuración. Una solución de automatización para el lanzamiento de aplicaciones debe trabajar de forma integrada con otras herramientas de operaciones de TI, lo que permite flujos de trabajo entre sí que reducirán aún más los costos, evitaran errores que pueden causar tiempo de inactividad de las aplicaciones y la velocidad en la capacidad de respuesta del negocio.
Jody Hunt, líder de Administración de soluciones para operaciones de aplicaciones en BMC Software.