Este proyecto tiene como objetivo desarrollar una aplicación autoescalable utilizando microservicios y una variedad de tecnologías modernas. A continuación, se detallan las tecnologías principales utilizadas en este proyecto:
-
Java: Lenguaje de programación de alto nivel utilizado para desarrollar los microservicios de la aplicación.
-
Spring Boot: Framework de desarrollo de aplicaciones en Java que facilita la creación de microservicios de forma rápida y sencilla.
-
Lombok: Biblioteca de Java que ayuda a reducir el código boilerplate en las clases Java, mejorando la legibilidad y mantenibilidad del código.
-
MySQL y PostgreSQL: Sistemas de gestión de bases de datos relacionales utilizados para almacenar los datos de la aplicación.
-
Eureka: Servicio de registro y descubrimiento de microservicios utilizado para facilitar la comunicación entre los diferentes servicios de la aplicación.
-
Docker: Plataforma de contenedores que permite empaquetar, distribuir y ejecutar aplicaciones en entornos aislados.
-
Spring Cloud Gateway: Componente de Spring Cloud que proporciona una puerta de enlace para enrutar las peticiones a los microservicios de la aplicación.
-
Keycloak: Plataforma de gestión de identidades y accesos utilizada para la autenticación y autorización de usuarios en la aplicación.
-
Resilience4j: Biblioteca de Java que proporciona herramientas para la implementación de tolerancia a fallos y resiliencia en los microservicios.
-
Kafka: Plataforma de mensajería y streaming distribuido utilizada para la comunicación entre los diferentes componentes de la aplicación.
-
Zipkin: Sistema de trazabilidad distribuida utilizado para el monitoreo y seguimiento del flujo de las solicitudes en los microservicios.
-
Prometheus: Sistema de monitoreo y alerta que recopila métricas y datos de tiempo de ejecución de los microservicios.
-
Grafana: Plataforma de visualización de datos utilizada para crear paneles y gráficos basados en las métricas recopiladas por Prometheus.
El proyecto busca implementar las siguientes funcionalidades:
- Creación de microservicios utilizando Spring Boot para cada componente de la aplicación.
- Implementación de la arquitectura de microservicios con comunicación entre ellos mediante Eureka y Spring Cloud Gateway.
- Utilización de Docker para la contenerización de los microservicios y facilitar su despliegue en entornos de producción.
- Integración de Keycloak para la gestión de la autenticación y autorización de los usuarios.
- Implementación de tolerancia a fallos y resiliencia en los microservicios utilizando Resilience4j.
- Uso de Kafka para la comunicación asíncrona y la transmisión de eventos entre los distintos componentes de la aplicación.
- Implementación de la trazabilidad distribuida con Zipkin para el monitoreo del flujo de las solicitudes.
- Monitoreo de métricas y alertas en tiempo real con Prometheus y visualización de datos mediante Grafana.