Exploración de las prácticas de DevOps

Completado

La incorporación de DevOps al ciclo de vida de la aplicación implica la implementación de una serie de prácticas de DevOps. La capacidad de maximizar las ventajas de DevOps depende en gran medida de la medida en que esta implementación se realice correctamente. En nuestro escenario de ejemplo, la organización tendría que introducir cambios significativos en su modelo operativo, empezando por promover la colaboración y la comunicación entre los equipos de desarrollo y operaciones, así como invertir en control de versiones, automatización, integración continua, pruebas continuas, entrega continua y supervisión continua. Explorará estas prácticas en esta unidad.

Diagrama en el que se muestran los procedimientos de DevOps.

Control de versiones

El control de versiones es la práctica de administrar las actualizaciones en el código almacenándola en repositorios designados, realizando un seguimiento de sus revisiones y manteniendo el historial de cambios. Esto facilita las revisiones de código y la capacidad de recuperarse de errores de programación. Además, los sistemas de control de versiones (VCS), como Git, permiten la colaboración en la creación de código entre varios desarrolladores a través de características como la clonación de repositorios, las solicitudes de incorporación de cambios, las combinaciones de cambios de código, la resolución de conflictos y la compatibilidad con reversiones. El uso del control de versiones es una práctica fundamental de DevOps. El control de versiones también es un requisito previo para tales procedimientos, como la integración continua y la infraestructura como código.

Integración continua (CI) y pruebas continuas

Una de las prácticas principales de DevOps es la automatización. En este caso, la automatización se aplica al proceso de combinar cambios de código, probarlos y compilar artefactos resultantes, lo antes posible en el ciclo de vida de la aplicación. La intención es detectar posibles problemas en la fase de desarrollo, ya que esto minimiza el esfuerzo y el costo implicados en corregirlos. Las pruebas automatizadas validan que los cambios de código no han introducido errores ni problemas de regresión.

Entrega continua (CD)

La entrega continua automatiza el proceso de despliegue de artefactos creados como parte de CI, y los hace disponibles para sus consumidores. CD automatiza la progresión de estos artefactos a través de diferentes entornos, como pruebas, ensayo y producción. La integración continua y la entrega continua (CI/CD) forman juntos un proceso unificado, simplificado, de desarrollo y entrega de software de un extremo a otro.

Supervisión continua

La supervisión continua proporciona visibilidad automatizada en tiempo real del estado y el rendimiento de toda la pila de aplicaciones, incluida su infraestructura subyacente. Esto se logra a través de la recopilación de telemetría, incluidos los registros y las métricas, y las alertas personalizables que entregan notificaciones sobre el comportamiento anómalo, lo que facilita las acciones de corrección rápidas.

Seguridad continua (DevSecOps)

La seguridad es una parte esencial de cada fase del ciclo de vida de las aplicaciones en DevOps, lo que llevó a acuñar el término DevSecOps. DevSecOps es una extensión de DevOps, con el foco en la integración de prácticas de seguridad en cada fase, desde la planeación, la codificación, las pruebas y la implementación hasta las operaciones.

Infraestructura como código (IaC)

La infraestructura como código es un componente integral de las prácticas modernas de desarrollo y operaciones de software. Implica el uso de métodos de programación para aprovisionar y administrar servicios de infraestructura. IaC define componentes de infraestructura como servidores, dispositivos de red y bases de datos mediante código. Este código normalmente reside en un VCS, que administra y realiza un seguimiento de los cambios en las configuraciones de infraestructura. El uso del código facilita el aprovisionamiento automatizado y la configuración de la infraestructura, lo que mejora la eficiencia, la coherencia y la escalabilidad. Además, IaC puede integrarse (y con frecuencia) con CI/CD, lo que produce una estrategia completa de entrega de software mediante la combinación del aprovisionamiento de infraestructura, con la compilación, prueba e implementación de aplicaciones en una secuencia continua y totalmente automatizada.