El objetivo de esta guía es introducir a cualquier desarrollador tanto en la pila tecnológica que se usa para el desarrollo de aplicaciones en Mi Campus, como en los procedimientos de configuración, despliegue y gestión de la calidad.
0. ¿Qué es Mi Campus?
Mi campus es una aplicación frontend implementada en VueJS comunicada con una nube de servicios web desarrollados con Spring Boot que la nutren. Para poder desarrollar y gestionar de manera ágil todo este ecosistema, cada aplicación está alojada en un contenedor Docker que incluye tanto a ella misma como un sistema operativo, librerías y configuración necesaria para su ejecución. A su vez también tiene una configuración hardware establecida indicando los requisitos de CPU y RAM que puede llegar a consumir. Llamaremos POD a una instancia en ejecución de una aplicación concreta.
1. Infraestructura bajo Mi campus
Como hemos visto anteriormente, Mi Campus está constituido por un conjunto de PODs que ejecutan aplicaciones independientes que interactúan entre sí. No obstante es necesario disponer de un sistema que orqueste los diferentes PODs y su configuración, para ello disponemos de Kubernetes (también llamado k8s) que es una plataforma para la gestión y control de contenedores. Gracias a esta herramienta podremos tener una orquestación real de cada POD para que, en caso de necesidad, se creen nuevos PODs réplica para soportar una carga mayor y se den de baja cuando no sean necesarios de manera automática y desatendida.
Al mismo tiempo gracias al enfoque IaC (Infraestructure as Code) a partir de un fichero de texto, llamado manifiesto, podemos especificar cómo desplegar cada POD, con cuánta memoria mínima o máxima, cuándo escalar el POD en base a límites de recursos, etc. Es decir, todo el trabajo que hay que hacer de manera manual en una infraestructura tradicional los gestionará Kubernetes en base a lo que le indiquemos en los manifiestos. Adicionalmente, todo cluster Kubernetes tiene un punto de entrada, el cual se denomina Ingress, en el cual se pueden establecer reglas de tráfico entre el exterior y los diferentes PODs
2. Desarrollo de servicios
Toda la funcionalidad de Mi Campus se encuentra en la nube de servicios que nutren el frontend. Dichos servicios están desarrollados con el framework FundewebJS basado en SpringBoot y la manera de comunicarse con el frontend es exponiendo una API de servicios, que para Mi Campus será una API de servicios REST. Una API REST se puede resumir como un conjunto de URLs a las que nuestra aplicación es capaz de responder, por tanto, el protocolo de comunicación entre frontend y banckend (nuestros servicios) será mediante HTTP.