¿Qué es DevOps?

Vea cómo DevOps une a las personas, los procesos y la tecnología para ofrecer a los clientes productos de más calidad en menos tiempo.

Definición de DevOps

El término DevOps, que es una combinación de los términos ingleses development (desarrollo) y operations (operaciones), designa la unión de personas, procesos y tecnología para ofrecer valor a los clientes de forma constante.

¿Qué significa DevOps para los equipos? DevOps permite que los roles que antes estaban aislados (desarrollo, operaciones de TI, ingeniería de la calidad y seguridad) se coordinen y colaboren para producir productos mejores y más confiables. Al adoptar una cultura de DevOps junto con prácticas y herramientas de DevOps, los equipos adquieren la capacidad de responder mejor a las necesidades de los clientes, aumentar la confianza en las aplicaciones que crean y alcanzar los objetivos empresariales en menos tiempo.

Ventajas de DevOps

Los equipos que adoptan la cultura, las prácticas y las herramientas de DevOps mejoran el rendimiento y crean productos de más calidad en menos tiempo, lo que aumenta la satisfacción de los clientes. Esta mejora de la colaboración y la productividad es fundamental también para alcanzar objetivos de negocio como estos:

Reducción del tiempo de comercialización

Adaptación al mercado y a la competencia

Mantenimiento de la estabilidad y la confiabilidad del sistema

Mejora del tiempo medio de recuperación

DevOps y el ciclo de vida de las aplicaciones

DevOps influye en el ciclo de vida de las aplicaciones a lo largo de las fases de planeamiento, desarrollo, entrega y uso. Cada fase depende de las demás y las fases no son específicas de un rol. En una auténtica cultura de DevOps, todos los roles están implicados de algún modo en todas las fases.

Plan

En la fase de planeamiento, los equipos de DevOps conciben, definen y describen las características y la funcionalidad de las aplicaciones y los sistemas que van a crear. Realizan un seguimiento del progreso tanto de forma general como de forma pormenorizada, desde tareas de un único producto hasta tareas que abarcan carteras de numerosos productos. La creación de registros de trabajo pendiente, el seguimiento de los errores, la administración del desarrollo de software ágil con Scrum, el uso de paneles Kanban y la visualización del progreso son algunas de las formas en las que los equipos de DevOps planean con agilidad y visibilidad.

Desarrollar

La fase de desarrollo incluye todos los aspectos de la programación (escritura, pruebas, revisión e integración del código por parte de los miembros del equipo) y la compilación de ese código en artefactos de compilación que se pueden implementar en varios entornos. Los equipos de DevOps buscan innovar con rapidez sin sacrificar la calidad, la estabilidad ni la productividad. Para ello, utilizan herramientas muy productivas, automatizan los pasos cotidianos y manuales, e iteran el código en pequeños incrementos mediante pruebas automáticas e integración continua.

Entregar

La entrega es el proceso de implementar aplicaciones en entornos de producción de un modo constante y confiable. La fase de entrega incluye también la implementación y la configuración de la infraestructura básica totalmente gobernada que constituye esos entornos.

En la fase de entrega, los equipos definen un proceso de administración de versiones con fases de aprobación manual claras. También establecen puertas automáticas que mueven las aplicaciones de una fase a otra hasta que están disponibles para los clientes. La automatización de estos procesos hace que estén controlados y sean escalables y repetibles. De este modo, los equipos que practican DevOps pueden realizar entregas con facilidad, confianza y tranquilidad.

Funcionamiento

La fase de uso implica mantener y supervisar las aplicaciones, así como solucionar los posibles problemas, en los entornos de producción. Al adoptar prácticas de DevOps, los equipos trabajan para asegurar la confiabilidad, la alta disponibilidad y el objetivo de ningún tiempo de inactividad del sistema, al tiempo que refuerzan la seguridad y la gobernanza. Los equipos de DevOps buscan identificar los problemas antes de que afecten a la experiencia del cliente y mitigarlos rápidamente a medida que surgen. El mantenimiento de esta vigilancia requiere una telemetría muy completa, alertas que permitan tomar medidas y visibilidad total de las aplicaciones y del sistema subyacente.

Cultura de DevOps

Aunque la adopción de prácticas de DevOps automatiza y optimiza los procesos con tecnología, todo comienza con la cultura interna de la organización y con las personas que participan en ella. El desafío de cultivar una cultura de DevOps requiere cambios profundos en la forma en la que las personas trabajan y colaboran. Pero cuando las organizaciones se comprometen a implementar una cultura de DevOps, pueden crear un entorno que facilite el desarrollo de equipos de alto rendimiento.

Colaboración, visibilidad y alineamiento

Una buena cultura de DevOps se distingue, entre otras cosas, por la colaboración entre los equipos, que comienza con la visibilidad. Diferentes equipos, como el de desarrollo o el de operaciones de TI, deben compartir entre sí sus procesos de DevOps, sus prioridades y sus preocupaciones. Estos equipos también deben planear juntos el trabajo y alinear sus objetivos y los indicadores del éxito en relación con el negocio.

Cambios en el ámbito y en la responsabilidad

A medida que los equipos se alinean, asumen y participan en más fases del ciclo de vida, no solo las que son principales para su rol. Por ejemplo, los desarrolladores asumen responsabilidad no solo por la innovación y la calidad establecidas en la fase de desarrollo, sino también por el rendimiento y la estabilidad que sus cambios producen en la fase de uso. Al mismo tiempo, los operadores de TI se aseguran de incluir la gobernanza, la seguridad y el cumplimiento normativo en las fases de planeamiento y desarrollo.

Ciclos de lanzamiento de versiones más cortos

Los equipos de DevOps mantienen la agilidad porque lanzan versiones de software en ciclos cortos. Los ciclos de lanzamiento de versiones más cortos facilitan el planeamiento y la administración de los riesgos, porque el progreso es incremental, lo que reduce el impacto en la estabilidad del sistema. El acortamiento de los ciclos de lanzamiento de versiones permite también a las organizaciones adaptarse y reaccionar a las necesidades cambiantes de los clientes y a la presión competitiva.

Aprendizaje continuo

Los equipos de DevOps de alto rendimiento establecen una mentalidad de crecimiento. Aceptan el fracaso y responden rápido a los errores, e incorporan lo que aprenden a los procesos, de modo que mejoran continuamente, aumentan la satisfacción del cliente y agilizan la innovación y la capacidad de adaptación al mercado de forma constante. DevOps es un recorrido, por lo que siempre hay espacio para crecer.

Prácticas de DevOps

Más allá del establecimiento de una cultura de DevOps, los equipos ponen en práctica el método DevOps implementando determinadas prácticas a lo largo del ciclo de vida de las aplicaciones. Algunas de estas prácticas ayudan a agilizar, automatizar y mejorar una fase específica. Otras abarcan varias fases y ayudan a los equipos a crear procesos homogéneos que favorezcan la productividad.

Integración y entrega continuas (CI/CD)

La integración continua es una práctica de desarrollo de software en la que los desarrolladores fusionan mediante combinación los cambios de código en la rama de código principal con frecuencia. En la integración continua se utilizan pruebas automáticas, que se ejecutan cada vez que se hace “commit” de código nuevo. De este modo, el código de la rama principal siempre es estable.

La entrega continua es la implementación automática y frecuente de nuevas versiones de una aplicación en un entorno de producción. Al automatizar los pasos necesarios para la implementación, los equipos reducen los problemas que pueden surgir en ese proceso y permiten actualizaciones más frecuentes.

Cuando se establecen estas dos prácticas, el proceso resultante es CI/CD, que incluye la automatización completa de todos los pasos desde que se hace “commit” del código hasta que se implementa en el entorno de producción. La implementación de CI/CD permite a los equipos centrarse en la creación de código y elimina la carga y la posibilidad de errores humanos en los pasos cotidianos que se realizan manualmente. CI/CD también agiliza el proceso de implementación de nuevo código y reduce los riesgos que conlleva. Por tanto, las implementaciones son más frecuentes y se realizan en incrementos más pequeños, lo que ayuda a los equipos a ser más ágiles y más productivos, y a confiar más en el código que se ejecuta.

Control de versiones

Control de versiones es la práctica de administrar el código por versiones, haciendo un seguimiento de las revisiones y del historial de cambios para facilitar la revisión y la recuperación del código. Esta práctica suele implementarse con sistemas de control de versiones, como Git, que permite que varios desarrolladores colaboren para crear código. Estos sistemas proporcionan un proceso claro para fusionar mediante combinación los cambios en el código que tienen lugar en los mismos archivos, controlar los conflictos y revertir los cambios a estados anteriores.

El uso del control de versiones es una práctica de DevOps fundamental que ayuda a los equipos de desarrollo a trabajar juntos, dividir las tareas de programación entre los miembros del equipo y almacenar todo el código para poder recuperarlo fácilmente si fuese necesario.

El control de versiones es también un elemento necesario en otras prácticas, como la integración continua y la infraestructura como código.

Más información acerca de Git

Desarrollo ágil de software

El método ágil es un enfoque de desarrollo de software que hace hincapié en la colaboración en equipo, en los comentarios de los clientes y usuarios, y en una gran capacidad de adaptación a los cambios mediante ciclos cortos de lanzamiento de versiones. Los equipos que practican la metodología ágil proporcionan mejoras y cambios continuos a los clientes, recopilan sus comentarios y, después, aprenden y ajustan el software en función de lo que el cliente quiere y necesita. El método ágil es muy diferente a otros marcos más tradicionales, como el modelo en cascada, que incluye ciclos de lanzamiento de versiones largos definidos por fases secuenciales.

Kanban y Scrum son dos marcos populares asociados al método ágil.

Infraestructura como código

La infraestructura cómo código define las topologías y los recursos del sistema de un modo descriptivo que permite a los equipos administrar esos recursos igual que lo harían con el código. Las diferentes versiones de esas definiciones se pueden almacenar en sistemas de control de versiones, donde se pueden revisar y revertir, de nuevo, igual que el código.

La práctica de la infraestructura como código permite a los equipos implementar recursos del sistema de un modo confiable, repetible y controlado. Además, la infraestructura como código ayuda a automatizar la implementación y reduce el riesgo de errores humanos, especialmente en entornos complejos de gran tamaño. Esta solución repetible y confiable para la implementación de entornos permite a los equipos mantener entornos de desarrollo y pruebas que sean idénticos al entorno de producción. De igual modo, la duplicación de entornos en otros centros de datos y en plataformas en la nube es más sencilla y más eficiente.

Administración de configuración

Administración de la configuración hace referencia a la administración del estado de los recursos de un sistema, incluidos los servidores, las máquinas virtuales y las bases de datos. El uso de herramientas de administración de la configuración permite a los equipos distribuir cambios de un modo controlado y sistemático, lo que reduce el riesgo de modificar la configuración del sistema. Los equipos utilizan herramientas de administración de la configuración para hacer un seguimiento del estado del sistema y evitar alteraciones en la configuración, que es como se desvía la configuración de un recurso del sistema a lo largo del tiempo del estado definido para él.

Al usarla junto con la infraestructura como código, resulta fácil elaborar plantillas y automatizar la definición y la configuración de sistemas, lo que permite a los equipos usar entornos complejos a escala.

Supervisión continua

Supervisión continua significa tener visibilidad total y en tiempo real del rendimiento y el estado de toda la pila de aplicaciones, desde la infraestructura subyacente donde se ejecutan las aplicaciones hasta los componentes de software de niveles superiores. La visibilidad consiste en la recopilación de datos de telemetría y metadatos, así como en el establecimiento de alertas para condiciones predefinidas que garanticen la atención de un operador. La telemetría incluye registros y datos de eventos recopilados de varias partes del sistema que se almacenan donde pueden analizarse y consultarse.

Los equipos de DevOps de alto rendimiento se aseguran de establecer alertas útiles que les permitan tomar medidas y recopilan datos de telemetría muy completos para obtener conclusiones a partir de enormes cantidades de datos. Estas conclusiones ayudan a los equipos a mitigar los problemas en tiempo real y a ver cómo mejorar la aplicación en futuros ciclos de desarrollo.

Herramientas de DevOps

Los equipos tienen muchas herramientas de DevOps para facilitar la adopción de una cultura de DevOps en su organización. La mayoría de los equipos confían en varias herramientas y, de este modo, crean cadenas de herramientas personalizadas que han adaptado a sus necesidades en cada fase del ciclo de vida de las aplicaciones. Si bien adoptar una herramienta o una tecnología específicas no es lo mismo que adoptar DevOps, cuando la cultura de DevOps está presente y los procesos están definidos, la gente puede implementar y optimizar las prácticas de DevOps si eligen las herramientas adecuadas. Obtenga las herramientas para implementar DevOps:

DevOps y la nube

La adopción de la nube ha transformado radicalmente la forma en la que los equipos compilan, implementan y usan las aplicaciones. Esto combinado con la adopción de DevOps ha hecho que los equipos tengan ahora una oportunidad mayor de mejorar las prácticas y ofrecer un servicio de más calidad a sus clientes.

Agilidad en la nube

Al tener la capacidad de aprovisionar y configurar rápidamente entornos en la nube de varias regiones con recursos ilimitados, los equipos adquieren agilidad para implementar las aplicaciones. Ahora, en lugar de tener que comprar, configurar y mantener servidores físicos, los equipos crean entornos complejos en la nube en cuestión de minutos y, después, los apagan cuando ya no los necesitan.

Kubernetes

A medida que aumenta el número de aplicaciones que utilizan tecnología de contenedores, Kubernetes se está convirtiendo en la solución del sector para la orquestación de contenedores a escala. La automatización de los procesos de compilación e implementación de contenedores a través de canalizaciones de CI/CD y la supervisión de estos contenedores en el entorno de producción se están convirtiendo en prácticas fundamentales en la era de Kubernetes.

Informática sin servidor

Al haber trasladado la mayor parte de la carga de administración de la infraestructura al proveedor de nube, los equipos se pueden centrar en sus aplicaciones y no en la infraestructura subyacente. La informática sin servidor ofrece la posibilidad de ejecutar aplicaciones sin necesidad de configurar y mantener servidores. Algunas opciones reducen la complejidad y el riesgo de las implementaciones y las operaciones.

Comience su proceso de adopción de DevOps

Con todas las diferentes prácticas y soluciones disponibles, DevOps puede parecer agobiante en un principio. La clave es comenzar con poco y aprender de otros.

Preguntas más frecuentes

  • La cultura de DevOps se practica en diferentes roles de una organización y requiere que varios de ellos colaboren estrechamente. En la mayoría de los casos, los roles de DevOps son: desarrollo, operaciones de TI, seguridad y soporte técnico.
  • DevOps no está limitado a un único rol. Todo aquel que participa en cada una de las fases del ciclo de vida de una aplicación debe adoptar la cultura de DevOps. No obstante, en algunas organizaciones, hay determinadas personas o equipos que solo se dedican a habilitar la automatización, definir prácticas e implementar canalizaciones de CI/CD. A veces, los nombres oficiales de esos roles son ingeniero de DevOps o especialista de DevOps.
  • La adopción de DevOps en una organización de gran tamaño puede ser extremadamente complejo. Cambiar la cultura de una organización grande y normalizar los procesos y las herramientas requiere paciencia y persistencia. En la mayoría de las grandes organizaciones, hay usuarios pioneros de prácticas de DevOps. A medida que se consolidan estas prácticas y generan resultados positivos, suelen seguirles otros equipos con el inicio de su proceso de adopción de DevOps.
  • El verdadero significado de DevOps es la entrega de valor a los clientes de forma constante. Los resultados de la adopción de DevOps deben valorarse en relación con los objetivos de negocio. Los equipos de DevOps se alinean en torno a estos objetivos y los consiguen usando ciclos de lanzamiento de versiones cortos. Estos ciclos permiten responder con agilidad al mercado y aprender continuamente con los comentarios de los clientes.
  • Tanto DevOps como el método ágil son marcos de desarrollo de software para elaborar un producto, un lanzamiento o una versión. DevOps es una cultura que promueve la colaboración entre todos los roles implicados en el desarrollo y el mantenimiento de software. El enfoque ágil es una metodología de desarrollo diseñada para mantener la productividad e impulsar el lanzamiento de versiones en una realidad muy común de necesidades que cambian continuamente. DevOps y el método ágil no solo no se excluyen mutuamente, sino que a menudo se practican juntos.
  • Junto con la integración, la entrega y la implementación continuas, son prácticas que automatizan las fases de la entrega de software.