La computación en la nube ha influido enormemente en el desarrollo de software. Las aplicaciones y servicios nativos de la nube ―diseñados para aprovechar la infraestructura escalable alojada en la nube― son cada vez más comunes.
La CI alojada en la nube amplía las ventajas de la infraestructura alojada en la nube al proceso de creación, prueba e implementación de su software.
Si acaba de empezar con la CI/CD o ya dispone de una configuración local, esta página le ayudará a comprender cómo podría aprovechar la CI/CD alojada en la nube.
La integración, entrega e implementación continuas contribuyen a que la entrega de software a sus usuarios sea más rápida y fiable. Cada vez que realiza un cambio en su base de código, la CI/CD somete su software a una serie de pasos automatizados para verificar que funciona como se espera. Este sistema reduce el tiempo que transcurre desde el desarrollo hasta el lanzamiento, al tiempo que minimiza el número de errores en la producción, además de ofrecer numerosas ventajas adicionales.
Aunque pasar de un proceso manual a una CI/CD automatizada ahorra tiempo y esfuerzo, también supone una mayor exigencia para su infraestructura. En lugar de implementar una nueva versión de su producto en los entornos de prueba y ensayo cada pocas semanas o meses, la CI/CD significa que prueba el código más reciente varias veces al día o más.
Cuantas más personas tenga trabajando en la misma base de código y aportando cambios, más a menudo someterá su código a ese proceso automatizado de compilación, prueba e implementación. Si aloja su proceso de CI/CD en sus propios servidores, el número de servidores disponibles pronto se convertirá en el factor limitante. En momentos de gran demanda ―como cuando los equipos se afanan en una corrección crítica o ultiman funcionalidades para un lanzamiento― puede encontrarse con que su infraestructura interna de CI/CD se convierte en un cuello de botella.
En estos casos, alojar su proceso de CI/CD en la nube puede resultar de ayuda. La CI en la nube puede consistir en configurar sus procesos para que se ejecuten en una infraestructura alojada en la nube o en utilizar un servicio de CI/CD basado en la nube y totalmente gestionado.
Ambas opciones le permiten aprovechar la escalabilidad de la computación en la nube. En lugar de intentar encontrar un equilibrio entre tener suficiente capacidad en periodos de alta demanda y el coste de los servidores inactivos, puede escalar su granja de compilaciones según sea necesario.
Alojar la CI/CD en la nube amplía sus recursos bajo demanda y puede hacer que sus procesos sean más robustos, reducir los costes de mantenimiento y facilitar el desarrollo nativo en la nube.
Con la infraestructura alojada en la nube, configurar los entornos con scripts es la norma. Al plasmar la configuración de su infraestructura en código, se asegura de que todos los entornos de compilación y pruebas sean iguales. Este proceso también permite poner en línea más infraestructura cuando se necesita.
Al igual que el software en desarrollo, la propia infraestructura puede someterse a un proceso de CI/CD para garantizar que funciona como se espera. Este paso permite deshacer los cambios fácilmente.
Si está desarrollando una aplicación nativa en la nube, es muy probable que esté utilizando contenedores. Con los contenedores, las dependencias del entorno y los detalles de configuración se empaquetan con el software en un único artefacto, que puede implementarse en cualquier máquina con el tiempo de ejecución del contenedor.
Se han desarrollado herramientas de orquestación de contenedores, como Kubernetes, para facilitar el trabajo con grandes números de contenedores Estas automatizan tareas como la implementación, la gestión y el escalado.
El uso de contenedores en un flujo de trabajo de CI/CD hace que resulte más sencillo implementar la última compilación a las diferentes etapas del proceso. El artefacto de compilación es una imagen del contenedor que puede implementarse de forma coherente en cada entorno de pruebas antes de su lanzamiento a producción.
Con la CI/CD en la nube, los contenedores usan eficientemente los recursos de computación, y le permiten sacar partido de las herramientas de automatización. Puede aumentar la capacidad en momentos de gran demanda, pero ahorrar costes anulando contenedores y liberando la infraestructura subyacente cuando la demanda es menor.
Trasladar su proceso de CI/CD a la nube significa que su granja de compilaciones se aloja en máquinas virtuales. Si necesita más capacidad, solo tiene que configurarla: ya no tendrá que ocuparse de la adquisición, instalación y gestión del hardware físico.
Esto libera a su equipo para que se pueda concentrar en optimizar sus procesos y mantenerlos seguros. Como el coste está vinculado tanto a la potencia de procesamiento como al tiempo, vale la pena pararse a hacer las tareas lo más paralelas posible, para obtener así resultados para sus desarrolladores más rápido que si se usan menos máquinas durante mucho tiempo.
Un proceso de CI/CD es un activo esencial para cualquier equipo de desarrollo de software. Es el mecanismo para lanzar actualizaciones de software a sus usuarios. Alojar ese proceso en la nube reduce la probabilidad de que la ruta hacia el lanzamiento deje de estar disponible debido a una interrupción inesperada. Aunque este nivel de resiliencia puede parecer un lujo en un día normal, rápidamente pasa a ser necesario cuando se descubre un fallo crítico y hay que implementar una solución urgente.
Un proceso de CI/CD alojado en la nube también puede facilitar la adopción de una estrategia de implementación azul/verde, gracias a la escalabilidad de los recursos de la nube. Con un enfoque azul/verde, puede desviar rápidamente el tráfico a la versión anterior si surge un problema en producción. Este proceso significa que puede mantener su servicio mientras trabaja en una solución.
Aunque el CI/CD en la nube puede ofrecer ventajas significativas en términos de coste de infraestructura, escalabilidad y fiabilidad, hay que tener en cuenta algunos posibles inconvenientes y obstáculos.
Si su producto tiene una arquitectura basada en contenedores, la CI/CD alojada en la nube significa que puede utilizarlo para agilizar la implementación en sus entornos de prueba. Sin embargo, si trabaja con una arquitectura monolítica, empaquetar su software en contenedores puede ser un desafío.
Por supuesto, los contenedores no son esenciales para el alojamiento en la nube. Puede utilizar máquinas virtuales en la infraestructura de un proveedor de nube para ejecutar compilaciones y ofrecer entornos coherentes de preproducción para las pruebas. Dicho esto, las máquinas virtuales consumen más recursos que los contenedores, y los entornos deben configurarse por separado.
Si todavía no es experto en infraestructura como código (IaC), los miembros de su equipo necesitarán tiempo para aprender o tendrán que plantearse la posibilidad de poner a su disposición ese conocimiento.
Sin embargo, la experiencia trabajando con tecnologías en la nube es una habilidad deseable. Dar a sus equipos la oportunidad de desarrollar esas habilidades y utilizar la última tecnología puede favorecer la retención y la contratación de personal.
En la nube, el tiempo es dinero: no querrá pagar para que los recursos de computación permanezcan inactivos. Para que el alojamiento en la nube sea rentable, debe utilizarlo de forma eficiente. Eso significa aprovechar herramientas que supervisarán el uso y liberarán instancias inactivas tras un periodo de inactividad, o implementar esa lógica por sí mismo. Esta última opción puede requerir habilidades que su organización no tenga todavía, de modo que vale la pena investigar y sopesar las opciones.
La seguridad siempre ha sido una preocupación cuando se trata de alojar datos y servicios en la nube. Para algunas empresas, simplemente el concepto de que haya software crítico ubicado en el kit de un tercero es un obstáculo. No obstante, muchas organizaciones utilizan ahora nubes públicas para alojar tanto sus servicios activos como sus procesos de implementación, desde los repositorios de control de fuentes a los entornos de servidores de CI y de pruebas.
La identificación de posibles vectores de ataque, la creación de protecciones en su proceso de CI/CD y la implementación del control de acceso son esenciales para mitigar los riesgos que plantean posibles usuarios malintencionados.
Aunque la infraestructura como código (IaC), los contenedores y la orquestación de contenedores tienen sus raíces en la tecnología en la nube, también pueden integrarse en configuraciones de CI/CD que utilicen nubes privadas o un híbrido de infraestructura local y alojada en la nube.
Por ejemplo, puede optar por utilizar una infraestructura alojada en la nube para una parte de su proceso ―como la ejecución de pruebas de rendimiento― y mantener el resto en sus instalaciones.
Este enfoque híbrido ofrece varias ventajas:
Con TeamCity, puede elegir exactamente qué parte de su proceso de CI/CD desea ejecutar en la nube.
TeamCity On-Premises le ofrece la flexibilidad de alojar tanto su servidor de CI como sus agentes de compilación en sus instalaciones o en la nube. Tanto si desea alojar todas sus tareas de compilación, prueba e implementación en la nube como si desea ampliar su granja de compilaciones automáticamente cuando aumente la demanda, las integraciones nativas de TeamCity con los principales proveedores de la nube le ofrecen toda la funcionalidad que pueda necesitar.
TeamCity Cloud ofrece un servidor de CI gestionado, para que pueda centrarse en agilizar su proceso de compilación, prueba e implementación sin ninguna infraestructura que mantener. La opción de utilizar tanto agentes de compilación alojados por JetBrains como sus propias máquinas de compilación alojadas en la nube o en sus instalaciones le ofrece la libertad de crear una granja de compilaciones a su medida.
TeamCity Pipelines se ha concebido para que la CI/CD sea aún más eficiente con un enfoque flexible y nativo de la nube. Puede crear, gestionar y optimizar fácilmente sus procesos utilizando un editor visual de arrastrar y soltar o YAML, lo que mejor se adapte a su flujo de trabajo. Gracias a la compatibilidad con agentes alojados en la nube y autoalojados, TeamCity Pipelines le permite escalar según sus necesidades, así como garantizar que sus procesos de compilación, prueba e implementación sean lo más fluidos y automatizados posible.