cadena de herramientas

Cadena de herramientas o «Tool Chain»

La cadena de herramientas es el conjunto de herramientas que se utilizan a lo largo del ciclo de vida para promocionar por los entornos intermedios, validar, aprobar e instalar en Producción una aplicación.

Dentro de lo que es la cadena de herramientas, habitualmente existen los siguientes servicios:

Control y gestión de las entregas

El principal objetivo es que todos los equipos involucrados en la instalación colaboren, es decir, puedan responder rápidamente, estén orientados a la acción y tomen decisiones basándose en información precisa y actualizada, de forma que se reduzca la espera, se comparta el conocimiento y se reduzcan las emergencias de última hora.

Es posible alcanzar este objetivo ya que los equipos que planifican conjuntamente tienen un mejor entendimiento de las dependencias y pueden identificar cuellos de botella antes que aparezcan, y pueden priorizar adecuadamente antes los conflictos que puedan surgir.

Repositorio de fuentes repo fuentes

El repositorio de fuentes permite almacenar en una misma ubicación todos los elementos que se utilizarán durante la construcción, siendo éste el único punto desde el que los motores de construcción recuperaran las fuentes para construir.

Además, los repositorios de fuentes y las técnicas adecuadas de desarrollo en paralelo permiten acelerar el desarrollo de múltiples cambios simultáneos en las aplicaciones.

Repositorio de ejecutables

El repositorio de ejecutabRepositorioles es la piedra angular de la implantación ya que será de éste de donde se recuperará todos los artefactos que se deben de instalar.

Estos artefactos pueden ser entregados por los equipos de Desarrollo o por los motores de construcción, y serán recuperados de éste por el motor de automatización de implantación.

Integración continua CI

La integración continua es la encargada de recuperar del repositorio de fuentes los elementos necesarios para generar de forma controlada y automatizada los artefactos, que almacenará en el repositorio de ejecutables, y serán instalados posteriormente en los entornos de ejecución.

Motor de despliegue

El motor de despliegue es el deployque se encarga de recuperar los artefactos del repositorio de ejecutables y de su distribución a las máquinas donde son necesarios para que una aplicación pueda utilizarse.

El motor de despliegue debe ofrecer aumentar la frecuencia de implantación garantizando la consistencia de las implantaciones. Dicho de otra manera, la instalación de una aplicación tiene que ser aburrida, ya que debiera de realizarse frecuente, ser predecible ya que se instala cada vez de la misma manera y fiable.

El motor de instalación además de los mecanismos de instalación debe ofrecer mecanismos de trazabilidad, registros de auditoría y la capacidad de escalar conforme las necesidades de la organización crecen.

Controles de Calidad (QA)

Los equipos de calidad teóricamente debieran colaborar con los equipos de desarrollo para escribir los casos de pruebas automáticos desde el comienzo del desarrollo. Estos casos de prueba deberán demostrar que la aplicación implementa la funcionalidad solicitada qapor Negocio.

Los casos de prueba deben ejecutarse cada vez que se realiza una modificación en el código, tanto de cara a validar que cada nueva versión implementa las nuevas funcionalidades como para asegurar está libre de regresiones, es decir, que las funcionalidades existentes siguen funcionando de igual forma.

Por lo que dentro de la cadena de herramientas deben de existir puntos donde se realizarán estas validaciones, estos puntos pueden estarán definidos a lo largo del ciclo de vida por lo que pueden estar presentes en la fase de desarrollo, en tiempo de promoción en entornos intermedios, como antes de la puesta en Producción.

Monitorización

La monitorización consiste en la vigilancia de todos los servicios activos que una máquina ofrece, por lo que es vital dentro de la cadena de herramientas puesto que cada vez que se despliegue una nueva versión de la aplicación se debe supervisar la información generada por la monitorización de cara a identificar posibles problemas antes de que se despliegue en Producción.

De esta forma aseguramos que la nueva versión de la aplicación no genera problemas en las infraestructuras existentes y evita posibles impactos en Producción. Ya que su objetivo principal es detectar posibles interferencias y dar lugar a medidas correctivas antes de llegar a Producción.

Vista de conjunto de la “cadena de herramientas”

Como se ha comentado anteriormente la cadena de herramientas está formada por una serie de herramientas que utilizadas en su conjunto proporcionan consistencia, eficiencia, seguridad y visibilidad.

Consistencia:

  • Todos los procedimientos son comunes para todos los entornos.
  • Todas las tareas necesarias para implantar están identificadas en un único lugar.
  • Se utilizan procedimientos de construcción homogéneos y controlados.
  • Se utiliza las mismas herramientas de implantación para todos los entornos.
  • Se utiliza las mismas herramientas de infraestructura para todos los entornos.

Eficiencia:

  • Reducción de las tareas manuales.
  • Reducción de tareas redundantes y por lo tanto innecesarias.
  • La información estará siempre accesible.
  • Reducción de la dependencia del conocimiento de una persona.

Seguridad:

  • Minimización del ratio de error manual
  • Mismo despliegue en todos los entornos

Visibilidad:

  • Inventario de los artefactos que forman las aplicaciones.
  • Instalación controlada y gestionada
  • Simplicidad en las auditorias