Sketch2Code
Kabel aplica inteligencia artificial para reducir tiempos en el diseño web
28 agosto, 2018
Pull Request_Azure DevOps
Pull Request en Azure DevOps
2 octubre, 2018

1. ¿Qué es DevOps?

La palabra DevOps proviene del acrónimo inglés “development” (desarrollo) y “operations” (operaciones).

DevOps es un conjunto de prácticas que permiten tanto automatizar y monitorizar la construcción de software como incrementar el control de calidad, buscando agilizar las tareas que tienen que acometer tanto los desarrolladores como los administradores de sistemas.

Se trata de algo más relacionado con las personas y su forma de trabajar que con la tecnología como tal. Estamos hablando de una metodología que implica una mentalidad y convergencia entre equipos completamente nuevas. Con DevOps se pretende conseguir la mayor transparencia posible entre equipos, o lo que es lo mismo, romper barreras entre departamentos, es decir, que desde el área de Desarrollo se sepa qué es lo que se hace en el área de Operaciones (administradores de sistemas) y viceversa.

En definitiva, el objetivo que DevOps persigue es cubrir la necesidad de comunicación entre equipos durante la realización de un determinado proyecto para así permitir un desarrollo de software más rápido y de mayor calidad, lo que derivaría en un ahorro de costes y una mayor frecuencia de entregas. De este modo, se lograría obtener las ventajas más buscadas y demandadas por los equipos y por el propio cliente, que son calidad y rapidez por un lado (que es lo que más le interesa al cliente), y transparencia por el otro (en lo que compete a los equipos que han de trabajar juntos para fabricar el software a fin de asegurar esa calidad y rapidez que satisfagan al cliente).

2. Ciclo iterativo

Un proyecto se planifica en base a distintos bloques temporales, repitiéndose un determinado proceso de trabajo en cada iteración y produciéndose así unos beneficios de manera creciente que permitirán hacer entrega de un producto final más completo.

DevOps, que surgió como resultado de la evolución de las herramientas Agile, tiene sus raíces en metodologías iterativas. Las fases que integran DevOps forman un bucle infinito donde entran en juego las tareas propias de dos mundos, el de los desarrolladores y el de los administradores de sistemas. De esta forma, se compone un flujo agrupado de tareas continuas, las cuales dan comienzo en la fase de análisis y finalizan en la de aprobación del sistema, repitiéndose el flujo una vez terminada esta última etapa.

Analicemos cada fase de forma resumida:

2.1 Plan

Aquí se planifica y programa la realización de las tareas asincrónicas. Es imprescindible que Negocio y Gestión se formen en las herramientas y métricas de negocio diseñadas para que tengan una visibilidad real del desarrollo del proyecto y den un feedback que permita evolucionar el mismo. A este respecto, Microsoft Visual Studio Team Services (VSTS) es una herramienta muy utilizada que permite administrar los proyectos en tareas, como podemos ver en la imagen de abajo.

devops-capture-1

2.2 Desarrollo

En esta fase se diseña la arquitectura. Aquí es donde los testers definen las pruebas y los desarrolladores construyen la aplicación mediante la escritura del código correspondiente. En esta fase también se lleva a cabo la automatización de procesos y la implementación de las medidas de seguridad, lo que producirá una transformación en las técnicas empleadas, reduciendo con ello el tiempo de búsqueda en los errores que surgen, algo imperativo en todo desarrollo. Además, existen plataformas de control enfocadas en facilitar el desarrollo y seguimiento del proyecto, permitiendo realizar versionados, históricos y trabajos colaborativos por medio de estructuras de desarrollo en ramas.

2.3 Integración continua

En esta fase se automatizan los mecanismos de revisión, validación, pruebas y alertas construidos en las iteraciones, permitiendo identificar rápidamente posibles fallos (es decir, en qué pieza y línea de código está el error). Este proceso sucede cada vez que se actualiza el código del repositorio.

devops-capture-2

2.4 Despliegue

En muchos casos, el proyecto finaliza en la fase de construcción y pruebas, pero esto no ha de ser así, ya que se ha de compilar y comprobar el código para ver si puede o no ser desplegado de forma automática en los diferentes entornos (Desarrollo, Preproducción, Producción). Como en toda cadena, cuantos más pasos existan en los procesos de despliegue, más posibilidades de fallo humano habrá. Lo que DevOps promueve en esta fase es la automatización de los despliegues por medio de herramientas y scripts que permiten resumir la validación de todo proceso en un botón de aprobación.

2.5 Operación

En esta fase se mide el ajuste de los recursos de acuerdo con la demanda o las características de crecimiento de la aplicación, empleando herramientas específicas con las que se puedan obtener las métricas necesarias para supervisar el estado de funcionamiento del software (además de poder acceder al histórico) y permitan modificar dinámicamente la infraestructura donde se explotarán las capacidades de escalabilidad, persistencia, disponibilidad, transformación, resiliencia y seguridad.

2.6 Monitorización

En esta fase es donde vamos a definir los requisitos y condiciones que monitorizaremos para controlar la salud de las aplicaciones y su infraestructura. Aquí evaluaremos el sistema consultando el histórico de las mediciones durante un periodo de tiempo establecido. Es decir, en esta fase analizaremos toda aquella información que impacte sobre la actividad del plan (nuevos cambios, actualizaciones…).

 

3. Características clave

Las características que más definen a DevOps son:

  • Trabajo en equipo: Los vínculos entre desarrolladores y administradores se estrechan debido a que deben trabajar conjuntamente mediante herramientas compartidas.
  • Amplia variedad de herramientas que facilitan la consecución de las diferentes fases: Las herramientas que se utilizan en esta metodología (las cuales veremos más adelante) facilitan la gestión de releases, suministro de infraestructura, orquestación, supervisión, inclusión de contenedores, virtualización, automatización…
  • Supervisión continua de los entornos de desarrollo, integración y transferencia
  • Participación del cliente: Gracias al feedback del cliente en el proceso de construcción del software se acelera la reacción ante errores y la implementación de mejoras.

 

4. Ventajas

El nuevo enfoque de colaboración que trae consigo DevOps permite a los equipos trabajar de forma más cercana, aportando una mayor agilidad al negocio, así como notables incrementos de productividad. No es de extrañar que equipos de empresas de renombre como Telefónica, Netflix, Repsol, Amazon o Flickr, entre otras, ya estén aplicando esta metodología.

Las ventajas más destacables de DevOps son:

  • Entrega rápida y frecuente: DevOps aumenta la frecuencia de versiones y, con ello, la rapidez de las actualizaciones.
  • Confianza: Las actualizaciones y los cambios de infraestructura se entregan de manera más segura a un ritmo más rápido sin que ello afecte a la experiencia de usuario.
  • Escala a riesgos mínimos: DevOps permite operar y administrar la infraestructura y los procesos de desarrollo a escala. De esta forma logramos adaptarnos y reducir el riesgo al mínimo de manera eficiente ante situaciones cambiantes.
  • Seguridad: Al utilizar políticas de cumplimiento automatizado, controles detallados y técnicas de administración de la configuración, no se sacrifica la seguridad. Se utiliza el código como política para seguir el cumplimiento a escala.
  • Integración continua: DevOps permite encontrar y corregir errores más rápidamente, mejorar la calidad de software y reducir el tiempo que supone validar y lanzar nuevas actualizaciones de software.
  • Entrega continua: Con DevOps nos aseguramos de tener siempre un artefacto listo para la implementación (habiendo pasado previamente por un proceso de prueba estandarizado).
  • Alta cualificación del equipo: Siempre puede haber fallos, pero la probabilidad de que éstos sucedan se reduce gracias al conocimiento de los integrantes del equipo de DevOps, los cuales suelen poseer un amplio abanico de habilidades que les permiten controlar y cubrir todas las fases del proyecto.

 

5. Principales herramientas de DevOps

Hay una serie de tecnologías y herramientas -tanto open source como de Microsoft y otras empresas del sector- que pueden ayudarnos a obtener todos estos beneficios que acabamos de enumerar (aunque todo depende de la configuración del proyecto, donde entran variables de economía, conocimiento y experiencia):

  • Microsoft Azure: Conjunto de servicios y productos en la nube alojados en los data centers de Microsoft. Algunas características destacables son:
    • Servicios de infraestructura: Permiten desplegar rápidamente un entorno con Windows Server o con distribuciones Linux.
    • Administración de identidad y acceso: Permite gestionar de forma centralizada y sencilla el control de acceso y la identidad.
    • Proceso: Ejecuta aplicaciones con múltiples lenguajes como C#, C++, Visual Basic, Java, Python y muchos más…
    • Red de entrega de contenido (CDN): Agiliza el acceso a los datos que se usan frecuentemente.
  • Application Insights: Servicio que administra el ciclo de vida de la aplicación y supervisa el rendimiento ayudando a mejorar continuamente.
  • Visual Studio Enterprise: Entorno de desarrollo de Microsoft (IDE). Soporta múltiples lenguajes de programación, tales como C++, C#, F#, Java, Python, Ruby o PHP.
  • Visual Studio Team Services: Producto de Microsoft que trata la administración de código fuente, informes, compilaciones automatizadas, pruebas y liberación, entre otras. Cubre todo el ciclo de vida de la aplicación.
  • Microsoft Flow: Servicio de Microsoft que permite administrar los procesos y crear flujos automatizados, dándonos la posibilidad de añadir notificaciones, sincronizar archivos, recopilar datos y mucho más.
  • Git: Se trata de un sistema de control de versiones. Su propósito es llevar el registro de los cambios en los archivos y coordinar el trabajo del equipo de desarrollo.
  • Jenkis: Es un software de integración continua open source escrito en Java.
  • Docker: Proyecto de código abierto para automatizar el despliegue en aplicaciones dentro de contenedores. Además, posee una capa de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.
  • Zookeeper: Programa libre de Apache Software Foundation que ofrece un servicio de coordinación de procesos distribuidos altamente confiable.
  • JFrog Artifactory: Programa open source que funciona como repositorio de software de código abierto, facilitando la escalabilidad de los proyectos.

 

Conclusión

La implantación de una cultura DevOps en las empresas trae consigo una serie de beneficios destacables para las mismas. De aplicarse bien las prácticas que la definen, DevOps permitiría desarrollar software de una manera más controlada y eficiente a través de herramientas pensadas para propiciarlo. A ello hay que sumarle que, gracias a una serie de procesos de comunicación y aprendizaje fluidos y transparentes, estaríamos uniendo dos mundos históricamente separados (el de la construcción del software y el de la operación del mismo).

En definitiva, además de impulsar el crecimiento de una organización mediante la optimización de sus procesos de trabajo, DevOps puede mejorar el clima laboral mediante una cultura de colaboración y entendimiento entre equipos. Por lo tanto, estamos ante una metodología que podría convertirse en uno de los motores del cambio para cualquier empresa tecnológica decidida a implementarla.

 

 

Si queréis comentarnos lo que sea podéis hacerlo en info@kabel.es

También podéis seguirnos en Twitter, LinkedIn y Facebook

 


Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0
Internacional
.

Compártelo: Share on FacebookTweet about this on TwitterShare on LinkedInPin on Pinterest
Álvaro Bienvenido
Álvaro Bienvenido
Lover of the Technology & Full-Stack Developer

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *