...
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 réplicas ( nuevos PODs ) 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. Es importante conocer bien tanto la pila tecnológica utilizada, como todos los requisitos derivados de una comunicación HTTP.
- Para trabajar y configurar un proyecto nuevo deberemos leer la guía de FundewebJS
- Para conocer cómo desarrollar servicios REST correctos, deberemos revisar la Normativa de servicios REST
- Para saber cómo documentar un servicio REST deberemos seguir las indicaciones de Documentar APIs con OPENAPI
- Para desarrollar test en nuestros servicios deberemos leer la guía FundewebJS - Test
3. Arquitectura de proyectos
Los desarrollos de servicios de Mi Campus deben ser totalmente desacoplados para que permitan, si fuera necesario, cambiar el código fuente de un proyecto a otro para reorganizar la arquitectura de los PODs según la demanda de los usuarios. Para ello se ha optado por un enfoque basado en arquitecturas hexagonales (o de cebolla) que dividen el código en tres capas bien definidas de menor a mayor concreción con el dominio del servicio, siendo la capa mas externa la que comunica con cualquier sistema fuera de la aplicación (base de datos, otros endpoints REST, etc).
...