DevOps (acrónimo inglés de development -desarrollo- y operations -operaciones-) es un conjunto de prácticas que agrupan el desarrollo de software ( Dev ) y las operaciones de TI ( Ops ). Su objetivo es hacer más rápido el ciclo de vida del desarrollo de software y proporcionar una entrega continua de alta calidad. DevOps es una práctica complementaria al desarrollo de software ágil ; esto debido a que varias de las características de DevOps provienen de la metodología Agile (término en inglés para la metodología de desarrollo ágil).
La principal característica del movimiento DevOps es defender activamente la automatización y el monitoreo en todos los pasos de la construcción del software, desde la integración, las pruebas, el despliegue, hasta la implementación y la administración de la infraestructura. DevOps apunta a ciclos de desarrollo más cortos, mayor frecuencia de implementación, lanzamientos más efectivos, en estrecha alineación con los objetivos comerciales.[1][2][3][4]
En la conferencia Agile 2008 Toronto, Yhens Wasna y Patrick Debois introdujeron el término en su charla sobre "Infraestructura Ágil".[5] A partir de 2009, el término DevOps se ha promocionado constantemente y se ha incorporado a un uso más general a través de una serie de "devopsdays",[6] que comenzaron en Bélgica y ahora también se han extendido a otros países.[7]
El término DevOps ha sido utilizado en múltiples contextos diferentes.[8]
Una definición propuesta por Bass, Weber y Zhu es:
DevOps es un conjunto de prácticas destinadas a reducir el tiempo entre el compromiso de un cambio en una aplicación y el cambio que se coloca en la producción normal, al tiempo que garantiza una alta calidad.[9]
Durante la década siguiente, también se desarrollaron iniciativas de DevOps más tangenciales, como OpsDev,[10] WinOps,[11] y BizDevOps.[12]
Como DevOps pretende ser un modo de trabajo interfuncional, en lugar de una sola herramienta de DevOps existen conjuntos (o "toolchains") de múltiples herramientas.[13] Se espera que tales herramientas de DevOps encajen en una o más de estas categorías, que reflejen los aspectos clave del proceso de desarrollo y entrega:[14][15]
Algunas categorías son más esenciales en una cadena de herramientas DevOps que otras; especialmente la integración continua (por ejemplo, Jenkins) y la infraestructura como código (por ejemplo, Puppet).[16][17]
La necesidad de DevOps surgió del creciente éxito del desarrollo de software ágil, ya que eso llevó a que las organizaciones quieran lanzar su software más rápido y con mayor frecuencia. A medida que trataban de superar la tensión que esto suponía para sus procesos de gestión de versiones, debían adoptar patrones como la automatización del lanzamiento de aplicaciones, las herramientas de integración continua y la entrega continua.[18]
La entrega continua y DevOps tienen objetivos comunes y a menudo se usan en conjunto, pero hay diferencias sutiles.[19][20]
Si bien la entrega continua se centra en la automatización de los procesos de entrega de software, DevOps también se centra en el cambio de la organización para admitir una gran colaboración entre las muchas funciones involucradas.[19]
DevOps y la entrega continua comparten una base común en métodos ágiles y pensamiento ligero: cambios pequeños y frecuentes con valor focalizado para el cliente final.[21]
ArchOps es una extensión de DevOps que incrementa el nivel de abstracción al priorizar los artefactos de arquitectura de software por encima del código fuente para el despliegue y operación de soluciones de software.[22] ArchOps establece que los modelos de arquitectura son entidades de primera clase dentro del desarrollo, despliegue y operación de soluciones de software.
La aplicación de entrega continua y DevOps para el análisis de datos se ha denominado DataOps. DataOps busca integrar ingeniería de datos, integración de datos, calidad de datos, seguridad de datos y privacidad de datos con operaciones.[23] Aplica principios de DevOps, desarrollo ágil y el control estadístico del proceso, utilizado en la fabricación ajustada, para mejorar el tiempo de ciclo de extracción de valor del análisis de datos.[24]
DevSecOps es un aumento de DevOps para permitir que las prácticas de seguridad se integren en el enfoque de DevOps. El modelo tradicional de equipo de seguridad centralizado debe adoptar un modelo federado que permita a cada equipo de delivery tener en cuenta los controles de seguridad correctos en sus prácticas de DevOps.
Los objetivos de DevOps abarcan todo el proceso de entrega. Incluyen:
Los procesos simples se vuelven cada vez más estándar y dinámicos, utilizando un enfoque DevOps.[25] DevOps tiene como objetivo maximizar la previsibilidad, eficiencia, seguridad y mantenimiento de los procesos operativos. Muy a menudo, la automatización o robotización de procesos apoya este objetivo.
La integración de DevOps se enfoca en la entrega de productos, pruebas de usuario (UAT), pruebas continuas, pruebas de calidad, desarrollo de características y versiones de mantenimiento para mejorar la confiabilidad y la seguridad y proporcionar ciclos de desarrollo e implementación más rápidos. Muchas de las ideas (y personas) involucradas en DevOps provienen de la administración de sistemas empresariales y los movimientos ágiles de desarrollo de software.[26]
Este tipo de enfoque permite a las empresas digitales brindar alta disponibilidad y estabilidad a sus aplicaciones; esto se debe a que todas las partes de las aplicaciones (base de datos, back-end, front-end, etc.) son independientes y, si una de ellas falla, no implica que todo el sistema de información presente inconvenientes. En lugar de eso, los otros servicios continuarán trabajando mientras se restaura el componente afectado.[27] Los creadores de DevOps requieren de microservicios para optimizar sus desarrollos, y dejar atrás arquitecturas monolíticas, ya que la arquitectura de servicios se vuelve modular y segmentada para minimizar el riesgo y mejorar la forma de despliegue de las aplicaciones y sus componentes de integración con las diferentes capas.
|url=
incorrecta con autorreferencia (ayuda). Wikipedia (en inglés). Consultado el 3 de noviembre de 2017.
|url=
incorrecta con autorreferencia (ayuda). Wikipedia (en inglés). Consultado el 3 de noviembre de 2017.