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.
No hay comentarios.:
Publicar un comentario