Automatización y despliegues rápidos mediante SaaS

Roberto Galiana

Responsable de desarrollo de negocio en nuevos canales de Gamco

Una de las decisiones a las que se enfrenta una empresa que necesite una infraestructura de IT, es la de elegir en dónde se localiza esta infraestructura. Ya sean datos de la empresa, aplicaciones de software, servicios para clientes y otros recursos de IT, hay que decidir en qué lugar se despliegan.

Según las necesidades del negocio, los despliegues se pueden hacer localmente (On-premise), en los servidores de la empresa, o en la nube, en donde el despliegue se realiza en el servidor de un tercero.

Existen una variedad de ventajas y desventajas en ambos tipos de despliegue. Hay negocios que, por motivos de privacidad, seguridad o disponibilidad, no pueden plantearse una solución de despliegue en la nube. En el presente artículo nos vamos a enfocar en las facilidades que los despliegues en la nube aportan para la automatización de un pipeline CI/CD.

Primero vamos a ver qué es un pipeline CI/CD y luego vamos a explorar brevemente las posibilidades que ofrecen proveedores en la nube como Amazon y Azure.

Pipeline CI/CD

CI/CD significa Continuous Integration (Integración Contínua) y Continuous Deployment (Despliegue Contínuo). El pipeline CI/CD son los pasos que se siguen para distribuir una nueva versión de una aplicación de software. Los pasos concretos de un pipeline CI/CD varían de un negocio a otro, pero típicamente incluyen diseño, test, lanzamiento, despliegue en producción y validación.

El valor del pipeline CI/CD radica en la automatización del mismo. Cuando los pasos de distribución del software están automatizados, se pueden desplegar nuevas versiones con rapidez y frecuencia, lo que redunda en una reducción del tiempo que se tarda en arreglar errores y una mejora de la calidad del software.

Integración Continua (Continuous Integration)

El problema que se intenta resolver con la Integración Continua es el que surge cuando varios desarrolladores suben cambios a sus respectivas ramas del repositorio del proyecto. Conforme se acumulan cambios, el código de cada rama se va pareciendo cada vez menos al código base del proyecto. Esto provoca lo que se conoce como “integration hell” o “merge hell”, en el que se pasa más tiempo juntando los cambios de varios desarrolladores, que haciendo los cambios en sí mismos.

La Integración Contínua previene esta situación juntando las ramas de los distintos desarrollos, compilando y probando el código cada vez que un desarrollador sube cambios a su respectiva rama. De esta manera, si en algún momento la integración de los cambios que hay en una rama creara un conflicto con los cambios en otra rama, dicho conflicto se detectaría de manera temprana y se podría resolver a tiempo.

Despliegue Continuo (Continuous Deployment)

El despliegue continuo se refiere a una práctica de ingeniería del software que consiste en que las nuevas funcionalidades se entregan mediante despliegues automáticos. Típicamente se despliega la nueva versión del servicio y éste comienza a atender las nuevas peticiones. Cuando la anterior versión del servicio termina de procesar las peticiones que tuviera pendientes, se retira de producción.

No hay que confundir esta práctica con la de Entrega Continua (Continuous Delivery), que es una práctica en la que el software que se desarrolla tiene ciclos cortos y en los que se asegura que siempre hay una versión nueva para desplegar, aunque luego no se haga. Además, en la Entrega Continua, los despliegues siguen siendo manuales.

3 servicios de Pipeline

Pipeline CI/CD en Amazon AWS

Pipeline CI/CD en Amazon AWS

Amazon AWS provee del servicio AWS CodePipeline que es un marco de trabajo que permite la compilación, pruebas y despliegues del software en producción. A través de AWS CodePipeline se pueden automatizar estos procesos para implementar políticas CI/CD. AWS CodePipeline utiliza herramientas y recursos de Amazon AWS como instancias EC2, almacenamiento S3 y AWS CodeCommit para implementar los pipelines configurados en el servicio AWS CodePipeline.

Pipeline CI/CD en Microsoft Azure

Pipeline CI/CD en Microsoft Azure

Microsoft Azure provee de los servicios Azure Pipelines y Azure Test Plans como parte de su paquete Azure DevOps. El paquete de servicios Azure DevOps es un servicio que permite la administración del ciclo de vida del software. El servicio Azure Test Plans permite definir políticas de Integración Continua que compilan y prueban el código que se sube a un repositorio. Si no hay ningún problema, Azure Pipelines se encargaría de generar los artefactos de la aplicación. Finalmente, dichos artefactos se desplegarían en Azure App Service. Todos estos pasos pueden ser automatizados para implementar políticas CI/CD.

Pipeline CI/CD en Google Cloud

Pipeline CI/CD en Google Cloud

Google Cloud provee del servicio Cloud Build que, de manera similar a Amazon AWS y Microsoft Azure, permite importar código de un repositorio, compilarlo, probarlo y generar artefactos que se desplegarían mediante Cloud Deploy en Cloud Run. Cloud Build permite definir lo que denomina pasos de compilación, y cada uno de ellos se ejecutarían en un contenedor de Docket. Todos los pasos de Cloud Build pueden ser automatizados para implementar políticas CI/CD.

Conclusión

Un pipeline CI/CD permite probar y desplegar rápidamente una nueva versión del software, al tiempo que previene problemas de integración de código, especialmente en equipos grandes. Esto redunda en una mejora de la calidad del código y de la calidad del servicio al minimizar los tiempos de respuesta ante una incidencia en producción.

Los principales proveedores de hosting en la nube proveen de herramientas para implementar de manera sencilla y cómoda un pipeline CI/CD. Disponen de editores visuales que permiten definir procesos automatizados de compilación, prueba y despliegue para gestionar eficientemente el ciclo de vida del software. La alternativa a estos servicios es gestionar el pipeline on-premise, lo que implica la compra y administración de una infraestructura dedicada a ello.

► Te puede interesar: Soluciones en la nube para pymes

Compartir:
¿Qué es la inteligencia artificial?

Antes de explicaros qué es la inteligencia artificial, nos gustaría empezar con la frase del libro Age of intelligent machines (1992), de Raymond Ku [...]

Leer más »
¿Qué es Business Intelligence y cómo puede ayudar a su empresa?

El término Business Intelligence (o BI) define el uso de tecnologías de la información para identificar, descubrir y analizar datos comerciales, co [...]

Leer más »
¿Qué es el Procesamiento del Lenguaje Natural?

El Procesamiento del Lenguaje Natural o NLP analiza cómo las máquinas entienden, interpretan y procesan el lenguaje humano.

Leer más »
La Ley de Inteligencia Artificial: una breve explicación

Desde 2008, varios países han promulgado leyes que reconocen la importancia de integrar la inteligencia artificial (IA) en ámbitos clave de la vida [...]

Leer más »
Ver más entradas
© Gamco 2021, All Rights Reserved - Aviso legal - Privacidad - Cookies