...
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 desde el diseño del core de nuestra aplicación hasta las rutas donde deberán estar los endpoint REST.
...
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, a su vez también se desarrollan librerías internas que pueden incluirse en el proyecto en cualquier momento, tanto en su creación o con posterioridad. Dicha semilla evolucionará junto con la pila tecnológica.
...

