Estudio y diseño de una solución para el despliegue de aplicaciones con opciones de software libre basado en contenedores (Kubernetes) - Malla Asimbaya, Gustavo Alejandro (2022)
En los últimos años el uso de las nuevas tecnologías ha evolucionado camino a los microservicios esto debido a la necesidad de satisfacer la demanda de los usuarios y las empresas. Del mismo modo que las organizaciones empresariales evolucionan en cómo hacen las cosas, las aplicaciones ligadas a los procesos de dichas empresas deben seguir el mismo camino para lograr su único objetivo, satisfacer dichas necesidades y servir al usuario final de la forma más eficiente. Las grandes empresas líderes en tecnología han desarrollado sus infraestructuras en arquitecturas basadas en microservicios. Esto le da una gran ventaja frente a la arquitectura monolítica, por ejemplo, el despliegue aislado de cada componente de la aplicación le da una mayor flexibilidad al momento que la aplicación enfrente nuevos niveles de escalabilidad, así como también facilitar las actualizaciones al no tener que parar todo el proyecto, únicamente el módulo a actualizar. Los microservicios están estrechamente ligados al concepto de contenedores. Un contenedor es una unidad estandarizada donde se empaqueta las aplicaciones y que incluye todo lo necesario para que el software pueda ejecutarse. Sin necesidad de conocer cómo funciona internamente la aplicación puede ser versionado, reutilizado y replicado fácilmente tanto en ambientes de pruebas como en producción. El archivo de configuración de Docker bastará para adaptar el entorno de ejecución dónde va a ser escalado. A partir de ese fichero se puede generar una imagen que puede ser desplegada en un servidor en cuestión de segundos. Gracias a esta tecnología se abre la oportunidad para el despliegue y desarrollo de servicios y aplicaciones con alta disponibilidad y máxima escalabilidad, ya que supone una manera de virtualización mucho más rápida y eficiente. No basta con el despliegue de contenedores para asegurar una alta disponibilidad de las aplicaciones que corren sobre cada uno de ellos, ya que pudieran tener problemas como un alto tráfico de entrada que obligaría a escalar cada uno de estos servicios sin perder la continuidad del mismo. Para esto hace falta la orquestación de contenedores. Este servicio es conocido como Kubernetes y es usado cuando la cantidad de aplicaciones basadas en contenedores supera un límite imposible de administrar, en este caso su uso y dominio es fundamental. Este proyecto surge de la necesidad de buscar un diseño en el cual las aplicaciones con arquitectura tanto monolíticas como de microservicios puedan contener sus servicios en una arquitectura escalable, de alta disponibilidad y con balanceo de carga, acompañada de la orquestación de contenedores por medio de kubernetes. La motivación de este trabajo, por tanto, es desarrollar un diseño para el despliegue de aplicaciones basado en la arquitectura de los microservicios. Permitiendo de tal manera, la comunicación entre los distintos servicios que componen el diseño y así poder llevar a cabo su despliegue mediante kubernetes. De esta manera las aplicaciones desplegadas sobre este diseño serán escalables, mantendrán alta disponibilidad y serán redundante a fallos, además de otras ventajas que implica el uso de una plataforma como esta.