DevOps

método de desarrollo de software

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]

Definiciones e historia editar

 
Ilustración que muestra DevOps como la intersección de desarrollo, operaciones de tecnología y calidad (QA)

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]

Herramientas DevOps editar

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]

  1. Código: desarrollo y revisión de código, herramientas de administración de código fuente, fusión de código
  2. Construcción: herramientas de integración continua, estado de compilación
  3. Prueba: herramientas de prueba continuas que brindan retroalimentación sobre los riesgos comerciales
  4. Paquete: repositorio de artefactos, distribución previa a la implementación de la aplicación
  5. Lanzamiento - gestión de cambios, aprobaciones de versiones, automatización de versiones
  6. Configurar - configuración y gestión de la infraestructura, Infraestructura como código
  7. Monitor: monitoreo del rendimiento de las aplicaciones, experiencia del usuario final

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]

Relación y otros enfoques editar

Agile editar

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]

Entrega Continua editar

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 editar

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.

DataOps editar

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 editar

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.

Objetivos editar

Los objetivos de DevOps abarcan todo el proceso de entrega. Incluyen:

  • Frecuencia de implementación mejorada;
  • Lanzamientos a producción más rápidos;
  • Baja tasa de errores en la generacíón de nuevas versiones;
  • Tiempo de entrega más corto entre versiones;
  • Tiempo de despliegue más rápido (en caso de que una nueva versión tenga inconsistencias).
  • Velocidad de reacción en caso de que una versión desplegada falle

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]

Microservicios editar

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.

Véase también editar

Referencias editar

  1. Loukides, Mike (7 de junio de 2012). «What is DevOps?». O'Reilly Radar (en inglés estadounidense). Consultado el 2 de noviembre de 2017. 
  2. «The Rise of DevOps». www.somic.org (en inglés estadounidense). Consultado el 2 de noviembre de 2017. 
  3. «DevOps Culture (Part 1) - IT Revolution». IT Revolution (en inglés estadounidense). 1 de mayo de 2012. Consultado el 2 de noviembre de 2017. 
  4. «DevOps mixing dev, ops, agile, cloud, open source and business — 451 CAOS Theory». blogs.the451group.com. Archivado desde el original el 14 de septiembre de 2015. Consultado el 2 de noviembre de 2017. 
  5. Debois, Patrick. «Agile 2008 Toronto: Agile Infrastructure and Operations Presentation». www.jedi.be. Consultado el 3 de noviembre de 2017. 
  6. «Devopsdays Ghent 2009». www.devopsdays.org. Consultado el 3 de noviembre de 2017. 
  7. «DevOpsDays». www.devopsdays.org (en inglés estadounidense). Consultado el 3 de noviembre de 2017. 
  8. «Surprise! Broad Agreement on the Definition of DevOps - DevOps.com». DevOps.com (en inglés estadounidense). 13 de mayo de 2015. Consultado el 3 de noviembre de 2017. 
  9. «Book sources» |url= incorrecta con autorreferencia (ayuda). Wikipedia (en inglés). Consultado el 3 de noviembre de 2017. 
  10. «DevOps Must Also Mean OpsDev - DevOps.com». DevOps.com (en inglés estadounidense). 27 de octubre de 2015. Consultado el 3 de noviembre de 2017. 
  11. Weinberger, Matt. «Microsoft study finds everybody wants DevOps but culture is a challenge». Computerworld (en inglés). Consultado el 3 de noviembre de 2017. 
  12. «Why DevOps Doesn’t Work for Enterprise Applications - DZone DevOps». dzone.com (en inglés). Consultado el 3 de noviembre de 2017. 
  13. Gartner Market Trends: DevOps – Not a Market, but Tool-Centric Philosophy That supports a Continuous Delivery Value Chain (Report). Gartner. 18 February 2015.
  14. dev2ops. «Integrating DevOps tools into a Service Delivery Platform (VIDEO) - dev2ops». dev2ops (en inglés estadounidense). Archivado desde el original el 8 de febrero de 2014. Consultado el 3 de noviembre de 2017. 
  15. «Exploring the ENTIRE DevOps Toolchain for (Cloud) Teams». InfoQ. Consultado el 3 de noviembre de 2017. 
  16. «DevOps Stack on a Shoestring Budget - DevOps.com». DevOps.com (en inglés estadounidense). 5 de febrero de 2016. Archivado desde el original el 27 de mayo de 2016. Consultado el 3 de noviembre de 2017. 
  17. «Stronger DevOps Culture with Puppet and Vagrant». Puppet (en inglés). Archivado desde el original el 29 de enero de 2016. Consultado el 3 de noviembre de 2017. 
  18. Best Practices in Change, Configuration and Release Management (Report). Gartner. 14 July 2010.
  19. a b «Book sources» |url= incorrecta con autorreferencia (ayuda). Wikipedia (en inglés). Consultado el 3 de noviembre de 2017. 
  20. «The Relationship Between Dev-Ops And Continuous Delivery: A Conversation With Jez Humble Of ThoughtWorks». Forrester (en inglés estadounidense). 9 de septiembre de 2011. Consultado el 3 de noviembre de 2017. 
  21. «We Need More Agile IT Now!». Dr. Dobb's. Consultado el 3 de noviembre de 2017. 
  22. Castellanos, Camilo; Correal, Dario (15 de septiembre de 2018). «Executing Architectural Models for Big Data Analytics». Lecture Notes in Computer Science 11048: 364-371. doi:10.1007/978-3-030-00761-4_24. 
  23. «From DevOps to DataOps, By Andy Palmer - Tamr Inc.». Tamr Inc. (en inglés estadounidense). 7 de mayo de 2015. Archivado desde el original el 12 de julio de 2018. Consultado el 3 de noviembre de 2017. 
  24. DataKitchen (15 de marzo de 2017). «How to Become a Rising Star with Data Analytics». data-ops. Consultado el 3 de noviembre de 2017. 
  25. «New Relic: What is DevOps - Explained». New Relic (en inglés). Consultado el 3 de noviembre de 2017. 
  26. «Agile Infrastructure». InfoQ. Consultado el 3 de noviembre de 2017. 
  27. «How to explain DevOps Benefits to your Boss (2018 Edition) | Clickittech». www.clickittech.com (en inglés estadounidense). Consultado el 9 de agosto de 2018. 

Enlaces externos editar