DevOps acelera la entrega de software de mayor calidad combinando y automatizando el trabajo de los equipos de desarrollo de software y de operaciones de TI.
Por definición, DevOps es un proceso de desarrollo de software y un cambio de la cultura empresarial que acelera la entrega de software de mayor calidad mediante la automatización e integración de los esfuerzos de los equipos de desarrollo y operaciones de TI: dos grupos que tradicionalmente trabajan independiente el uno del otro o en silos.
En la práctica, los mejores procesos y culturas de DevOps se extienden más allá del desarrollo y las operaciones para incorporar datos de todos los stakeholders de la aplicación, incluyendo la ingeniería de la plataforma y la infraestructura, la seguridad, el cumplimiento, la gobernanza, la gestión de riesgos, la línea de negocio, los usuarios finales y los clientes, en el ciclo de vida de desarrollo del software.
DevOps representa el estado actual de la evolución de los ciclos de entrega de software durante los últimos 20 años, desde lanzamientos de código gigante a nivel de toda la aplicación cada varios meses o incluso años, hasta lanzamientos de recursos iterativos más pequeños o actualizaciones funcionales cada día o varias veces al día.
Finalmente, DevOps se trata de satisfacer la demanda cada vez mayor de los usuarios de software de nuevas y frecuentes características innovadoras, además de rendimiento y disponibilidad ininterrumpidas.
Descargue el e-book
Hasta justo antes del año 2000, la mayoría del software era desarrollado y actualizado usando la metodología en cascada, un enfoque lineal para proyectos de desarrollo a gran escala. Los equipos de desarrollo de software pasaban meses desarrollando grandes cantidades de código nuevo que impactaba la mayoría o la totalidad de la aplicación. Debido a que los cambios eran tan extensos, se demoraban varios meses más en integrar ese nuevo código en el código base.
Posteriormente, los equipos de garantía de calidad (QA), seguridad y operaciones pasaban otros meses más probando el código. El resultado era meses o incluso años entre lanzamientos de software, y a menudo varios parches significativos o correcciones de errores entre lanzamientos también. Y este enfoque de "big bang" de la entrega de aplicaciones a menudo se caracterizaba por planes de implementación complejos y arriesgados, interbloqueos difíciles de programar con sistemas en sentido ascendente y descendente, y la "gran esperanza" de TI de que los requisitos empresariales no hubieran cambiado drásticamente en los meses previos a la producción.
Para acelerar el desarrollo y mejorar la calidad, los equipos de desarrollo comenzaron a adoptar metodologías de desarrollo de software ágiles, que eran iterativas en lugar de lineales y se centraban en realizar actualizaciones más pequeñas y frecuentes al código base de la aplicación. Entre ellas, las principales metodologías son la integración y la entrega continua o CI/CD. En CI/CD, fragmentos más pequeños de código nuevo se fusionan en el código base cada una o dos semanas y luego se integran, prueban y preparan automáticamente para su implementación en el entorno de producción. Las metodologías ágiles evolucionaron el enfoque de "big bang" en una serie de "copias más pequeñas" que también compartimentaban los riesgos.
Cuanto más eficazmente estas prácticas de desarrollo ágiles hayan acelerado el desarrollo y la entrega de software, más hicieron que las operaciones de TI más aisladas (entre ellas: el aprovisionamiento de sistemas, configuración, pruebas de aceptación, administración, monitoreo) fueran consideradas como el próximo cuello de botella en el ciclo de vida de la entrega de software.
Así que DevOps se separó de las metodologías ágiles. Añadió nuevos procesos y herramientas que amplían la iteración continua y la automatización de CI/CD al resto del ciclo de vida de la entrega de software. E implementó una estrecha colaboración entre el desarrollo y las operaciones en cada etapa del proceso.
UrbanCode Deploy
UrbanCode Velocity
Rational Test Workbench
IBM Architecture Room Live
IBM Cloud Pak for Watson AIOps
El ciclo de vida de DevOps (a veces denominado línea de trabajo de entrega continua, cuando se describe de forma lineal) es una serie de procesos (o "flujos de trabajo"), de desarrollo automatizados e iterativos que se ejecutan dentro de un ciclo de vida de desarrollo más grande, automatizado e iterativo diseñado para optimizar la rápida entrega de software de alta calidad. El nombre y el número de los flujos de trabajo pueden diferir dependiendo de a quién se pregunte, pero normalmente se reducen a estos seis:
Entre estos flujos de trabajo se producen otros tres flujos de trabajo continuos importantes:
Pruebas continuas: Los ciclos de vida tradicionales de DevOps incluyen una etapa de "prueba" discreta que se produce entre la integración y la implementación. Sin embargo, DevOps ha avanzado de tal manera que ciertos elementos de la etapa de prueba pueden ocurrir en la planificación (desarrollo basado en el comportamiento), el desarrollo (pruebas de unidad, pruebas de contrato), la integración (análisis estático de código, escaneo de CVE, herramientas lint), la implementación (pruebas de humo, pruebas de penetración, pruebas de configuración), las operaciones (pruebas de fallos, pruebas de conf Las pruebas son una forma poderosa de identificar riesgos y vulnerabilidades y proporcionan una oportunidad para que la TI los acepte, mitigue o solucione.
Seguridad: Si bien las metodologías en cascada y las implementaciones ágiles "incorporan" los flujos de trabajo de seguridad después de la entrega o la implementación, DevOps se esfuerza por incorporar la seguridad desde el principio (planificación), cuando los problemas de seguridad son más fáciles y menos costosos de abordar, y continuamente durante el resto del ciclo de desarrollo. Este enfoque de seguridad se conoce como shifting left (o "cambio hacia la izquierda", más fácil de entender observando la Figura 1). Algunas empresas han tenido menos éxito "desplazando a la izquierda" que otras, lo que ha permitido el surgimiento de DevSecOps (ver más abajo).
Conformidad regulatoria. Conformidad Regulatoria (gestión y riesgo) también se aborda mejor al principio y durante todo el ciclo de vida del desarrollo. Las industrias reguladas a menudo tienen la obligación de proporcionar un cierto nivel de observabilidad, trazabilidad y acceso de cómo se entregan y gestionan los recursos en su entorno de operaciones de tiempo de ejecución. Esto requiere planificación, desarrollo, pruebas y aplicación de políticas en la línea de trabajo de entrega continua y en el entorno de ejecución. La auditabilidad de las medidas de conformidad es extremadamente importante para demostrar el cumplimiento normativo a los auditores externos.
Generalmente se admite que los métodos DevOps no pueden funcionar sin un compromiso con la cultura DevOps, la que se puede resumir como un enfoque organizativo y técnico diferente al desarrollo de software.
A nivel organizacional, DevOps requiere de una comunicación continua, colaboración y responsabilidad compartida entre todos los stakeholders en la entrega de software: desarrollo de software y TI, equipos de operaciones para ciertos equipos, pero también de seguridad, cumplimiento, gestión, riesgo y línea de negocio, con el fin de innovar rápida y continuamente e incorporar calidad en el software desde el principio.
En la mayoría de los casos, la mejor manera de lograr esto es romper estos silos y reorganizarlos en equipos de DevOps autónomos y multifuncionales que pueden trabajar en proyectos de código de principio a fin, desde la planificación hasta la retroalimentación, sin hacer transferencias ni esperar la aprobación de otros equipos. En el contexto del desarrollo ágil, la responsabilidad compartida y la colaboración son la base de un enfoque compartido de productos con resultados valiosos.
A nivel técnico, DevOps requiere un compromiso con la automatización, que mantiene los proyectos en movimiento dentro y entre los flujos de trabajo, y para la retroalimentación y medición , que permitan a los equipos acelerar ciclos continuamente y mejorar la calidad y el rendimiento del software.
Las demandas de DevOps y la cultura DevOps enfatizan la importancia de las herramientas que apoyan la colaboración asíncrona, integran sin problemas los flujos de trabajo de DevOps y automatizan todo el ciclo de vida de DevOps tanto como sea posible. Las categorías de herramientas DevOps incluyen:
Nativo en la nube es un enfoque para crear aplicaciones que aprovechen las tecnologías base de la computación en la nube. El objetivo de lo nativo de la nube es permitir el desarrollo, la implementación, la gestión y el rendimiento de aplicaciones consistentes y óptimos en entornos públicos, privados y de multinube.
Hoy en día, generalmente las aplicaciones nativas en la nube
De muchas maneras, el desarrollo nativo en la nube y DevOps están hechos el uno para el otro.
Por ejemplo, al desarrollar y actualizar microservicios, es decir, la entrega iterativa de pequeñas unidades de código a una base de código pequeña, es un ajuste perfecto para los ciclos rápidos de administración y liberación de DevOps. Y sería difícil lidiar con la complejidad de una arquitectura de microservicios sin la implementación y las operaciones de DevOps. Una encuesta reciente de IBM a desarrolladores y ejecutivos de TI descubrió que el 78% de los usuarios actuales de microservicios consideran aumentar el tiempo, los recursos financieros y el esfuerzo que han invertido en la arquitectura, y es probable que el 56% de los no usuarios adopten microservicios en los próximos dos años.
Mediante el empaquetado y la solución permanente de todas las dependencias del sistema operativo, los contenedores permiten ciclos de implementación y CI/CD rápidos, ya que toda la integración, las pruebas y la implementación se producen en el mismo entorno. Y la orquestación de Kubernetes realiza las mismas tareas de configuración continua para aplicaciones contenedorizadas como Ansible, Puppet y Chef para aplicaciones no contenedorizadas.
La mayoría de los proveedores líderes de computación en la nube, incluidos AWS, Google, Microsoft Azure e IBM Cloud, ofrecen algún tipo de solución de canalización DevOps administrada.
DevSecOps es DevOps que integra y automatiza continuamente la seguridad a lo largo del ciclo de vida de DevOps, de principio a fin, desde la planificación hasta la retroalimentación y de regreso a la planificación.
Otra manera de explicarlo es que DevSecOps es lo que DevOps debió ser desde el inicio. Pero dos de los desafíos más importantes (y por un tiempo insuperables) de la adopción de DevOps fueron la integración de la experiencia en seguridad en equipos multifuncionales (un problema cultural) y la implementación de la automatización de seguridad en el ciclo de vida de DevOps (un problema técnico). La seguridad llegó a ser percibida como el "equipo de los 'no'" y como un costoso cuello de botella en muchas prácticas de DevOps.
DevSecOps surgió como un esfuerzo específico para integrar y automatizar la seguridad como se pretendía originalmente. En DevSecOps, la seguridad es un ciudadano y stakeholder "de primera clase", junto con el desarrollo y las operaciones, y aporta seguridad al proceso de desarrollo con un enfoque en el producto.
Vea '¿Qué es DevSecOps?' para obtener más información sobre DevSecOps principios, beneficios y casos de uso:
La ingeniería de confiabilidad del sitio (SRE) utiliza técnicas de ingeniería de software para automatizar las tareas de operaciones de TI, por ejemplo, administración del sistema de producción, administración de cambios, respuesta a incidentes, incluso respuesta a emergencias, que de otra manera los administradores de sistemas podrían realizar manualmente. SRE busca transformar al administrador del sistema tradicional en un ingeniero.
El objetivo final de SRE es similar al objetivo de DevOps, pero más específico: SRE tiene como objetivo equilibrar el deseo de una organización de un rápido desarrollo de aplicaciones con su necesidad de cumplir con los niveles de rendimiento y disponibilidad especificados en los acuerdos de nivel de servicio (SLA) con los clientes y los clientes y usuarios finales.
Los ingenieros de confiabilidad del sitio logran este equilibrio al determinar un nivel aceptable de riesgo operativo ocasionado por las aplicaciones llamado "presupuesto de error", y al automatizar las operaciones para alcanzar ese nivel.
En un equipo de DevOps multifuncional, la SRE puede ser un puente entre el desarrollo y las operaciones, ya que proporciona las métricas y la automatización que el equipo necesita para implementar cambios al código y añadir nuevas funciones a través de la línea de trabajo de DevOps lo más rápido posible, sin "incumplir" los términos de los SLA de la empresa.
Obtenga más información acerca de la ingeniería de confiabilidad del sitio
DevOps requiere colaboración entre las personas involucradas en la empresa, el desarrollo y las operaciones para entregar y ejecutar software confiable de forma expedita. Las organizaciones que utilizan las herramientas y las prácticas de DevOps al mismo tiempo que transforman su cultura crean una base poderosa para la transformación digital, y para a medida que la necesidad de automatización crece en las operaciones empresariales y de TI.
El cambio hacia una mayor automatización debe comenzar con pequeños proyectos exitosos, que luego puede escalar y optimizar para otros procesos y en otras partes de su organización.
Al trabajar con IBM, tendrá acceso a funcionalidades de automatización impulsadas por la IA , incluyendo flujos de trabajo preintegrados, para hacer que cada proceso de los servicios de TI sea más inteligente, lo que permitirá a los equipos centrarse en los problemas de TI más importantes y acelerar la innovación.
Dé el siguiente paso:
Empiece con una cuenta de IBM Cloud hoy mismo.
IBM Cloud Pak for Watson AIOps utiliza machine learning y el conocimiento del lenguaje natural para correlacionar datos estructurados y no estructurados en toda la cadena de herramientas de operaciones en tiempo real con el fin de descubrir información oculta e identificar las causas más rápidamente. Al eliminar la necesidad de múltiples paneles de control, Watson AIOps introduce información y recomendaciones directamente en los flujos de trabajo de su equipo para acelerar la resolución de incidentes.
Desde sus flujos de trabajo de negocios hasta sus operaciones de TI, lo tenemos cubierto con automatización basada en IA. Descubra cómo las empresas líderes se están transformando.
Cree, modernice y gestione aplicaciones de forma segura en cualquier nube, con confianza.
Desde sus flujos de trabajo de negocios hasta sus operaciones de TI, lo tenemos cubierto con automatización basada en IA.