Abstract
Desarrollar un sistema de software es un trabajo arduo desde su concepción hasta su despliegue. Durante todo este proceso se toman en consideración factores como los requerimientos del negocio, la afluencia de usuarios esperada, la escalabilidad del sistema, la forma en que se desplegará el sistema, entre otros tantos factores. Sin embargo, a pesar de que a lo largo del proceso de desarrollo del sistema se toman en cuenta continuamente estos factores, existe una parte del proceso que resulta vital para el buen devenir del sistema: el diseño de la arquitectura.
Ahora bien, dentro de esta delicada tarea existen dos principales vertientes: optar por una arquitectura monolítica más tradicional, u optar por un diseño orientado
a microservicios. Este trabajo busca explicar sobre qué trata la Arquitectura basada en Microservicios, las ventajas y desventajas que tiene este tipo de diseño, como llevar a
cabo la división de un sistema en microservicios, y finalmente cuando debería o no ser utilizada esta arquitectura.
Para apoyar esta investigación y dar sustento a las conclusiones obtenidas se tomó como dominio un sistema de Gestión Universitaria, pero, al ser tan extenso se
escogieron a su vez tres(03) subdominios: gestión de profesores, de materias y de nómina. Teniendo en cuenta este dominio, se realizaron tres(03) implementaciones, estas cubren un diseño monolítico y dos posibles soluciones basadas en microservicios.
Concluidas dichas implementaciones se pasa a resumir qué ventajas poseen y qué problemas fueron encontrados en cada una.
Por último se concluye en que circunstancias es recomendable aplicar microservicios tomando como base los resultados obtenidos anteriormente.
ABSTRACT
Developing a software system is hard work from conception to deployment.
Throughout this process, many factors have to be taken into account, such as: business requirements, expected user inflows, system scalability, how the system will be
deployed, and many others. However, although these factors are continually taken into account throughout the development process of the system, there is a part of the
process that is vital to the good development of the system: architecture design.
Within this delicate task there are two main approaches: opting for a traditional monolithic architecture, or opt for a microservice-oriented design. This work seeks to explain what is a Microservices based architecture, the advantages and disadvantages of this type of design, how to carry out the division of a monolithic system into microservices one, and, finally, when this architecture should be used.
In order to support this research and support the conclusions obtained, a University Management system was taken as a domain, but, since this is a really vast
domain, three (03) subdomains were chosen: management of teachers, subjects and paysheet. Taking into account this domain, three (03) implementations were done:
these cover a monolithic design and two possible solutions based on microservices.
Once these implementations have been completed, it is possible to summarize what advantages they have and what problems were found in each one.
Finally, it is concluded in what circumstances it is advisable to apply microservices based on the results obtained previously.