Fuente: iStock
Un proyecto de implementación de despliegue continuo e integración continua (DC/IC) es una tarea compleja, sobre todo porque hay varias tecnologías y servicios que deben integrarse y orquestarse. Estos proyectos suelen dar lugar a innumerables reuniones de estado en las que los diferentes equipos comparten sus preocupaciones específicas y desafíos técnicos. Si no están todos en la misma página con la terminología, el progreso puede ser lento y difícil de seguir.
Para evitar esta forma ineficiente de trabajar, los equipos deben acordar el uso de un vocabulario compartido. Este blog destacará los términos comunes y su definición que se pueden utilizar directamente con el equipo de aplicaciones (un solo equipo) para reunir sus requisitos de canalización. El uso de un vocabulario compartido en el que los equipos estén de acuerdo ayudará a reducir la confusión al dejar claros los conceptos y los hitos. Estos términos pueden desarrollarse con más detalle una vez que se asigne a un desarrollador o equipo responsable, de manera similar a cualquier otro proyecto ágil típico.
Este enfoque ayudará a los equipos a poner en marcha y aprovechar proyectos extensos y complejos con facilidad y a obtener una respuesta positiva de las partes interesadas. Las principales ventajas de esta estrategia son:
- La definición de entregables o hitos puede traducirse directamente en historias ágiles.
- La identificación de los retos puede traducirse directamente en picos ágiles o POCs (Proofs Of Concept).
- Una clara definición de responsabilidades entre cada equipo implicado.
A continuación encontrarás los 16 términos más universales de CI/CD y sus sencillas definiciones:
1. Build o Construir describe cualquier proceso de transformación del código fuente de simple texto a una unidad desplegable real. Esto puede ser cambiar una compilación, una transpilación o procesos de empaquetado en el formato de unidad desplegable deseado.
2. Build Command o Comando de Construir se refiere al comando o conjunto de comandos que se ejecutan en el servidor de compilación para realizar el proceso de compilación. Ejemplos de comandos de construcción son: ./gradlew build, ./mvnw install, npm install build, gulp build, and ng build.
3. Build Server o Servidor de Construir es un marcador de posición para hacer referencia a cualquier servidor que esté destinado a manejar el proceso de construcción y prueba de código, por ejemplo, Jenkins build slave.
4. Build Server Provisioning o Servidor de Construir aprovisionamiento hace referencia a cualquier proceso de creación y configuración del servidor de compilación.
5. Build Tool o Herramienta Construires un marcador de posición que hace referencia al software necesario para realizar el proceso de construcción. Algunos ejemplos son Ant, Maven, Gradle, Node.js, Py (Python), y PHP.
6. Code Testing o Testeo de Código puede tratarse de una prueba de unidad o de cualquier prueba de contrato aislada. Esto también incluye las herramientas de análisis de código estático, como SonarQube, JSHint, Kiuwan, Klockwork, y más.
7. Deployment o Despliegue encapsula el proceso de llevar la unidad desplegable a la plataforma de destino y ejecutarla para obtener un software en funcionamiento. De la lista, este concepto es el más sucinto porque es desde la perspectiva del pipeline. En el proceso de despliegue es donde se puede prever la mayor carga de trabajo.
8. Deployable Unit o Unidad de despligue se refiere a cualquier archivo o conjunto de archivos que pueden ser desplegados en la plataforma de destino. Ejemplos de unidades desplegables son: Docker image, Java WAR file, NPM module (gestor de paquetes para la plataforma Node JavaScript), Angular dist folder, y JS (JavaScript) minified file.
9. Infosec Testing o Testeo Infosec se refiere a cualquier prueba relacionada con la seguridad, manual o automatizada.
10. Performance Testing o Testeo de la Performance es cualquier prueba que se realiza para verificar la estabilidad de la aplicación una vez desplegada y en funcionamiento.
11. Platform Provisioning o Plataforma de aprovisionamiento alude al proceso de preparación de la plataforma de destino antes del despliegue. También puede incluir la prestación de los servicios externos que requiere la aplicación.
12. Promotion o Promoción describe el acto de promover una unidad desplegable desde un entorno inferior a uno superior.
13. Publication o Publicación Este será el proceso de publicación de una unidad desplegable desde el pipeline. Algunos ejemplos de publicación son:
- Empujar un archivo JAR a artifactory
- Empujar una imagen Docker al registro Docker
- Empujar un módulo npm al registro npm
- Automatizar la creación de un Git-tag en GitHub desde el pipeline
14. QA Testing o Testeo Preguntas y Respuestas hace referencia a cualquier proceso de validación manual o automatizado activado contra la aplicación desplegada que se ejecuta en un entorno de destino.
15. Source Code Repository (SCR) o Repositorio de código fuente describe cualquier solución de repositorio de código fuente utilizada por la organización, como: GitHub, GitLab, Bitbucket, AWS CodeCommit, or Subversion (SVN).
16. Target Platform o Plataforma objetivo hace referencia a cualquier sistema, servidor o aplicación que se requiera para ejecutar una unidad desplegable. Algunos ejemplos de plataformas de destino son Docker host, Kubernetes, Cloud Foundry, Nginx server, Apache server, Linux VM, y Apk Registry.
¿Por qué es tan importante utilizar los conceptos adecuados?
Para las grandes organizaciones con cientos de aplicaciones en proceso de desarrollo e implantación, la estandarización es la mejor manera de aumentar la eficacia del proceso de desarrollo de software. Sin embargo, no se puede aplicar un procedimiento estándar si no hay acuerdo sobre el lenguaje estándar.
¿Cómo Nisum puede ayudar?
En Nisum tenemos una amplia experiencia trabajando con organizaciones de alto rendimiento, y sabemos cómo aprovechar los proyectos de pipeline y automatización de cualquier naturaleza. Este blog es solo un ejemplo de cómo aseguramos la eficiencia empleando las mejores prácticas para nuestros clientes.
Si tu empresa tiene como objetivo construir una canalización CI/CD, nuestro equipo de Business Agility puede agilizar su proyecto utilizando metodologías ágiles, y nuestro equipo Digital puede apoyar a un equipo DevOps para entregar un trabajo de desarrollo fiable y de alta calidad. Contáctanos hoy mismo para comenzar su transformación DevOps y ayudar a su organización a lograr una velocidad de lanzamiento de alto rendimiento mientras usa los principios DevOps de flujo rápido, retroalimentación rápida y aprendizaje continuo.