14 de diciembre de 2014

Quién no ha escuchado de DevOps?

Es casi imposible hoy en día leer publicaciones o noticias asociadas a tecnología de la información y no encontrar artículos y referencias a ”DevOps”.  Así que siendo “DevOps” una expresión cada vez más común en la literatura de tecnología parece oportuno tratar de conocerla y entenderla.  Una de los aspectos más interesantes es que se trata de un concepto que recibió reconocimiento y denominación hace muy poco tiempo, ha crecido rápidamente y se encuentra en pleno proceso de evolución.   Por lo tanto seguramente en unos años, “DevOps” será bastante diferente a lo que encontramos ahora. 

Incluso aquellos que no están directamente asociados a Computación han escuchado las historias de aplicaciones que tomaban años en ser desarrolladas y al final estaban llenas de errores e incluso con cierta frecuencia debían ser desechadas totalmente. “DevOps” es de alguna manera una respuesta que busca corregir esas situaciones, desarrollar más rápido, ir probando en el camino, involucrando a otros en el proceso.  “DevOps” trata principalmente de romper barreras en la forma de trabajo y barreras culturales entre desarrollo y operaciones (los que ejecutan las aplicaciones) y está asociado a las expectativas que las líneas del negocio tiene de lo que Tecnología le pueda aportar.  En la cobertura del artículo se cubrirán con respecto a “DevOps” los temas de definición, historia, los factores que lo impulsan y los componentes. 

Definición
DevOps es un acrómino de (Dev= Desarrollo y Ops=Operaciones), por lo tanto abarca ambos campos, siendo tan reciente su origen, que existen múltiples y variadas definiciones, así que a continuación presentamos una definición personal.

“DevOps” es un método de desarrollo de software que enfatiza la comunicación, la colaboración y la integración entre desarrolladores de software y los profesionales de Infraestructura de TI.  Siendo una respuesta a la interdependencia entre el desarrollo de software y las operaciones de TI apunta a ayudar a producir en forma rápida (o ágil) productos y servicios de software.  Extendiendo el concepto al mundo corporativo, donde se manejan grandes volúmenes y se requiere una capacidad repetitiva de todos los procesos asociados a Desarrollo de software,   “DevOps” expande su enfoque basado en principios de eficacia y agilidad para incluir a los responsables de las líneas de negocios que conjuntamente con las unidades de Desarrollo, Operaciones y Control de Calidad colaboran para entregar aplicaciones de software en forma continua lo cual permite a las líneas de negocios aprovechar más rápidamente oportunidades de negocios y reducir el tiempo de despliegue de las aplicaciones incluyendo la retroalimentación de los clientes. 

“DevOps” ofrece una gran caja de herramientas que trabajan en forma automática alrededor de los requerimientos de desarrollo de aplicaciones y facilitan todo ese proceso.  Los desarrolladores reciben lo que necesitan para su trabajo, Infraestructura puede cumplir sin tanto esfuerzo.  Estas herramientas se pueden dividir en conjuntos que soportan cada paso del ciclo de desarrollo:  desde codificación, siguiendo a integración, apoyando implementación  o despliegue y completando el ciclo con monitoreo y reporte de fallas. 

Historia
El término DevOps se popularizó a través de unas conferencias denominadas “Días de DevOps” que se iniciaron en 2009 en Bélgica.  A partir de ese momento esas conferencias han continuado realizándose en Estados Unidos, Brasil, Australia, Alemania, Suecia y Nueva Zelanda.  El término DevOps comenzó a aparecer en Internet en la primavera del año 2010. 

Factores que lo impulsan
La adopción de DevOps está siendo propulsada por varios factores que incluyen:

·         Los grandes volúmenes de aplicaciones que se necesita desarrollar y la respuesta rápida que se espera.
·         La demanda de actualizaciones más frecuentes a las aplicaciones, por parte de los responsables de las unidades de desarrollo y también de las unidades de negocios.
·         El uso cada vez más extendido de diversos procesos y metodologías de desarrollo, particularmente las metodologías ágiles.
·         La mayor disponibilidad de infraestructura virtualizada y de infraestructura en la Nube, tanto en forma interna dentro de las empresas como la ofrecida por proveedores externos.
·         El aumento en el uso de herramientas de automatización del Centro de Datos y de la Administración de las Configuraciones. 

Los componentes
Los principales componentes que conforman DevOps incluyen:

ü  Herramientas de Desarrollo (abarcando el código que generalmente reside en un repositorio compartido y las herramientas de Administración de Defectos que son utilizadas para identificar las fallas en las aplicaciones).
ü  Herramientas de Integración del Código (utilizando un servidor de integración continua desde donde los programadores pueden tomar el código que reside en un repositorio compartido, lo construyen, lo prueban y reportan los resultados).
ü  Ambientes y herramientas de implementación (los cuales varían dependiendo de la plataforma de operaciones y de la infraestructura adicional disponible).
ü  Herramientas de monitoreo de las aplicaciones en fase de producción.
ü  Reportes de Bugs, conjuntamente con los ambientes donde estos ocurren y las herramientas requeridas para reproducir esos ambientes.
ü  El ciclo de DevOps se repite eteramente, ya que DevOps busca que en este ambiente complicado la capacidad de desarrollo no se estanque.  El propósito de DevOps es que los elementos rutinarios sean fáciles y rápidos de ejecutar de manera que los desarrolladores se puedan concentrar en crear nuevas funcionalidades o atributos y en corregir los bugs. 

Los principios de DevOps
DevOps se basa en principios que todavía están en evolución y ellos son: 

Desarrollar y probar contra sistemas que emulan los de producción
El objetivo aquí es permitir que los equipos de desarrollo y de aseguramiento de la calidad desarrollen y prueben contra sistemas que se comportan tal como lo hace el sistema en su fase de producción.  De esta manera se puede observar cómo se comporta la aplicación y también su desempeño, mucho antes de que esté lista para su despliegue. 

Se busca probar la aplicación bajo el ambiente más parecido al real y simultáneamente también se busca validar los procesos de entrega de aplicaciones.  Desde el punto de vista de Operaciones este principio tiene un enorme valor, ya que permite ver muy temprano en el ciclo cómo se comporta el ambiente que debe soportar la aplicación y permite eventualmente crear las bases para poder entonar ese ambiente en función de la aplicación.  

Desplegar bajo procesos confiables y repetibles
Este principio permite a Desarrollo y Operaciones apoyar un proceso de desarrollo ágil e iterativo en todas las fases hasta producción.  La automatización es esencial para poder crear procesos que cumplan con las siguientes condiciones: iterativos, frecuentes, repetibles y confiables.  Esto le permite a la organización crear una cartera de entregables, donde los despliegues y las pruebas se pueden realizar en forma automática y continua.  La ejecución frecuente de despliegues también permite poner a prueba los procesos de despliegue, limitando los riesgos de fallas en los momentos de entrega.   

Monitorear y validar la calidad operacional
Típicamente las organizaciones son muy buenas monitoreando aplicaciones y sistemas en producción, ya que existen muchas opciones para hacer esto y ellas utilizan herramientas que permiten capturar las métricas de producción en tiempo real.  Sin embargo, este monitoreo es realizado sobre  aplicaciones individuales,  donde las aplicaciones no están conectadas las unas con las otras.  DevOps exige que el monitoreo sea realizado más temprano en el ciclo, requiriendo además que se haga monitoreo de las características funcionales y de las características no-funcionales de la aplicación.   

En cualquier momento, a medida que las aplicaciones están siendo desplegadas y probadas, DevOps exige que se capturen métricas de calidad y que sean analizadas. Este monitoreo frecuente provee aviso tempranero sobre temas operacionales y de calidad que podrían aparecer posteriormente en la etapa de producción.  Adicionalmente, las métricas deben ser capturadas en un formato que sea entendible y utilizable para todos los interesados, incluyendo a los responsables de las aplicaciones en las líneas de negocio.  

Ampliar círculos de retroalimentación
Uno de los principales objetivos de DevOps es permitir a las organizaciones reaccionar y poder realizar cambios rápidamente en sus procesos de negocio.  En la entrega de software, el objetivo se transforma en proveer retroalimentación en un corto tiempo y además poder aprender rápidamente de cada acción que se toma.  Las organizaciones deben crear canales de comunicación que permitan a todas las partes interesadas accesar la información y actuar sobre la base de la retroalimentación y por ello:
·         Desarrollo puede actuar ajustando sus planes de proyecto o sus prioridades.
·         Producción (Operaciones) puede actuar mejorando los ambientes de producción.
·         Las Líneas de Negocios pueden actuar modificando sus planes de implementación. 

Para el artículo se usaron como referencia materiales provenientes de: “Elements of DevOps” (InfoWorld) http://bit.ly/1z7bm6j , “DevOps for Dummies” 2014 y en (Information-age) - “Why 2015 is the year of DevOps culture”  http://bit.ly/1zwVtHi, “An (absolute) beginner’s guide to DevOps” http://bit.ly/166Gutc y Survival of the fittest: Will DevOps save IT from going the way of the dodo? http://bit.ly/1yQzVpc


No hay comentarios.:

Publicar un comentario