CAPÍTULO II. MARCO TEÓRICO
2.2 A RQUITECTURA Y GESTIÓN ENTORNOS DE COMPUTACIÓN EN LA NUBE
2.2.5 Modelos de Entrega e Integración continua en una infraestructura en la nube
La industria del desarrollo de software ha batallado a través de los años en contra de las malas prácticas que terminan en pésima calidad del producto y problemas cuando funciona en producción. Las pruebas de software, por un lado, han tenido gran impacto en la calidad de las aplicaciones que se crean. Otro punto es la intervención manual que, en muchas ocasiones, influye en errores que se presentan cuando se le otorga el programa al consumidor; mayormente, tecnología emergente y demanda de nuevas ideas a la brevedad posible. Es por ello, que los modelos de entrega e integración continua han apoyado a los equipos de desarrollo,
considerablemente, para evitar caer en estos fallos.
Empleando las palabras de Arachchi y Perera (2018), se dice que se relaciona con los principios de las metodologías ágiles donde se busca satisfacer al cliente con la entrega temprana y continua de software con valor, debido a que provee más eficiencia y productividad en
procesos ágiles (p. 2). Así pues, se resume en ayudar a la capacidad de apoyar el proceso de mejora continua en un producto de software. Ejemplos como la entrega de mejoras, arreglo de errores e introducción de nuevas funcionalidades se pueden encajonar dentro de esa definición.
Ahora bien, se pretende, entonces, definir ambos procesos que parecieran ser lo mismo, ya que apoyan el mismo objetivo general, pero tienen responsabilidades distintas. Comenzando con la integración continua, según el autor Ravi Teja Yarlagadda, en un artículo publicado en el Journal of Emerging Technologies and Innovative Research [Revista de Tecnologías Emergentes
e Investigación Novedosa], se define este concepto como una metodología de desarrollo de software en la cual los programadores están a cargo de la incorporación de actualizaciones al código en un repositorio único y compartido, seguido de revisiones y compilaciones automáticas, para encontrar y corregir errores tempranamente. (Yarlagadda, 2018, p. 1421)
A continuación, para el concepto de la entrega continua, los autores Somya Garg y Satvik Garg (2019), en un artículo publicado en el acta de congreso In 2019 IEEE Conference on Multimedia Information Processing and Retrieval (MIPR) [Conferencia sobre el procesamiento y recuperación de información multimedia en 2019 IEEE], manifiestan que es una política de la ingeniería del software que se centra en reducir el tiempo requerido para producir un software (…) es decir, un enfoque en desplegar cambios pequeños de manera más frecuente. (p. 2)
Volviendo al punto de la demanda, cabe destacar una conclusión de lo anteriormente mencionado: que la característica principal de esto es la automatización. Se aprecia que la
entrega continua no es más que un elemento, sumamente importante, que viene a formar parte de una serie de pasos que se tiene que realizar antes de desplegar una actualización de código en el ambiente de producción. Esto supone tener listos procesos que sean capaces de hacer
migraciones de código al ambiente de producción de forma ágil, segura y eficaz, sin intervención humana.
Por consiguiente, a la hora de colocar controles sistemáticamente dentro de línea de desarrollo y pruebas de código, así como de la migración de este al ambiente de producción, se puede incrementar la productividad de los equipos involucrados en el ciclo de desarrollo de software para preocuparse menos por temas administrativos y más por aquellos que requieren mayor atención, como el terminar los entregables comprometidos y también el corregir errores que aparecen dentro de las operaciones de las aplicaciones.
Ahora bien, estas prácticas no son ajenas a la operación de la creación y entrega de software utilizando ambientes en la nube. Inclusive, no existe incompatibilidad por la cual herramientas como Jenkins, Bamboo, Circle CI, Git, GitLab, BitBucket, CodeShip tienen una integración sumamente completa con tecnologías de la nube de la mayoría de los proveedores existentes en el mercado. Además, de la misma forma, estos mismos proveedores han creado sus propios servicios, los cuales proveen de funcionalidades de integración y entrega continua completas o parcial, es decir, se complementan con alguna otra herramienta.
La figura 2.3 muestra la integración de estas herramientas con los servicios ofrecidos por el proveedor de la nube, en este caso, el de Google.
Figura 2.3. Implementación continúa usando Servicios de la nube de Google
Figura 2.3. Implementación continua usando servicios de la nube de Google. Adaptado de “Implementación continua en Google Kubernetes Engine mediante Jenkins”, Google, 2021, Cloud Architecture Center, párr. 1.
Recuperado de: https://cloud.google.com/architecture/continuous-delivery-jenkins-kubernetes-engine. CC BY 4.0.
De esta manera, gracias a la utilización de interfaces de programación de aplicaciones (API’s), la integración de estos servicios se realiza de forma rápida y eficiente. Una de las ventajas recae en la compatibilidad con las tecnologías con las cuales la organización esté trabajando. No importa si no se tiene licencia para operar con BitBucket como repositorio de control de versionamiento, si se tiene acceso a GitHub, entonces, se tendrá las mismas
capacidades de acceso a consumir servicios de la nube. Esto aplica para cualquier herramienta de terceros que se tenga para administrar el canal de integración y entrega continua.
Debido a esto, el punto es demostrar la flexibilidad que existe entre tecnologías y cuál se puede aprovechar de gran manera, contrario a utilizar ambientes locales que, potencialmente, pueden tener problemas con versiones no soportadas entre sí, etc. Es por esto que se puede ver en la figura 2.3, una pequeña variación entre usar Jenkins o un servicio directo de Google llamado Cloud Build (“Constructor de la nube”), inclusive, ambos al mismo tiempo, lo cual no afecta los otros componentes de la infraestructura.
2.2.6 Gestión de operaciones de aplicaciones de software en una infraestructura en