La entrega continua y la integración son perfectas para la nube… Guía de la plataforma CI/CD en la nube

Alojar servicios de CI/CD en la nube puede acelerar la interacción entre la canalización de desarrollo y el repositorio de código fuente. La comodidad de los desarrolladores también tiene margen de mejora. Ya hay muchas opciones en el mercado.
ⓒ Banco de imágenes Getty

Si desea acelerar sus procesos de desarrollo y producción de software, debe automatizar al menos algunos de sus procesos de prueba y entrega. Para esto, es muy probable que se deba introducir una canalización de CI/CD. Es posible que también necesite un conjunto de pruebas para detectar errores.

CI, abreviatura de integración continua, es una metodología para automatizar el desarrollo, el empaquetado y las pruebas de software de manera consistente. CI ayuda al equipo a tener la confianza de que los cambios que realizan al crear versiones del código fuente no interrumpirán las compilaciones ni introducirán errores en el software. El punto final de un CI suele ser un registro completo en la rama principal de un repositorio de software.

CD, acrónimo de Continuous Delivery, automatiza la entrega de software probado a un entorno de infraestructura. No suele significar que el cliente lo ponga directamente en producción para confirmar la evaluación. Las organizaciones suelen iniciar el CD colocando la compilación en el entorno de desarrollo. Después de que un desarrollador completa y publica una nueva compilación, generalmente entra en un entorno de prueba e interactúa con una gama más amplia de usuarios (a veces, evaluadores internos por tienda, un grupo más grande de usuarios que se ofrecieron como voluntarios para la prueba beta, ‘dog-fooding’). monitorear de cerca Finalmente, si todo va bien, los evaluadores aprueban y ponen en producción la nueva versión.

Cada etapa de CD tiene la opción de volver rápidamente a la compilación anterior y generar un ticket de informe de error para que el desarrollador pueda corregirlo en la nueva compilación. El objetivo no es poner muchas compilaciones en producción, sino mejorar continuamente el software sin causar regresión. Esta actividad a menudo se denomina ‘DevOps’.

Por qué alojar CI/CD en la nube

Incluso puede alojar su plataforma de CI/CD en su propio centro de datos. Esto es especialmente cierto para las empresas que exigen que las aplicaciones y los datos se alojen dentro de los firewalls. La desventaja es que requiere un equipo dedicado para mantener la infraestructura. También hay algún desembolso de capital para el servidor.

La opción de hospedaje en la nube es apropiada para muchas empresas. Los costos son bajos y los gastos se compensan con los servicios prestados, como la incorporación, el mantenimiento de la infraestructura, el mantenimiento de la seguridad, el soporte y el desarrollo de software de CI/CD. Además, el alojamiento de software de CI/CD en la nube a menudo hace que sea más fácil y rápido interactuar con los repositorios de código fuente si la canalización está en la nube. Cuando los desarrolladores y evaluadores están dispersos geográficamente, alojar el repositorio en la nube ofrece una mejor experiencia para los desarrolladores que alojarlo en un servidor remoto detrás de un firewall.

CI/CD también se puede implementar en servidores locales y en la nube en una infraestructura híbrida. Varias opciones de CI/CD ahora se ejecutan como contenedores en clústeres de Kubernetes que se pueden ejecutar en las instalaciones y en la nube. En un escenario de desarrollo híbrido, cada componente se puede colocar donde corresponda, teniendo en cuenta la ubicación del desarrollador en la infraestructura de desarrollo y la ubicación de red de otros servidores.

Es posible que haya notado cuando escuchó el dicho “El punto final de un CI suele ser un registro completo en la rama principal de un repositorio de software”, pero los repositorios están inextricablemente vinculados con CI y CD. Más allá de los puntos finales del proceso de registro y prueba, el repositorio de software es la ubicación preferida para almacenar scripts y archivos de configuración de CI&CD. Sí. Si bien muchas plataformas de CI/CD pueden almacenar scripts y otros archivos internamente, el control de versiones fuera de la herramienta suele ser una mejor ubicación de almacenamiento.

Casi cualquier herramienta de CI/CD puede interactuar con Git. Algunos se integran directamente con GitHub, GitHub Enterprise, GitLab, Bitbucket, etc. Algunos admiten Subversion o Mercurial.

Cada lenguaje de programación o grupo de lenguajes (lenguaje JVM, lenguaje compilado LLVM, lenguaje .NET, etc.) tiende a tener sus propias herramientas de compilación y prueba. Para que una herramienta de CI/CD sea útil, debe admitir todos los idiomas incluidos en un proyecto en particular. De lo contrario, es posible que deba escribir más de un complemento para esa herramienta.

Hoy en día, las imágenes de Docker son cada vez más importantes para implementar software de microservicios modulares y distribuidos. Es de gran ayuda si está familiarizado con la forma en que la herramienta CI/CD maneja las imágenes de Docker, como la creación de imágenes a partir del código fuente, los archivos binarios, los requisitos previos y la implementación de imágenes en entornos específicos.

Nuevamente, si no tiene esto, es posible que deba escribir un complemento o una secuencia de comandos para implementar la funcionalidad de la ventana acoplable que necesita. De manera similar, las herramientas de CI/CD deben ser compatibles con Kubernetes y otros sistemas de orquestación de contenedores utilizados por el entorno.

Comprensión de CI/CD y herramientas

Los principios de CI y CD pueden parecer obvios, pero los detalles no lo son. Diferentes herramientas de CI/CD tienen diferentes niveles de soporte y documentación. Por ejemplo, en el caso de Jenkins, hay varios libros de referencia. Para otros productos, es posible que deba investigar los foros de soporte de documentación y las opciones de soporte pagado con mucho cuidado al elegir una herramienta.

Se puede encontrar un trasfondo general sobre CI en el libro de Duvall at al Addison-Wesley ‘Integración continua‘ vale la pena considerar. De manera similar, se puede encontrar un antecedente general sobre los CD en Humble y Farley’sEntrega continua‘ se puede encontrar en Ambos libros recibieron un premio Jolt en el momento de la publicación.

La clave de esta guía es elegir una plataforma de CI/CD, pero no se debe suponer que una plataforma es óptima para todos los proyectos de desarrollo de software. La mayoría usa múltiples lenguajes y entornos de programación, y no todas las plataformas de CI/CD los admiten todos.

En lugar de buscar una plataforma comprometida, puede elegir la plataforma de CI/CD que sea mejor para cada proyecto. Los principios generales de CI y CD son similares en todas las plataformas, pero es posible que los scripts que escriba no siempre sean aplicables. El tiempo de incorporación adicional para cada nueva plataforma puede tomar tiempo para los equipos de desarrollo, pero es probable que sea menos costoso que personalizar ampliamente las herramientas de CI/CD.

Cree un plan para su futura migración de CI/CD

De la misma manera, no debe asumir que una plataforma de CI/CD en particular satisfará para siempre las necesidades de un proyecto. Siempre debe estar preparado, por ejemplo, guardándolo en un script en un repositorio en lugar de hacerlo dentro de la herramienta CI/CD. En general, las implementaciones de contenedores en la nube son menos costosas que las implementaciones de instancias de servidores en la nube, y las implementaciones en la nube sin servidor son menos costosas que las implementaciones de contenedores. Desafortunadamente, pocas plataformas de CI/CD son actualmente capaces de funcionar sin servidor.

Sin servidor significa que el contenedor que ejecuta el proceso generalmente se instancia (en respuesta a un evento) a pedido. Para CI/CD, el evento desencadenante es un registro de código en una rama de repositorio específica. Y un webhook de repositorio ejecuta un proceso sin servidor. Cuando se completa el proceso, se libera el recurso.

Una de las pocas plataformas de CI/CD que puede funcionar sin servidor CI/CD sin servidores, Framework Pro sin servidorestá incluido en Es una versión mejorada de Serverless Framework de código abierto. El CI/CD sin servidor está optimizado para la implementación de aplicaciones sin servidor y actualmente solo se ejecuta en AWS.

Para optimizar una configuración de CI/CD basada en la nube (u otra aplicación en la nube), sería útil si todos los activos estuvieran “cerca” entre sí. Aquí, ‘cerca’ significa tanto una ubicación geográfica como una ubicación de red. Por ejemplo, si su base de datos está ubicada en Australia y su aplicación está ubicada en América del Norte, experimentará un gran retraso cada vez que su aplicación necesite leer o escribir datos. A pequeña escala, si la aplicación y la base de datos están en la misma zona de disponibilidad (AZ), la latencia entre las dos será mínima. Si estás en una zona horaria diferente en la misma área, la latencia será mayor, pero no tan alta como si estuvieras en otra área.

De manera similar, si la base de datos está en Google Cloud Platform en Virginia y la aplicación está en Microsoft Azure en Virginia, la latencia será mayor que si ambos están en el mismo proveedor de nube en la misma AZ. Todo esto se aplica a los repositorios (básicamente bases de datos), software de CI/CD, aplicaciones del mundo real, desarrolladores y probadores. Ayuda si todos están ‘cerca’, pero los efectos del retraso no son tan obvios como en los juegos interactivos en tiempo real.

Los desarrolladores estarían felices si pudieran enviar Code Commits al repositorio principal de manera confiable y sin latencia apreciable. Del mismo modo, los usuarios y probadores estarán satisfechos si están lo suficientemente “cerca” de la aplicación para lograr tiempos de respuesta inferiores a un segundo. Para el software de CI/CD, la clave es una conexión confiable al punto de implementación. Cierto retraso es aceptable siempre que no provoque tiempos de espera o caídas de paquetes.

Productos de CI/CD en la nube

Ya existe una cantidad sorprendente de servicios de CI/CD basados ​​en la nube. He dado 14 proveedores de productos de CI/CD en la nube como ejemplos aquí. La inclusión en esta lista no es una recomendación, ni es una crítica a su inclusión.

AWS CodePipeline

AWS CodePipeline(AWS CodePipeline)) es un servicio de entrega continua completamente administrado que ayuda a automatizar la canalización de lanzamiento para actualizaciones de infraestructura y aplicaciones rápidas y confiables. CodePipeline automatiza las fases de creación, prueba e implementación del proceso de lanzamiento cada vez que hay un cambio de código según el modelo de lanzamiento que defina. Esto nos permite ofrecer funciones y actualizaciones de forma rápida y fiable. Puede integrar fácilmente AWS CodePipeline con servicios de terceros como GitHub o sus propios complementos personalizados.

Azure DevOps

Azure DevOps(Azure DevOps) proporciona servicios para desarrolladores que ayudan a los equipos a planificar tareas, colaborar en el desarrollo de código y desarrollar e implementar aplicaciones. Puede trabajar en la nube con Azure DevOps Services (ADOS) o en las instalaciones con Azure DevOps Server (ADOS).

Azure DevOps proporciona una funcionalidad integrada a la que se puede acceder a través de un navegador web o un cliente IDE. Azure Pipeline proporciona servicios de compilación y lanzamiento para admitir la integración y la entrega continuas. Otros servicios independientes incluyen Azure Repos (administración de fuentes de Git y Team Foundation), Agile Boards (Agile Tools Suite), Azure Test Plans (pruebas manuales/exploratorias y herramientas para pruebas continuas) y Azure Artifacts (que permite a los equipos compartir paquetes de usuarios públicos). y registros privados).


Source: ITWorld Korea by www.itworld.co.kr.

*The article has been translated based on the content of ITWorld Korea by www.itworld.co.kr. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!

*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.

*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!