...
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).
Para poder definir esta arquitectura nos apoyaremos en el enfoque de diseño de proyectos Domain Driven Design, donde estableceremos dominios que guiarán tanto desde el diseño del core de nuestra aplicación como hasta las rutas donde deberán estar los endpoint REST.
A la hora de empezar un nuevo desarrollo, deberemos identificar su dominio y decidir si la funcionalidad a realizar debería incorporarse a un proyecto ya existente, porque ya modela dicho dominio, o bien en a uno nuevo porque no estaba contemplado con anterioridad. Igualmente deberemos analizar las rutas de los endpoints que expongamos para que reflejen el dominio modelado más allá del nombre que se le pueda dar al proyecto.
Junto con este modelado, la comunicación interna entre los diferentes elementos del proyecto se hace en base a eventos bajo el principio CQRS (Command Query Responsibility Segregation) que divide las operaciones de lectura de datos de las operaciones de escritura de datos. De esta manera queda totalmente desacoplada cualquier interacción dentro de la aplicación y nos permitirá, en un futuro, poder emitir esos eventos también fuera de la aplicación para que otros servicios "reaccionen" a determinadas acciones. No obstante, actualmente dichos eventos son sólo internos a la aplicación.
A nivel técnico, todos los proyectos se crean a partir de una semilla que contiene las librerías necesarias para trabajar. Dicha semilla evolucionará junto con la pila tecnológica.