stringtranslate.com

DevOps

DevOps es una metodología en la industria del desarrollo de software y de TI. Utilizado como un conjunto de prácticas y herramientas, DevOps integra y automatiza el trabajo de desarrollo de software ( Dev ) y operaciones de TI ( Ops ) como un medio para mejorar y acortar el ciclo de vida de desarrollo de sistemas . [1] DevOps es complementario al desarrollo ágil de software ; Varios aspectos de DevOps surgieron de la forma ágil de trabajar.

La automatización es una parte importante de DevOps. Los programadores y arquitectos de software deberían utilizar " funciones de aptitud " para mantener su software bajo control. [2]

Definición

Aparte de ser una combinación multifuncional (y un acrónimo ) de los términos y conceptos de "desarrollo" y "operaciones", los académicos y profesionales no han desarrollado una definición universal para el término "DevOps". [a] [b] [c] [d] Muy a menudo, DevOps se caracteriza por principios clave: propiedad compartida, automatización del flujo de trabajo y retroalimentación rápida. Desde una perspectiva académica, Len Bass , Ingo Weber y Liming Zhu, tres investigadores en ciencias informáticas del CSIRO y el Instituto de Ingeniería de Software , sugirieron definir DevOps como "un conjunto de prácticas destinadas a reducir el tiempo entre la realización de un cambio en un sistema y el cambio se sitúa en la producción normal, garantizando al mismo tiempo una alta calidad". [6] Sin embargo, el término se utiliza en múltiples contextos. En su forma más exitosa, DevOps es una combinación de prácticas específicas, cambio cultural y herramientas. [7]

Historia

A finales de los 80 y principios de los 90 comenzaron a aparecer propuestas para combinar metodologías de desarrollo de software con conceptos de implementación y operaciones. [8]

Alrededor de 2007 y 2008, aquellos dentro de las comunidades de desarrollo de software y TI expresaron su preocupación de que la separación entre las dos industrias, donde uno escribía y creaba software completamente separado de aquellos que implementaban y respaldaban el software, estaba creando un nivel fatal de disfunción dentro de la industria. industria. [9]

En 2009, se celebró la primera conferencia denominada DevOps Days en Gante , Bélgica . La conferencia fue fundada por el consultor, director de proyectos y practicante ágil belga Patrick Debois. [10] [11] La conferencia ahora se ha extendido a otros países. [12]

En 2012, Alanna Brown en Puppet Labs publicó por primera vez un informe llamado "Estado de DevOps" . [13] [14]

A partir de 2014, Nicole Forsgren , Gene Kim, Jez Humble y otros publicaron el informe anual sobre el estado de DevOps . Afirmaron que la adopción de DevOps se estaba acelerando. [15] [16] También en 2014, Lisa Crispin y Janet Gregory escribieron el libro More Agile Testing, que contiene un capítulo sobre pruebas y DevOps. [17] [18]

En 2016, las métricas de DORA para el rendimiento (frecuencia de implementación, tiempo de entrega de cambios) y estabilidad (tiempo medio de recuperación, tasa de fallas de cambios) se publicaron en el informe Estado de DevOps. [13] Sin embargo, la metodología y las métricas de la investigación fueron criticadas por los expertos. [19] [20] [21] [22] En respuesta a estas críticas, el informe sobre el estado de DevOps de 2023 [23] publicó cambios que actualizaron la métrica de estabilidad "tiempo medio de recuperación" a "tiempo de recuperación de implementación fallida" reconociendo la confusión. la primera métrica ha causado. [24]

Relación con otros enfoques

Muchas de las ideas fundamentales para las prácticas de DevOps están inspiradas o reflejan otras prácticas bien conocidas, como el ciclo Planificar-Hacer-Verificar-Actuar de Lean y Deming , hasta el estilo Toyota y el enfoque ágil de desglosar componentes y tamaños de lotes. [25] Contrariamente al enfoque prescriptivo "de arriba hacia abajo" y al marco rígido de ITIL en la década de 1990, DevOps es "de abajo hacia arriba" y flexible, ya que fue creado por ingenieros de software para sus propias necesidades. [26]

Ágil

Las motivaciones de lo que se ha convertido en DevOps moderno y varias prácticas estándar de DevOps, como la creación y prueba automatizadas, la integración continua y la entrega continua , se originaron en el mundo ágil, que data (informalmente) de la década de 1990 y formalmente de 2001. Los equipos de desarrollo ágiles utilizan métodos como la programación extrema no podrían "satisfacer al cliente mediante la entrega temprana y continua de software valioso" [27] a menos que asumieran la responsabilidad de las operaciones y la infraestructura de sus aplicaciones, automatizando gran parte de ese trabajo. Debido a que Scrum surgió como el marco Agile dominante a principios de la década de 2000 y omitió las prácticas de ingeniería que formaban parte de muchos equipos Agile, el movimiento para automatizar operaciones y funciones de infraestructura se separó de Agile y se expandió a lo que se ha convertido en DevOps moderno. Hoy en día, DevOps se centra en la implementación de software desarrollado, ya sea que se desarrolle utilizando metodologías orientadas a Agile u otras metodologías.

ArchOps

ArchOps presenta una extensión para la práctica de DevOps, a partir de artefactos de arquitectura de software , en lugar de código fuente, para la implementación de operaciones. [28] ArchOps afirma que los modelos arquitectónicos son entidades de primera clase en el desarrollo, implementación y operaciones de software.

Integración y entrega continua (CI/CD)

La automatización es un principio fundamental para lograr el éxito de DevOps y CI/CD es un componente crítico. [29] Además, la colaboración y la comunicación mejoradas entre y dentro de los equipos ayudan a lograr un tiempo de comercialización más rápido , con riesgos reducidos. [30]

DevOps móvil

Mobile DevOps es un conjunto de prácticas que aplica los principios de DevOps específicamente al desarrollo de aplicaciones móviles. DevOps tradicional se centra en optimizar el proceso de desarrollo de software en general, pero el desarrollo móvil tiene sus propios desafíos únicos que requieren un enfoque personalizado. [31] Mobile DevOps no es simplemente una rama de DevOps específica para el desarrollo de aplicaciones móviles, sino una extensión y reinterpretación de la filosofía DevOps debido a requisitos muy específicos del mundo móvil.

Ingeniería de confiabilidad del sitio

En 2003, Google desarrolló la ingeniería de confiabilidad del sitio (SRE), un enfoque para lanzar nuevas funciones continuamente en sistemas de alta disponibilidad a gran escala manteniendo al mismo tiempo una experiencia de usuario final de alta calidad. [32] Si bien SRE es anterior al desarrollo de DevOps, generalmente se los considera relacionados entre sí. Algunos de los autores originales de la disciplina consideran SRE como una implementación de DevOps. [33]

Sistema de producción Toyota, pensamiento lean, kaizen

El sistema de producción de Toyota, también conocido bajo el acrónimo TPS, fue la inspiración del pensamiento lean con su enfoque en la mejora continua , kaizen , flujo y lotes pequeños. El principio del cordón andon para crear retroalimentación rápida, enjambrar y resolver problemas proviene del TPS. [34] [35]

DevSecOps, desplazando la seguridad hacia la izquierda

DevSecOps es una mejora de DevOps para permitir que las prácticas de seguridad se integren en el enfoque de DevOps. A diferencia del modelo tradicional de equipo de seguridad centralizado, cada equipo de entrega está capacitado para incluir los controles de seguridad correctos en la entrega de su software. Las prácticas y pruebas de seguridad se realizan en una etapa más temprana del ciclo de vida de desarrollo, de ahí el término " desplazamiento a la izquierda ". La seguridad se prueba en tres áreas principales: estática, composición de software y dinámica.

La verificación del software de forma estática mediante pruebas de seguridad de aplicaciones estáticas (SAST) es una prueba de caja blanca con especial enfoque en la seguridad. Dependiendo del lenguaje de programación, se necesitan diferentes herramientas para realizar dicho análisis de código estático. Se analiza la composición del software, especialmente las bibliotecas, y se compara la versión de cada componente con las listas de vulnerabilidades publicadas por el CERT y otros grupos de expertos. Al entregar software a los clientes, se centra en las licencias de biblioteca y su correspondencia con la licencia del software distribuido, especialmente las licencias copyleft .

En las pruebas dinámicas, también llamadas pruebas de caja negra , el software se prueba sin conocer sus funciones internas. En DevSecOps, esta práctica puede denominarse prueba dinámica de seguridad de aplicaciones (DAST) o prueba de penetración. El objetivo es la detección temprana de defectos, incluidos los scripts entre sitios y las vulnerabilidades de inyección SQL . Los tipos de amenazas son publicados por el proyecto de seguridad de aplicaciones web abiertas , por ejemplo su TOP10, [36] y por otros organismos.

DevSecOps también se ha descrito como un cambio cultural que implica un enfoque holístico para producir software seguro mediante la integración de educación en seguridad, seguridad por diseño y automatización de la seguridad. [37]

Cambio cultural

Las iniciativas DevOps pueden crear cambios culturales en las empresas [38] al transformar la forma en que las operaciones , los desarrolladores y los evaluadores colaboran durante los procesos de desarrollo y entrega. [39] Lograr que estos grupos trabajen de manera cohesiva es un desafío crítico en la adopción empresarial de DevOps. [40] [41] DevOps tiene tanto que ver con la cultura como con la cadena de herramientas. [42]

Microservicios

Aunque en principio es posible practicar DevOps con cualquier estilo arquitectónico, el estilo arquitectónico de microservicios se está convirtiendo en el estándar para construir sistemas implementados continuamente. Un servicio de tamaño pequeño permite que surja la arquitectura de un servicio individual a través de una refactorización continua. [43]

Automatización de DevOps

También respalda la coherencia, la confiabilidad y la eficiencia dentro de la organización y, por lo general, está habilitado mediante un repositorio de código compartido o control de versiones. Como plantea la hipótesis del investigador de DevOps Ravi Teja Yarlagadda: "A través de DevOps, se supone que todas las funciones se pueden llevar a cabo, controlar y gestionar en un lugar central utilizando un código simple". [44]

Automatización con control de versiones.

Muchas organizaciones utilizan el control de versiones para impulsar las tecnologías de automatización de DevOps, como máquinas virtuales , contenedorización (o virtualización a nivel de sistema operativo ) y CI/CD . El documento "DevOps: desarrollo de una cadena de herramientas en el ámbito bancario" señala que con equipos de desarrolladores trabajando en el mismo proyecto, "todos los desarrolladores necesitan realizar cambios en la misma base de código y, a veces, editar incluso los mismos archivos. Para un trabajo eficiente, hay Tiene que ser un sistema que ayude a los ingenieros a evitar conflictos y conservar el historial del código base", [45] con el sistema de control de versiones Git y la plataforma GitHub como ejemplos.

GitOps

GitOps evolucionó a partir de DevOps. El estado específico de la configuración de implementación está controlado por la versión . Debido a que el control de versiones más popular es Git , el enfoque de GitOps lleva el nombre de Git . Los cambios en la configuración se pueden gestionar mediante prácticas de revisión de código y se pueden revertir mediante el control de versiones. Básicamente, se realiza un seguimiento de todos los cambios en un código, se marcan como favoritos y se puede facilitar la realización de actualizaciones en el historial. Como explica Red Hat , "la visibilidad del cambio significa la capacidad de rastrear y reproducir problemas rápidamente, mejorando la seguridad general". [46]

Ver también

Notas

  1. ^ Dyck y col. (2015) "Hasta donde sabemos, no existe una definición uniforme para los términos ingeniería de lanzamiento y DevOps. Como consecuencia, muchas personas usan sus propias definiciones o confían en otras, lo que genera confusión sobre esos términos". [3]
  2. ^ Jabbari y col. (2016) "Los resultados de la investigación de este estudio mostraron la necesidad de una definición, ya que los estudios individuales no definen consistentemente DevOps". [4]
  3. ^ Erich y otros. (2017) "Nos dimos cuenta de que existen varias lagunas en el estudio de DevOps: no hay consenso sobre qué conceptos cubre DevOps ni cómo se define DevOps". [5]
  4. ^ Erich y otros. (2017) "Descubrimos que existe poco acuerdo sobre las características de DevOps en la literatura académica". [5]

Referencias

  1. ^ Courtemanche, Meredith; Mel, Emily; Gills, Alexander S. "¿Qué es DevOps? La guía definitiva". Objetivo tecnológico . Consultado el 22 de enero de 2023 .
  2. ^ Fundamentos de la arquitectura de software: un enfoque de ingeniería . Medios O'Reilly. 2020. ISBN 978-1492043454.
  3. ^ Dyck, Andrej; Penners, Ralf; Lichter, Horst (19 de mayo de 2015). "Hacia definiciones para ingeniería de lanzamiento y DevOps". 2015 IEEE/ACM 3er Taller Internacional sobre Ingeniería de Liberación . IEEE . pag. 3. doi :10.1109/RELENG.2015.10. ISBN 978-1-4673-7070-7. S2CID  4659735.
  4. ^ Jabbari, Ramtin; bin Ali, Nauman; Petersen, Kai; Tanveer, Binish (mayo de 2016). "¿Qué es DevOps?: Un estudio de mapeo sistemático sobre definiciones y prácticas". Actas del taller científico de 2016 . Asociación para Maquinaria de Computación .
  5. ^ ab Erich, FMA; Amrit, C.; Daneva, M. (junio de 2017). "Un estudio cualitativo del uso de DevOps en la práctica" (PDF) . Revista de software: evolución y proceso . 29 (6): e1885. doi :10.1002/smr.1885. S2CID  35914007.
  6. ^ Bajo, Len; Weber, Ingo; Zhu, Liming (2015). DevOps: la perspectiva de un arquitecto de software . Addison-Wesley. ISBN 978-0134049847.
  7. ^ Muñoz, Mirna; Negrete Rodríguez, Mario (abril 2021). "Una guía para implementar o reforzar un enfoque DevOps en las organizaciones: un estudio de caso". {{cite journal}}: Citar diario requiere |journal=( ayuda )
  8. ^ Chapman, M., Gatti, N: Un modelo de ciclo de vida del servicio, Actas de TINA '93, págs. I-205 – I-215, septiembre de 1993.
  9. ^ Atlassiano. "Historia de DevOps". Atlassiano . Consultado el 23 de febrero de 2023 .
  10. ^ Mezak, Steve (25 de enero de 2018). "Los orígenes de DevOps: ¿Qué hay en un nombre?". devops.com . Consultado el 6 de mayo de 2019 .
  11. ^ Debois, Patrick (9 de octubre de 2008). "Ágil 2008 Toronto". "Suficiente información documentada" . Consultado el 12 de marzo de 2015 .
  12. ^ Debois, Patricio. "Días de DevOps". Jornadas DevOps . Consultado el 31 de marzo de 2011 .
  13. ^ ab Alana Brown; Nicole Forsgren; Jez Humilde; Nigel Kersten; Gene Kim (2016). "Informe sobre el estado de DevOps de 2016" (PDF) . Puppet Labs, DORA (DevOps Research . Consultado el 24 de abril de 2024 .
  14. ^ "Marioneta - Alanna Brown". Laboratorios de marionetas . Consultado el 27 de abril de 2019 .
  15. ^ Nicole Forsgren; Gene Kim; Nigel Kersten; Jez humilde (2014). "Informe sobre el estado de DevOps de 2014" (PDF) . Puppet Labs, IT Revolution Press y ThoughtWorks . Consultado el 24 de abril de 2024 .
  16. ^ "Informe sobre el estado de DevOps de 2015" (PDF) . Laboratorios de marionetas, Pwc, IT Revolution Press. 2015 . Consultado el 24 de abril de 2024 .
  17. ^ "Pruebas más ágiles" (PDF) . Octubre de 2014 . Consultado el 6 de mayo de 2019 .
  18. ^ Crispín, Lisa; Gregory, Janet (octubre de 2014). Pruebas más ágiles. Addison-Wesley. ISBN 9780133749571. Consultado el 6 de mayo de 2019 .
  19. ^ Turner, Graham (20 de noviembre de 2023). "Informe: los ingenieros de software enfrentan reacciones violentas por informar irregularidades". DÍGITO . Consultado el 5 de enero de 2024 .
  20. ^ Saran, acantilado. "Los ingenieros de software se preocupan por hablar - Computer Weekly". ComputerWeekly.com . Consultado el 5 de enero de 2024 .
  21. ^ "El 75% de los ingenieros de software enfrentaron represalias la última vez que denunciaron irregularidades: ETHRWorldSEA". ETHRWorld.com .
  22. ^ Cummins, acebo. "Holly Cummins en X". X.com . Consultado el 5 de enero de 2024 .
  23. ^ DeBellis, Derek; Luis, Amanda; Villalba, Daniella; Farley, Dave. "Informe sobre el estado de DevOps 2023". Investigación y evaluación de Google Cloud DevOps . Consultado el 24 de abril de 2024 .
  24. ^ DeBellis, Derek; Harvey, Nathan. "Informe sobre el estado de DevOps 2023: la cultura lo es todo". Blog de la nube de Google . Consultado el 24 de abril de 2024 .
  25. ^ Klein, Brandon Thorin (1 de mayo de 2021). "DevOps: una comprensión concisa de la filosofía y la ciencia de DevOps". Osti.gov . doi :10.2172/1785164. OSTI  1785164. S2CID  236606284.
  26. ^ "La historia y evolución de DevOps | Tom Geraghty". 5 de julio de 2020 . Consultado el 29 de noviembre de 2020 .
  27. ^ "Principios detrás del Manifiesto Ágil". agilemanifesto.org . Consultado el 6 de diciembre de 2020 .
  28. ^ Castellanos, Camilo; Correal, Darío (15 de septiembre de 2018). "Ejecución de modelos arquitectónicos para análisis de Big Data". Arquitectura de software . Apuntes de conferencias sobre informática. vol. 11048. págs. 364–371. doi :10.1007/978-3-030-00761-4_24. ISBN 978-3-030-00760-7.
  29. ^ Humilde, Jez; Farley, David (2011). Entrega continua: lanzamientos de software confiables a través de la automatización de compilación, prueba e implementación . Pearson Education Inc. ISBN 978-0-321-60191-9.
  30. ^ Chen, Lianping (2015). "Entrega continua: enormes beneficios, pero también desafíos". Software IEEE . 32 (2): 50–54. doi :10.1109/MS.2015.27. S2CID  1241241.
  31. ^ Toma, Rohin; Modi, Jhalak (2018). Mobile DevOps: ofrezca integración e implementación continuas dentro de sus aplicaciones móviles . Publicación de paquetes. págs. 12-18. ISBN 9781788296243.
  32. ^ Beyer, Betsy; Jones, Chris; Petoff, Jennifer; Murphy, Niall Richard (abril de 2016). Ingeniería de confiabilidad del sitio . Medios O'Reilly. ISBN 978-1-4919-2909-4.
  33. ^ Dave Harrison (9 de octubre de 2018). "Entrevista con Betsy Beyer, Stephen Thorne de Google" . Consultado el 24 de julio de 2024 .
  34. ^ Analizando el ADN de DevOps, Brent Aaron Reed, Willy Schaub, 14 de noviembre de 2018.
  35. ^ Gene Kim; Patricio Debois; John Willis; Jezz humilde (2016). El manual de DevOps: cómo crear agilidad, confiabilidad y seguridad de primer nivel en organizaciones tecnológicas .
  36. ^ "TOP10 DE OWASP". Archivado desde el original el 8 de junio de 2023 . Consultado el 8 de junio de 2023 .
  37. ^ Wilson, Glenn (diciembre de 2020).'DevSecOps: una guía para líderes para producir software seguro con flujo, retroalimentación y mejora continua comprometidos'. Repensar la prensa. ISBN 978-1781335024.
  38. ^ Análisis de tecnologías emergentes: DevOps es un cambio cultural, no una tecnología (informe). Garner.
  39. ^ Loukides, Mike (7 de junio de 2012). "¿Qué es DevOps?". Medios O'Reilly .
  40. ^ "Glosario de TI de Gartner: devops". Gartner . Consultado el 30 de octubre de 2015 .
  41. ^ Jones, Esteban; Noppen, Joost; Lettice, Fiona (21 de julio de 2016). Actas del segundo taller internacional sobre DevOps consciente de la calidad - QUDOS 2016 (PDF) . págs. 7-11. doi :10.1145/2945408.2945410. ISBN 9781450344111. S2CID  515140.
  42. ^ Mandi Walls (25 de septiembre de 2015). "Construyendo una cultura DevOps". O'Reilly.
  43. ^ Chen, Lianping; Ali Babar, Mahoma (2014). "Conferencia IEEE/IFIP 2014 sobre arquitectura de software". La 11ª Conferencia de Trabajo IEEE/IFIP sobre Arquitectura de Software (WICSA 2014) . IEEE. págs. 195-204. doi :10.1109/WICSA.2014.45. ISBN 978-1-4799-3412-6.
  44. ^ Teja Yarlagadda, Ravi (9 de marzo de 2021). "DevOps y sus prácticas". SSRN  3798877.
  45. ^ Morisio, Maurizio (16 de abril de 2021). DevOps: desarrollo de una cadena de herramientas en el ámbito bancario. Politecnico di Torino (tesis laureada) . Consultado el 16 de agosto de 2021 .
  46. ^ "¿Qué es GitOps?". www.redhat.com . Consultado el 30 de marzo de 2023 .

Otras lecturas