In this article
Componentes clave del pipeline de DevOps
La cultura actual del desarrollo de software se enfoca en crear, probar e implementar aplicaciones rápidamente. Las herramientas avanzadas de automatización desempeñan un papel fundamental. DevOps adopta estos elementos metodológicos y técnicos y los aplica a proyectos de software del mundo real.
Esta publicación aborda los conceptos de DevOps, los componentes clave del pipeline de DevOps y ofrece pautas prácticas para integrar la metodología DevOps en el ciclo de vida del desarrollo de software (SDLC).
¿Qué es un pipeline de DevOps?
Un pipeline de DevOps ayuda a los equipos a crear, probar e implementar software de forma rápida y eficiente mediante una combinación de herramientas y prácticas. También facilita el mantenimiento y las actualizaciones del software. Además, simplifica la integración continua de cambios de código en un repositorio ascendente, permite automatizar las pruebas y compilaciones, y ayuda a resolver conflictos de código y detectar errores y vulnerabilidades de forma eficiente. Por lo tanto, las prácticas de DevOps reducen el tiempo de comercialización (TTM) y hacen posibles procesos ágiles de desarrollo de software.
Integración continua (CI)
La integración continua (CI) consiste en combinar periódicamente el código de los desarrolladores en un repositorio compartido y aplicar a ese código pruebas unitarias automáticas, compilaciones y herramientas de verificación. Los principales objetivos de CI son habilitar un proceso eficiente de verificación del código y evitar conflictos de código al momento del lanzamiento.
Para lograrlo, el código enviado al repositorio compartido se compila automáticamente en un artefacto y se prueba. En este proceso, llamado compilación, si se detecta algún error, se notifica a los desarrolladores sobre las pruebas fallidas y las aserciones que lo causaron para que puedan corregir el código. El pipeline de CI suele combinarse con prácticas estándar de revisión de código, como los pull request.
CI evita los problemas de «infierno de integración» y «día de fusión» que surgen cuando hay que conciliar distintas ramas de la base de código.
Entrega continua (CD)
La entrega continua (CD) consiste en empaquetar el código en unidades listas para implementar en producción. No debe confundirse CD con la «implementación continua», que automatiza la implementación de cambios de código en producción.
El entorno de CD cuenta con un entorno aislado similar al de producción, donde se prueban y publican actualizaciones incrementales del código. Tras revisar y probar el código, los desarrolladores pueden enviar los cambios a producción. Publicar pequeñas actualizaciones de código en el entorno de producción facilita la resolución de problemas y ayuda a prevenir cuellos de botella en el software y conflictos de fusión. Como las aplicaciones se prueban previamente en el entorno aislado, las que se implementan en producción mediante CD suelen ser más estables y tener menos errores.
Implementación continua (CD)
La implementación continua (CD) consiste en publicar automáticamente actualizaciones de código para los usuarios, sin necesidad de verificaciones ni activadores manuales. Al igual que con la entrega continua, el código se compila y prueba automáticamente, pero los cambios se envían de inmediato a producción. Por eso, la implementación continua permite lanzar productos con mayor rapidez. Sin embargo, tiene limitaciones. Por ejemplo, puede enviar a producción errores y vulnerabilidades que no detectaron las verificaciones automáticas. Por lo tanto, debe aplicarse con cuidado y solo a cambios menores de código. Además, debe combinarse con políticas eficientes de actualizaciones progresivas (por ejemplo, implementaciones blue-green y lanzamientos canary).
Cómo crear un pipeline de DevOps
Un pipeline de DevOps eficiente debe incluir los siguientes componentes básicos:
Administración del control de código fuente
Herramientas de automatización de compilaciones
También puede incluir herramientas de pipeline para la seguridad de contenedores y la seguridad de IaC. Existen muchas herramientas de DevOps de código abierto que pueden ayudar a crear un pipeline de DevOps eficiente.
Framework de CI/CD
Los frameworks de CI/CD, como Jenkins o Travis CI, ayudan a implementar el componente de CI/CD del pipeline de DevOps. Por lo general, incluyen un servidor capaz de realizar compilaciones, pruebas e implementaciones automáticas de software a partir de los commits de código recibidos. Por eso, tu herramienta de CI/CD debe estar conectada al repositorio de código fuente.
Administración del control de código fuente
Las herramientas de control de código fuente (o control de versiones) permiten hacer seguimiento y administrar los cambios de código. Ofrecen un historial continuo del desarrollo del código, incluidos los commits y pull request de cada desarrollador. También ayudan a enviar cambios de código a repositorios remotos y a resolver conflictos entre distintas contribuciones. Entre las herramientas de control de código fuente, Git tiene el ecosistema más desarrollado y es la más popular.
Herramientas de automatización de compilaciones
Las herramientas de automatización de compilaciones ayudan a empaquetar el código de una aplicación en un objeto que se puede implementar. Sus funciones varían según el tipo de lenguaje de programación utilizado: compilado o interpretado.
Las herramientas para lenguajes compilados como C++ o Java no solo compilan el código, sino que también generan un entorno de compilación nativo para compilar el código fuente, crear bibliotecas, generar wrappers y crear ejecutables en distintas combinaciones. Las herramientas de compilación para lenguajes interpretados, como Grunt, Webpack, Rollup y Babel para JavaScript, pueden concatenar archivos JavaScript y también ofuscarlos y minimizarlos.
Framework de pruebas de código
Los frameworks de pruebas de código ayudan a los desarrolladores a detectar errores en las aplicaciones durante el proceso de desarrollo. Estas herramientas suelen incluir funciones de pruebas unitarias que pueden integrarse en el código de la aplicación y ejecutarse en tiempo de ejecución. Además, pueden conectarse a las herramientas de CI/CD existentes para automatizar el proceso. Hay diversos frameworks de pruebas para los distintos lenguajes de programación (por ejemplo, Pytest para Python y JUnit para Java).
También es posible integrar análisis de calidad del código y de vulnerabilidades en el proceso de compilación, agregando una prueba automatizada de Snyk Code a tu CI/CD.
Ejemplo de pipeline de Azure DevOps
La mayoría de los proveedores de servicios en la nube ofrecen distintas herramientas para crear un pipeline de DevOps en la nube apto para producción. Para ilustrar cómo es un pipeline de DevOps en la nube en un entorno real, veamos el pipeline de Microsoft Azure DevOps, que consta de varios componentes, entre ellos:
Estas herramientas proporcionan todos los componentes básicos de DevOps descritos anteriormente.
Así podría verse el proceso de uso del pipeline de Microsoft Azure DevOps:
Se actualiza el código de una aplicación.
Los cambios de código se confirman en el repositorio de código de Azure Repos.
Un evento de CI activa la compilación de la aplicación y las pruebas unitarias con Azure Test Plans.
Azure Pipelines crea una implementación automatizada de los artefactos de la aplicación.
Los artefactos se implementan en Azure App Service.
Una vez implementada la aplicación, los especialistas de DevOps pueden monitorear su estado, rendimiento y otras métricas.
Integración de la seguridad en el pipeline de DevOps
La seguridad de las aplicaciones mediante enfoques de seguridad tradicionales, que muchas organizaciones todavía utilizan, no es compatible con DevOps. Por lo general, estos enfoques tienen varias limitaciones:
La seguridad suele incorporarse al software después de su lanzamiento, en lugar de ser una característica integrada.
El ciclo lento de retroalimentación de las prácticas de seguridad tradicionales no es compatible con el ritmo acelerado del pipeline de DevOps.
La metodología de seguridad tradicional no tiene en cuenta los entornos dinámicos en los que existen las aplicaciones modernas (por ejemplo, servicios en la nube, contenedores y sistemas de administración de contenedores como Kubernetes).
Los equipos de seguridad que siguen el enfoque tradicional trabajan fuera de los equipos de DevOps. Por lo general, reportan a otro líder y operan en silos. Como resultado, se publican aplicaciones inseguras, ya que los expertos quedan fuera del flujo de información y no tienen los datos que necesitan.
Además, en estos casos, cuando los equipos de seguridad intervienen para realizar una auditoría, ralentizan la entrega y frustran el objetivo original del negocio. Para empeorar las cosas, los equipos de seguridad suelen tener muy poco personal, una situación que se agrava por la grave escasez de talento que enfrenta la industria de la ciberseguridad.
Cuando los equipos de seguridad detectan vulnerabilidades y otros riesgos, no pueden solucionar los problemas por sí mismos. La búsqueda de una solución pasa al equipo de desarrollo y, hasta que priorice y resuelva esos problemas, el riesgo permanece. Esto crea otro cuello de botella para las correcciones de seguridad.
Estas limitaciones de los enfoques de seguridad tradicionales dificultan la integración de la seguridad en un entorno moderno de DevOps, basado en la automatización y las herramientas de CI/CD. La seguridad sigue siendo ajena al proceso de desarrollo de software y se utiliza como medida correctiva después de crear el producto. Por suerte, existe una solución.
Seguridad centrada en los desarrolladores y DevSecOps
Está claro que, en este mundo transformado digitalmente por la nube y DevOps, se necesita un nuevo enfoque de seguridad. Este nuevo enfoque, a veces llamado DevSecOps, debe basarse en estas nuevas tecnologías y metodologías e integrar la seguridad desde el inicio. Debe promover equipos autosuficientes y acelerar el negocio, en lugar de ralentizarlo. En otras palabras, debe priorizar a los desarrolladores.
¿Qué es DevSecOps?
DevSecOps es la integración de prácticas de seguridad en un modelo de entrega de software DevOps. Este enfoque es una evolución natural de DevOps que agrega una dimensión de seguridad al concepto de «responsabilidad compartida». DevSecOps trata la seguridad como una característica integrada del software que requiere el mismo proceso de verificación y cumplimiento que los demás componentes del pipeline de DevOps.
Estos son algunos de los principales beneficios de DevSecOps:
Incorporación temprana de actividades y herramientas de seguridad en el ciclo de vida del desarrollo de software.
Mayor velocidad de entrega de software gracias a la detección temprana de errores y vulnerabilidades, que se corrigen antes de la implementación para que los desarrolladores puedan enfocarse en entregar funciones útiles.
Las herramientas de automatización de la seguridad permiten que los desarrolladores que no son expertos en seguridad creen software estable y seguro.

Hay pocos ejemplos exitosos de implementación de un enfoque DevSecOps e integración de la seguridad en los pipelines de DevOps. En Coveo, los miembros del equipo de DevOps pueden administrar las vulnerabilidades con mucha más autonomía y eficiencia. El Security Champion de cada equipo tiene la facultad de monitorear las vulnerabilidades y decidir cómo y en qué plazo resolverlas. Los equipos de DevOps de Coveo cuentan con supervisión, pero tienen la responsabilidad y la autoridad para priorizar sus acciones de seguridad. El apoyo de Snyk a este enfoque de «confiar, pero verificar» facilitó en gran medida su adopción en toda la organización.
El pipeline de implementación lo creó primero un equipo pequeño y, después, se puso a disposición de todos los desarrolladores», reveló Beaumont. «No tuvimos que convencer a ningún equipo de desarrollo para que adoptara el nuevo pipeline, por todas las ventajas que ofrecía en cuanto a seguridad y facilidad de uso. La transición ocurrió de forma natural."
Conclusión
En este artículo, aprendimos cuáles son los componentes clave del pipeline de DevOps y cómo integrarlo en el proceso de desarrollo de software. Iniciar tu recorrido con DevOps no consiste solo en elegir las herramientas adecuadas, sino también en habilitar prácticas y una cultura organizacional sólidas, basadas en la responsabilidad compartida, la automatización y la colaboración entre desarrolladores, administradores y especialistas de operaciones.
Pero recuerda que el pipeline de DevOps no se trata solo de ciclos de desarrollo y lanzamiento rápidos; también busca garantizar la seguridad de tus aplicaciones. Para lograrlo, es necesario integrar la seguridad en el pipeline de DevOps y alinear a los distintos equipos en torno al objetivo de crear aplicaciones seguras desde el diseño. Por eso, las prácticas emergentes de DevSecOps que se abordan en este artículo están ganando cada vez más terreno en el movimiento moderno de DevOps.
Preguntas frecuentes sobre DevOps
¿Por qué necesitamos DevOps?
DevOps permite desarrollar software de forma rápida y eficiente en proyectos complejos en los que participan varios equipos y desarrolladores. Al automatizar cada etapa del proceso, desde el desarrollo y las pruebas hasta la implementación, DevOps evita conflictos al fusionar cambios, reduce los errores, agiliza la implementación del software y facilita su mantenimiento.
¿Cómo se crea un pipeline de DevOps?
Un pipeline de DevOps funcional requiere varios componentes conectados sin problemas: un servidor de CI/CD que realice todas las operaciones de DevOps, un sistema de control de versiones conectado a él, herramientas de automatización de compilaciones capaces de compilar aplicaciones y herramientas de cobertura de pruebas para probar tus aplicaciones de forma automatizada. También puedes agregar herramientas de seguridad automatizadas para habilitar DevSecOps.
¿Qué relación existe entre DevSecOps y DevOps?
DevSecOps integra las prácticas recomendadas de seguridad en las primeras etapas del proceso de desarrollo de software. En lugar de considerar la seguridad como una serie de verificaciones o correcciones de errores posteriores a la producción, DevSecOps la convierte en una parte intrínseca de DevOps mediante análisis de seguridad estáticos y dinámicos, herramientas de seguridad de IaC, análisis de seguridad de contenedores y más.
Empieza a usar Snyk gratis
No necesitas tarjeta de crédito.
Crea una cuenta con Bitbucket y más opciones
Al usar Snyk, aceptas cumplir nuestras políticas, incluidos nuestros Términos del servicio y nuestra Política de privacidad.