DevOps e Integración Continua

Integración continua con la puesta en práctica de DevOps en Uxland. La metodología que permite optimizar el trabajo y la colaboración de un equipo para desarrollar software con fiabilidad y rapidez.

Concepto DevOps

La presión por avanzar rápida y ágilmente sin sacrificar seguridad y fiabilidad en el desarrollo de software, y conseguir que la escalabilidad sea factible, hace que muchos proyectos acaben siendo aplazados o cancelados por no cumplir dichos requisitos.

Es en este punto cuando DevOps empieza a ser una metodología en la que un equipo de desarrollo debería fijarse seriamente. Su objetivo principal es optimizar el trabajo y colaboración de un equipo para entregar el software de forma rápida y fiable al cliente, así como permitir la escalabilidad y la resolución de incidencias de forma eficiente.

En este artículo haremos hincapié en los objetivos principales de la metodología
DevOps sin entrar en detalle en el flujo de trabajo o herramientas utilizadas en
nuestro día a día. Artículo que reservamos para una entrada futura en este blog.

Objetivos del DevOps

Flujo de trabajo en DevOps

Flujo de trabajo en DevOps

Para conseguir lo que se propone con DevOps, es necesario definir una serie de objetivos internos en el equipo que deberían seguirse lo más estrictamente posible:

  • Mejorar la frecuencia de desarrollo e integración de cambios.
  • Índice de errores mínimos o nulos durante la integración.
  • Tiempo de resolución de incidencias bajo.
  • Asegurar la escalabilidad con cada iteración.
  • Entregas rápidas y frecuentes al cliente.

Mediante la automatización y monitorización de la construcción de software en todas sus fases, desde la integración de código de diferentes desarrolladores, a las etapas de testing y deploy, así como la gestión de la infraestructura y herramientas necesarias para su desarrollo y puesta en productivo, es posible crear un flujo de trabajo que dé como resultado la eficiencia y rapidez que tanto desea el cliente y los usuarios finales.

Integración Continua

Uno de los puntos principales para alcanzar los objetivos que marca la metodología DevOps, es la coordinación del trabajo realizado por el equipo de desarrolladores. Es en este momento cuando entra en juego el concepto de integración continua, cuyo objetivo principal es coordinar e integrar el trabajo de todo el equipo de desarrollo de software en una línea principal de forma muy frecuente, y entregar el producto con estos nuevos cambios tan pronto sea posible.

Flujo de trabajo en DevOps

Esquema integración de la metodologia DevOps

Cuando un desarrollador se embarca en las tareas necesarias para solucionar una incidencia o ampliar con nuevas funcionalidades el proyecto, lo primero que debe hacer es crear una copia del estado actual, sobre la que trabajará, evitando los cambios sobre la línea principal que es, se supone (y debería ser de estricto mandato), estable. Todos los cambios que realizar se harán sobre esta copia y posteriormente se integrarán en la línea principal. A su vez, varios desarrolladores pueden estar trabajando en sus tareas e integrando sus novedades en la línea principal a medida que las completan, lo que hace que cuanto más tiempo una copia esté sin integrar en la principal, más deja de reflejar lo que existe en el proyecto, teniendo que sincronizar la copia en la que estamos trabajando y solucionando los posibles conflictos derivados por los cambios introducidos por el resto del equipo. Esto es conocido como integration hell.

Con la integración continua, se intenta evitar justamente los problemas derivados de que un equipo de desarrolladores trabaje de forma simultánea sobre un mismo proyecto. Para ello es estrictamente necesario definir las tareas de forma concisa e intentando fraccionar y encapsular los cambios para que estos puedan ser integrados de forma regular a la línea principal para que el resto del equipo pueda sincronizar su trabajo con estos.

Una práctica complementaria y muy recomendable de la integración continua es que antes de integrar los nuevos cambios al proyecto, sea necesario ejecutar una serie de tareas de compilación, calidad y testeo para asegurarnos que lo que vamos a integrar en la línea principal es software estable y que puede ser puesto en producción inmediatamente.

Compromiso con el cliente

El compromiso con nuestros clientes nos hace tener que ser eficientes, rápidos y adaptables a los requerimientos que puedan aparecer en cada proyecto, solucionando los problemas en el menor tiempo posible entregando un producto ajustado a las necesidades reales.

Es por ello que hemos integrado la metodología DevOps en nuestro flujo de trabajo y, siguiendo lo más estrictamente posible los objetivos mencionados anteriormente, nuestro equipo de desarrollo dará
justamente esta imagen que deseamos.