¿Qué es el ciclo de vida de DevOps?

Definición del ciclo de vida de DevOps

El ciclo de vida de DevOps es un proceso continuo e iterativo para el desarrollo y la implementación de software, que consta de ocho fases clave: planificar, codificar, crear, probar, lanzar, implementar, operar y monitorizar.

El proceso de DevOps describe cómo el software pasa de la ideación a la producción y el feedback, y vuelve a la ideación, con los equipos de desarrollo y operaciones trabajando como una única unidad colaborativa. Comprende un flujo integral de prácticas y flujos de trabajo de automatización que los equipos de DevOps pueden utilizar para planificar, desarrollar, ejecutar y optimizar los lanzamientos de software.

Las fases del ciclo de vida de DevOps suelen representarse como parte de un "bucle infinito" con las actividades de desarrollo a la izquierda y las actividades de operaciones a la derecha, conectadas en una ruta continua.

Bucle infinito de DevOps

En el lado del bucle "planificar → codificar → crear → probar", los equipos refinan los requisitos de software en pequeñas historias de usuario, confirman el código en los repositorios de código de forma incremental (pero con frecuencia) y utilizan herramientas de integración continua (CI) para crear y probar automáticamente cada cambio de código.

En el lado de "lanzar → implementar → operar → monitorizar", la automatización de los flujos de trabajo impulsa los cambios a través de los entornos de TI y hacia los usuarios. Mientras tanto, las herramientas de observabilidad rastrean el estado del sistema, el rendimiento del software y el comportamiento de los usuarios para detectar problemas y medir el impacto global.

El bucle infinito enfatiza que cada fase del ciclo de vida de DevOps influye en las demás. Los equipos comparten trabajo, conocimiento y responsabilidades, en lugar de pasarlos de un silo a otro. El bucle también ilustra cómo los flujos de trabajo de DevOps pueden agilizar los procesos de entrega y optimización de software. Lo ideal es que cada ciclo sea más rápido, seguro y automatizado que el anterior.

Como tal, el ciclo de vida de DevOps permite a las empresas alinear personas, procesos y herramientas para ofrecer aplicaciones de software de alta calidad y experiencias de usuario sin fricciones.

Fases del ciclo de vida de DevOps

Cada fase del ciclo de vida de DevOps informa y se superpone con las demás fases, pero cada una tiene un propósito claro y un conjunto de actividades asociadas. Las fases incluyen:

Plan

En la fase de planificación, los equipos de DevOps traducen las necesidades empresariales y el feedbacl de los usuarios en planes de trabajo claros, priorizados y con plazos y flujos de trabajo de gestión de proyectos que guían las actividades de desarrollo y operaciones en las fases posteriores. Esta fase aclara la visión, el alcance y la hoja de ruta de un lanzamiento de software o de la construcción de un sistema para que todos entiendan lo que están creando, por qué es importante y cómo medirán el éxito.

Las actividades de planificación típicas pueden incluir:

  • Refinar y clasificar los retrasos de los productos (como nuevas características, correcciones de errores y deuda técnica).
  • Analizar la entrada de las partes interesadas para captar las necesidades y restricciones de los usuarios.
  • Dividir el trabajo en tareas, historias de usuario (descripciones de las características del software escritas desde la perspectiva del usuario) y épicas (historias de usuario demasiado amplias para abordarlas en una sola iteración del software) para estimar los requisitos de recursos e identificar las dependencias.
  • Definir indicadores clave de rendimiento (KPI), indicadores de nivel de servicio (SLI) y objetivos de nivel de servicio, para que las fases posteriores sepan qué es "bueno".

Código

Durante la fase de codificación, los desarrolladores convierten la infraestructura planificada y los requisitos de software en código fuente funcional con miras a la garantía de calidad y las operaciones futuras. No se trata solo de escribir código nuevo. También se trata de configurar todos los componentes necesarios para los procesos automatizados de compilación, prueba, integración e implementación más adelante en el pipeline.

El proceso de codificación implica:

  • Escribir código para implementar nuevas funcionalidades, realizar correcciones y abordar necesidades no funcionales (por ejemplo, seguridad).
  • Enviar pequeños cambios de código incrementales a repositorios compartidos dentro de los sistemas de control de versiones (como Git y GitHub) para su revisión.
  • Probar los commits de código para que puedan crearse e integrarse sin problemas en la base de código.
  • Añadir o actualizar pruebas unitarias y de componentes automatizadas para que futuras ejecuciones de CI puedan validar automáticamente el comportamiento del código tras cada commit.

Build

En la fase de construcción, los cambios en el código fuente se compilan, validan y empaquetan automáticamente en artefactos de construcción desplegables. Las herramientas DevOps obtienen los cambios de código del sistema de control de versiones, ejecutan comprobaciones automatizadas y generan paquetes (como imágenes de contenedores Docker y binarios compilados) que están versionados y listos para su implementación o para realizar pruebas adicionales.

Más específicamente:

  • Los scripts automatizados y las herramientas de compilación compilan el código fuente, resuelven y descargan dependencias (incluyendo bibliotecas, marcos y módulos) y vinculan todo en un ejecutable o imagen.
  • Las pruebas automatizadas básicas se ejecutan como parte de la compilación. Si la construcción falla, se marca como rota y permanece en la fase de construcción. Si la versión es correcta, se avanza a la siguiente fase del ciclo de vida.

Prueba

La fase de prueba, también llamada validación, tiene como objetivo ayudar a garantizar que un cambio de código se comporte como se espera en condiciones reales. Los equipos de DevOps utilizan una serie de herramientas de prueba avanzadas para validar continuamente que cada cambio es funcional, seguro y eficaz antes de que avance en el pipeline o llegue a producción.

Normalmente, los procesos de pruebas están estrechamente integrados en el pipeline de integración continua/entrega continua (CI/CD), por lo que los desarrolladores obtienen feedback rápido y frecuente sobre la calidad del código.

El objetivo principal de las pruebas de software es identificar los defectos lo antes posible (cuando son más baratos y fáciles de corregir) e impedir que las compilaciones defectuosas avancen hacia el lanzamiento. Las pruebas también verifican que los nuevos cambios no romperán la funcionalidad existente, ayudando a los desarrolladores a mantener la estabilidad general del sistema a medida que evolucionan los productos de software.

Lanzamiento

La fase de lanzamiento proporciona una puerta de enlace controlada entre la "compilación probada" y la "implementación en vivo", en la que los cambios en el código se aprueban para la producción y se hacen visibles para los usuarios objetivo. Los equipos de desarrollo preparan código probado para su implementación empaquetándolo, validando que está listo para producción y coordinando cómo y cuándo se moverá a entornos de staging y producción.

Los procesos de lanzamiento comunes incluyen:

  • Realizar comprobaciones finales de calidad, seguridad y conformidad con criterios de aceptación predefinidos.
  • Adjuntar artefactos de compilación a versiones de lanzamiento específicas y crear registros de cambios y documentación.
  • Identificar las vulnerabilidades en la próxima versión y planificar estrategias de mitigación (como las reversiones) para abordar los problemas.

Implementar

Durante la fase de implementación, el código probado y empaquetado se entrega automáticamente a los entornos de destino (staging o producción). Las herramientas de gestión de la configuración e infraestructura como código (IaC), que utilizan archivos de configuración y lenguajes de codificación descriptiva de alto nivel para automatizar el aprovisionamiento y la orquestación de la infraestructura para las versiones de software, ayudan a los equipos de DevOps a garantizar que el software se entrega de forma fiable y repetible.

La implementación suele estar impulsada por plataformas de entrega continua (CD) y contenerización (Kubernetes, por ejemplo) que orquestan los procesos de implementación de software (extraer artefactos de compilación, actualizar contenedores y binarios, ejecutar pruebas finales y cambiar el tráfico a la nueva versión).

Los equipos de DevOps suelen utilizar diferentes estrategias de implementación para asegurarse de que las nuevas versiones se introducen de forma gradual y se pueden revertir rápidamente, si fuera necesario.

Con la implementación azul-verde, por ejemplo, las aplicaciones se implementan en dos entornos de producción paralelos, y cada entorno ejecuta una versión diferente de la aplicación. El entorno "azul" ejecuta la aplicación activa, mientras que el entorno "verde" se encarga de las pruebas y la validación de las nuevas versiones de la aplicación. Cuando pasa la nueva iteración, el entorno verde se convierte en el entorno activo y el azul permanece inactivo, pero disponible, para gestionar las reversiones.

Con las implementaciones canary, los equipos implementan aplicaciones en un pequeño subconjunto de usuarios, o "canaries", para la monitorización y las pruebas del entorno en vivo antes de implementar la aplicación en toda la base de usuarios.

Al igual que los canarios se usaban para advertir a los mineros de carbón sobre gases tóxicos, los despliegues de canarios alertan a los equipos de desarrollo sobre defectos en la aplicación sin arriesgarse a problemas de rendimiento a gran escala que afecten a todos los usuarios. Si la aplicación funciona bien con el grupo canario, los desarrolladores la implementan progresivamente en grupos más grandes hasta que esté disponible para todos los usuarios.

Operar

La fase de operación se centra en mantener los sistemas activos estables, eficaces, seguros y disponibles para usuarios reales bajo cargas de trabajo reales. No es el "final" del ciclo de vida de la aplicación. Más bien, devuelve los datos y la información a las etapas anteriores.

En esta fase, los equipos de DevOps:

  • Ejecutan y supervisan las aplicaciones en el entorno de producción, incluidos los servicios de infraestructura y dependencias asociadas.
  • Gestionan la planificación de la capacidad y los procesos de escalado para que los flujos de tráfico no se degraden con el tiempo.
  • Detectan y clasifican los problemas, abordan los cuellos de botella en el rendimiento y aplican correcciones de errores o reversiones según sea necesario.
  • Aplican parches de seguridad y prácticas de gobierno (como controles de acceso y auditorías de cumplimiento) para optimizar la seguridad del sistema.

Monitorizar

En la fase de monitorización, los equipos observan continuamente las aplicaciones e infraestructuras en producción para detectar problemas, comprender el comportamiento real del usuario y enviar perspectivas sobre el desarrollo y las operaciones.

Los equipos de DevOps recopilan datos de observabilidad (métricas, registros y rastreos) y otra información de aplicaciones, servidores, redes y bases de datos para realizar un seguimiento del rendimiento en tiempo real. Establecen umbrales y alertas para que anomalías (como una alta latencia de la API o patrones de acceso sospechosos) activen notificaciones para una investigación y corrección rápidas.

Si las herramientas de monitorización detectan un defecto de software o un problema de usabilidad, envían la información a los rastreadores de problemas y a los backlogs, para que los equipos puedan ajustar las iteraciones posteriores.​

DevSecOps: la "novena fase"

El bucle infinito no incluye explícitamente una fase "segura", pero los pipelines de DevOps suelen implicar prácticas y tecnologías que incorporan medidas de seguridad a lo largo del ciclo de vida.

Ahí es donde DevSecOps entra en el marco.

DevSecOps (abreviatura de desarrollo, seguridad y operaciones) es una práctica de desarrollo de software que desplaza los protocolos de seguridad de la derecha (final) a la izquierda (comienzo) del ciclo de vida del desarrollo. Con shift-left, los desarrolladores implementan protocolos de seguridad (como cifrado de datos, validación de entrada, controles de acceso basados en roles y autenticación multifactor) mientras escriben código.

DevSecOps también incorpora actividades de "shift right", extendiendo las prácticas de seguridad a los entornos de producción posteriores a la implementación. Las prácticas de shift-right priorizan la monitorización, las pruebas y la protección de las aplicaciones en tiempo de ejecución en condiciones reales. Complementan la seguridad de shift-left creando un bucle de feedback continuo en el que los problemas de seguridad descubiertos en producción informan de las fases de desarrollo anteriores.

Utilizadas juntas, la seguridad shift-left y shift-right permiten a las empresas integrar controles de seguridad en cada fase del ciclo de vida de DevOps. Una estrategia de seguridad dual, de tipo "shift-everywhere", ayuda a los equipos de DevOps a implementar tanto la prevención temprana como la detección y respuesta a amenazas posteriores a la implementación, mejorando la posición de seguridad general e impulsando la mejora continua.

DevOps vs. cascada vs. ágil

El ciclo de vida de DevOps representa una evolución de enfoques más tradicionales de desarrollo de software, como cascada y ágil.

Proyecto de desarrollo en cascada

El desarrollo en cascada es una metodología de desarrollo que sigue un proceso lineal y secuencial en el que cada fase del ciclo de vida (recopilación de requisitos, diseño, despliegue, pruebas, implementación y mantenimiento) debe completarse y aprobarse por completo antes de que comience la siguiente. Prioriza la planificación proactiva, la documentación detallada y la previsibilidad, lo que la hace adecuada para proyectos con requisitos estables y bien definidos y pocos cambios previstos (por ejemplo, proyectos de gobierno y relacionados con la salud).

El modelo en cascada ofrece un fuerte control de procesos, pero los equipos de desarrollo están aislados. Hacer cambios una vez que una fase ha terminado es costoso y lleva mucho tiempo. En resumen, la cascada tiene problemas de agilidad.

Ágil es una metodología de desarrollo iterativa que ofrece incrementos pequeños y funcionales de trabajo a través de ciclos cortos (conocidos como "sprints"). Prioriza la planificación adaptativa, la entrega temprana y la mejora continua basada en el feedback de las partes interesadas, lo que permite a los equipos de desarrollo responder rápidamente a los requisitos y condiciones cambiantes.

Proceso de desarrollo ágil

Las metodologías ágiles pueden resultar eficaces en entornos dinámicos, como las empresas emergentes. Mitigan la rigidez lineal de los enfoques en cascada con equipos interfuncionales que priorizan la funcionalidad del software por encima de la documentación completa. Sin embargo, los enfoques ágiles se centran en el proceso de desarrollo de software, con exclusión de los procesos de operaciones.  

DevOps ofrece una práctica cultural y técnica moderna que integra los equipos de desarrollo y operaciones, aprovechando las herramientas de CI/CD (como GitLab) para la automatización de pruebas, implementación y monitorización. A diferencia de las prácticas ágiles y en cascada, las prácticas de DevOps pueden ayudar a las empresas a acelerar los lanzamientos de software y a crear aplicaciones que mantengan su rendimiento y agilidad en las arquitecturas de microservicios y los entornos de TI basados en la nube actuales y altamente dinámicos.

Las 7 C (procesos continuos) del ciclo de vida de DevOps

Las 7 C proporcionan otra forma de conceptualizar el ciclo de vida de DevOps como el producto de siete procesos continuos.

1. Desarrollo continuo

El desarrollo continuo implica planificar y codificar software, y los desarrolladores dividen el proceso en iteraciones más pequeñas y manejables. Los desarrolladores almacenan los cambios en sistemas de control de versiones y alinean continuamente su código con los requisitos de las partes interesadas, lo que ayuda a los equipos a minimizar el riesgo y adaptarse rápidamente a los cambios.

2. Integración continua

La integración continua fusiona los cambios de código de varios desarrolladores en un repositorio compartido, activando automáticamente las compilaciones después de cada confirmación. Permite a los equipos de DevOps mejorar continuamente sus aplicaciones de software, recibir feedback coherente, detectar y corregir errores antes de que afecten al rendimiento del software y ofrecer software de mayor calidad en calendarios más predecibles.

3. Pruebas continuas

Las pruebas continuas permiten a los desarrolladores iniciar automáticamente reseñas del código y protocolos de pruebas (como las pruebas unitarias). Utiliza herramientas de prueba para examinar continuamente el código integrado en busca de errores, fallos de usabilidad y problemas de rendimiento. Las pruebas continuas proporcionan a los desarrolladores el feedback que necesitan para mejorar el software sin retrasar el ciclo de vida.

4. Entrega e implementación continuas

La entrega continua automatiza la entrega de aplicaciones y cambios validados en la base de código (actualizaciones, correcciones de errores e incluso nuevas características) a todos los entornos de infraestructura necesarios para realizar más pruebas. Las compilaciones de código que superan todas las pruebas de integración y las etapas de validación se empaquetan y entregan a los repositorios de código, que centralizan y almacenan los paquetes de código en un estado desplegable.

La implementación continua lleva la entrega un paso más allá al implementar automáticamente cada cambio aprobado en producción, sin intervención humana. Cuando las actualizaciones de código se prueban, validan y aprueban, las herramientas de implementación continua mueven el artefacto de software a un entorno de ensayo de preproducción o a servidores públicos y plataformas de distribución (como tiendas de aplicaciones) donde los usuarios pueden acceder a él.

5. Feedback continuo

El feedback continuo requiere que los equipos de DevOps extraigan perspectivas de datos de monitorización, experiencia y entrada de las partes interesadas para refinar el backlog del producto y determinar la urgencia de cada mejora.

6. Monitorización continua

La monitorización continua realiza un seguimiento del rendimiento de las aplicaciones y la infraestructura en tiempo real, identificando los problemas de forma proactiva para mantener la fiabilidad del sistema. La mayoría de las herramientas de monitorización visualizan los datos de los pipelines de CI/CD mediante el uso de paneles de control, que aumentan la visibilidad de la pila tecnológica y permiten optimizaciones basadas en datos.

7. Operaciones continuas

Las herramientas de automatización gestionan el aprovisionamiento de infraestructura, el escalado de recursos, las copias de seguridad de datos, el enrutamiento del tráfico y el mantenimiento del sistema, lo que permite a los equipos de DevOps aplicar continuamente feedback a las nuevas iteraciones de aplicaciones.

Beneficios del ciclo de vida de DevOps

Aprovechar las buenas prácticas de DevOps puede tener numerosos beneficios para las empresas, entre ellos:

Mejor calidad del software

Los ciclos de vida DevOps dan prioridad a las pruebas continuas de código y software para que los errores y las vulnerabilidades se detecten en una fase temprana del proceso de desarrollo y los desarrolladores puedan entregar un código de mayor calidad.

Plazos de comercialización más cortos

Los procesos DevOps aceleran los ciclos de desarrollo de software al reducir de semanas a minutos el tiempo que transcurre entre la integración del código y la entrega del software.

Menos riesgo y tiempo de inactividad

Las actualizaciones de código pequeñas y frecuentes facilitan la resolución de fallos y errores, lo que evita interrupciones a gran escala y reduce el tiempo medio de reparación (MTTR).

Mayor transparencia

Los paneles de control de observabilidad y los bucles de feedback continuos ayudan a garantizar que cada miembro del equipo DevOps tenga acceso a toda la información que necesita en todo momento, mejorando la transparencia y la rendición de cuentas en toda la empresa.

Productividad incrementada

La cultura DevOps automatiza los pasos manuales y repetitivos (la resolución de problemas en las compilaciones y la gestión de los scripts de implementación, por ejemplo), para que los equipos puedan centrarse en optimizar las aplicaciones para los usuarios finales.

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Soluciones relacionadas
IBM Instana Observability

Aproveche la potencia de la IA y la automatización para resolver problemas de manera proactiva en toda la pila de aplicaciones.

Explore IBM Instana Observability
Soluciones DevOps

Utilice el software y las herramientas de DevOps para construir, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.

Explore las soluciones DevOps
Servicios de consultoría en la nube

Acelere la agilidad y el crecimiento empresarial: modernice continuamente sus aplicaciones en cualquier plataforma utilizando nuestros servicios de consultoría en la nube.

Explore los servicios de consultoría en la nube
Dé el siguiente paso

Desde la detección proactiva de problemas con IBM® Instana hasta los conocimientos en tiempo real en toda su pila, puede mantener las aplicaciones nativas de la nube funcionando de forma fiable.

  1. Descubra IBM Instana
  2. Explore las soluciones DevOps