Está en la página 1de 7

1

Implementación
práctica de
microservicios con
Spring Boot

1*
José Daniel Gonzáles Zuleta
1
Affiliation, Ecuador/Esmeraldas,
Esmeraldas
jose.gonzales@pucese.edu.ec

Abstract. Creación de una arquitectura de microservicios usando el framework


de SpringBoot, usando diferentes tecnologías para un ambiente de producción
con sus respectivas medidas de seguridad.

Keywords: microservicios, API, back-end.

1 Introducción
El mundo de los microservicios es una gran solución para el diseño de aplicaciones, muchas aplicaciones
manejan un funcionamiento monolítico, es decir, funcionan en un solo bloque todos los componentes que
conforman dicha app, sin embargo, los microservicios llegaron a cambiar el mundo del desarrollo al
construir programas divididos en pequeñas partes, con la finalidad de repartir el trabajo y que si en algún
momento falla una parte de la aplicación, siga en funcionamiento para mantener una alta disponibilidad y
los usuarios no lo noten.
2 Desarrollo

Para este proyecto se procedió a construir una arquitectura de microservicios que constaba de 4
microservicios:
- Product-microservice
- Booking-microservice
- Stock-microservice
- Api-gateway

Todos estos servicios fueron desarrollados en SpringBoot. Spring Boot es un framework desarrollado para
el trabajo con Java como lenguaje de programación. Se trata de un entorno de desarrollo de código abierto
y gratuito. Spring Boot cuenta con una serie de características que han incrementado su popularidad y, en
consecuencia, su uso por parte de los desarrolladores back-end. Que en este caso además de usar el
framework antes mencionado, también se usó diferentes tecnologías para levantar esta pequeña
arquitectura:

- Intellij IDEA
- Maven
- SpringBoot
- Vault Hashicorp
- Keycloak
- Eureka Server
- Postman
- MySQL
- MongoDB
- RabbitMQ

Todos estos componentes son necesarios para el levantamiento de la arquitectura propuesta, a


continuación, se mostrará los resultados que se obtuvieron durante el desarrollo.
2.1 Maven
Maven es una herramienta open source para administrar proyectos de software. Por administrar,
nos referimos a gestionar el ciclo de vida desde la creación de un proyecto en un lenguaje dado,
hasta la generación de un binario que pueda distribuirse con el proyecto. Maven nació dentro de
la fundación Apache para complementar a Ant, la herramienta de compilación más usada en el
mundo Java. Si no la conoces, piensa en Make para C. Esto es, Ant permite crear scripts
(usando XML) que indican cómo compilar un proyecto Java y generar un binario.[1]
2.2 SpringBoot
Spring Boot es una herramienta que nace con la idea de ayudar al desarrollo de aplicaciones
basadas en Spring. La creación de aplicaciones mediante Spring requiere de un conjunto de
pasos que pueden resultar tediosos: primero, añadir en el pom.xml las dependencias necesarias
según la aplicación que se vaya a desarrollar; tras ello, desarrollar el código junto con los
respectivos archivos de configuración para finalmente desplegar la aplicación en un servidor.[2]
2.3 Intellij IDEA
Intellij-idea es un IDE realizado como el sucesor espiritual del Eclipse IDE ampliamente
utilizado utilizado para el desarrollo de Java. Eclipse, aunque extremadamente poderoso, a
menudo es criticado por ser extremadamente torpe y difícil de usar.[3]
2.4 Creación del primer microservicio
Se creo como primer servicio, el llamado “producto-microservice” que en primera
instancia solo será levantado para realizar peticiones por medio de la herramienta de
Postman.

2.5 Discovery Server


3
El discovery server trata sobre el levantamiento de un servidor Eureka, que tiene
como objetivo localizar y registrar servicios con los que se desea interactuar, además
nos ayuda con el balanceo de carga y la tolerancia a fallos. Para configurar Eureka
Server deben existir al menos dos tipos de aplicaciones, una aplicación que funcione
como servidor y otra como cliente.

2.6 Config Server


En este apartado se trata sobre las llaves de configuración de los distintos
microservicios, como el usuario y contraseña de conexión a las bases de datos de
MongoDB y MySQL, además del link de conexión hacia las bases de datos. Y una
configuración adicional es la de vincular con GitHub para guardar los commit o
diferentes cambios realizados, para luego ser llamados desde Postman.
2.7 Vault Hashicorp
Durante la práctica de microservicios se ve que las llaves de conexión son datos
delicados llevados a producción, es por eso, que se propone el uso de un sistema de
administración de datos. Vault es un sistema de administración de encriptación y
secretos basado en la identidad. Esta integración recopila los registros de auditoría de
Vault. La integración también recopila métricas de token, memoria y
almacenamiento. En este caso, se usa para ocultar las llaves de conexión de los
servicios, se levanta un servidor local de vault hashicorp donde se almacenarán y
encriptarán los datos.

Vault se puede utilizar para almacenar valores confidenciales y, al mismo tiempo,


generar dinámicamente acceso para servicios/aplicaciones específicas en un contrato
de arrendamiento. También se puede usar para autenticar usuarios (máquinas o
humanos) para asegurarse de que estén autorizados para acceder a un archivo en
particular.[4]

Y cada vez que inicien los servicios, es necesario levantar el servidor de vault para
que se pueda realizar las conexiones hacia las bases de datos, además, de usar un
comando para la inyección de las llaves de configuración.
5

2.8 Figures and Tables


Keycloak es una solución de gestión de identidad y control de acceso de código
abierto escrita en el lenguaje de programación Java y publicada bajo licencia Apache
2.0 que permite gestionar la autenticación y autorización de usuarios de terceros
servicios de manera sencilla y segura.[5]

Desde una perspectiva conceptual, la intención de la herramienta es facilitar la


protección de aplicaciones y servicios con poca o ninguna codificación. Un IdP
permite que una aplicación (a menudo llamada Service Provider o SP) delegue su
autenticación.

2.9 Postman
Postman es un entorno de desarrollo de API que ayuda a las personas a construir,
probar, documentar, monitorear y publicar documentación para sus API, es una
plataforma que permite y hace más sencilla la creación y el uso de APIs. Esta
herramienta es muy útil para programar porque da la posibilidad hacer pruebas y
comprobar el correcto funcionamiento de los proyectos que realizan los
desarrolladores web.[6]

Durante el desarrollo del proyecto se usó esta herramienta para consumir los
diferentes servicios y verificar si los cambios realizados se aplicaron en tiempo real
con solo enviar una petición de tipo GET.
7

3 Conclusiones
En conclusión, el desarrollo de microservicios es un enfoque de diseño distribuido destinado a
superar las limitaciones de las arquitecturas monolíticas tradicionales y tener todo separado en
partes para tener las aplicaciones siempre operativas y que los usuarios no noten las caídas por
algún fallo existente.
4 Referencias

[1] Erick Camacho, “javaHispano. Tutorial Introducción a Maven 3.” [Online]. Available:
http://maven.apache.org/download.html
[2] Autentia, “GUÍA COMPLETA.” [Online]. Available: https://www.autentia.com/libros/
[3] “Intellij-idea.”
[4] Zhulian Ginev, “7904-HeleCloud-HashiCorp-Whitepaper-v2-1,” 2021.
[5] Rubén Ruiz Torres, “Esta obra está sujeta a una licencia de Reconocimiento-NoComercial-
SinObraDerivada 3.0 España de Creative Commons,” Jun. 2020.
[6] “Postman.” [Online]. Available: https://riptutorial.com/es/home
 

También podría gustarte