Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/75134412 Mejorar la presentación del README.md #60

Merged
merged 2 commits into from
Aug 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 122 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,130 @@
# orquestador
# Orchestrator Service

## Entorno local
## Descripción

Para desarrollo en entorno local el perfil por defecto es "local" o también se puede aputar a un perfil especifico desde el application.properties en 'spring.profiles.active', reemplazando el valor por el perfil especifico "local", "dev", "prod". También se debe ejecutar el siguiente docker-compose "docker-compose-local.yml"
Este proyecto es un orquestador desarrollado en Java utilizando el framework Spring Boot. Se encarga de orquestar
llamadas a otros servicios mediante WebClient y Kafka, y se gestiona con Maven para la administración de dependencias y
la construcción del proyecto.

```docker compose -f docker-compose-local.yml up -d```
## Tecnologías Utilizadas

Se debe contar también, con un contenedor con mongodb en su puerto por defecto (27017)
### Lenguaje de Programación

- **Java 17**: El lenguaje principal utilizado para el desarrollo del proyecto.

```docker network create mongoCluster```
### Frameworks

```docker run -d --rm -p 27017:27017 --name mongo1 --network mongoCluster mongo:6 mongod --replSet myReplicaSet --bind_ip localhost,mongo1```
- **Spring Boot**: Framework para la creación de aplicaciones basadas en Spring que simplifica la configuración y el
desarrollo de aplicaciones nuevas.
- **Spring WebFlux**: Utilizado para construir aplicaciones reactivas y no bloqueantes.
- **Spring Data MongoDB Reactive**: Proporciona soporte para trabajar con MongoDB de manera reactiva.
- **Spring Kafka**: Utilizado para la integración con Apache Kafka.

### Gestión de Dependencias

- **Maven**: Herramienta de gestión de proyectos y comprensión utilizada para la construcción del proyecto, la gestión
de dependencias y la documentación del proyecto.

### Librerías Adicionales

- **Lombok**: Utilizado para reducir el código boilerplate mediante anotaciones.
- **MapStruct**: Utilizado para la generación automática de mapeos entre objetos.
- **OWASP Encoder**: Utilizado para la codificación segura de datos.
- **Validation API**: Proporciona anotaciones para la validación de datos.

### Testing

- **Spring Boot Starter Test**: Proporciona soporte para pruebas unitarias y de integración.
- **Reactor Test**: Utilizado para pruebas reactivas.
- **MockWebServer**: Utilizado para pruebas de servidores HTTP simulados.
- **JaCoCo**: Utilizado para la cobertura de código.

## Estructura del Proyecto

El proyecto sigue una estructura estándar de Spring Boot con Maven y está organizado utilizando la arquitectura
hexagonal (puertos y adaptadores):

```
src/
└── main/
├── java/
│ └── com/
│ └── entrevistador/
│ └── orquestador/
│ ├── application/ # Capa de aplicación
│ │ ├── service/ # Servicios de aplicación
│ │ └── usecases/ # Casos de usos de aplicación
│ ├── dominio/ # Capa de dominio
│ │ ├── excepciones/ # Excepciones de dominio
│ │ ├── model/ # Modelos de dominio
│ │ ├── port/ # (puertos)
│ │ └── service/ # Servicios de dominio
│ └── infrastructure/ # Capa de infraestructura
│ ├── adapter/ # Adaptadores (implementaciones de puertos)
│ ├── beanconfiguration/ # Configuraciones de Spring
│ ├── properties/ # Propiedades de la aplicación
│ └── rest/ # Enpoints REST HTTP
└── resources/
└── application.properties
```

## Requisitos Previos

- **Java 17** o superior
- **Maven 3.6.3** o superior
- **Docker** (para ejecutar MongoDB en un contenedor)

# Instalación

1. Clona el repositorio:
```sh
git clone https://github.com/EntrevistadorInteligente/si-orchestrator.git
```
2. Navega al directorio del proyecto:
```sh
cd si-orchestrator
```
3. Instala las dependencias:
```sh
mvn clean install
```

## Ejecución del Proyecto

Para ejecutar el proyecto, utilice el siguiente comando de Maven:

```sh
mvn spring-boot:run
```

## Compilación del Proyecto

Para compilar el proyecto, utilice el siguiente comando de Maven:

```sh
mvn clean install
```

## Entorno local (Docker Compose)

Para desarrollo en entorno local el perfil por defecto es "local" o también se puede aputar a un perfil especifico desde
el application.properties en 'spring.profiles.active', reemplazando el valor por el perfil especifico "local", "dev", "
prod". También se debe ejecutar el siguiente docker-compose "docker-compose-local.yml"

```sh
docker compose up -d
```

## Contribución
1. Clonar el repositorio
2. Crea una nueva rama desde la tarea con el nombre (feature/itemIdQuery|hotfix/itemIdQuery).
3. Realiza tus cambios y haz commit (git commit -m 'Agrega nueva funcionalidad').
4. Sube tus cambios (git push origin feature/itemIdQuery).
5. Abre un Pull Request.

## Derechos de Autor

\© 2024 Entrevistador Inteligente.

Este proyecto es de código abierto y se distribuye bajo la licencia GNU AFFERO GENERAL PUBLIC. Para más detalles,
consulte el archivo `LICENSE` en el repositorio.