Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shrp777/java-micro-services-poc
https://github.com/shrp777/java-micro-services-poc
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/shrp777/java-micro-services-poc
- Owner: shrp777
- Created: 2024-11-19T14:38:08.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-12T10:51:47.000Z (26 days ago)
- Last Synced: 2024-12-12T11:36:22.311Z (26 days ago)
- Language: Java
- Size: 21.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Architecture Micro Services modèle - Java (Spring Boot) + Docker (PoC)
## Avertissement
🚨🚨🚨 Ce projet est une __Preuve de concept__ fourni à des fins pédagogiques. Le code doit être optimisé avant d'être employé en production. 🚨🚨🚨
TODO:
- le service auth n'est pas implémenté (signin, signup, signout, verify token...).
- le service gateway est simpliste. Il peut être amélioré.## Instructions pour l'installation (avant le lancement des services Docker)
- créer les fichiers de variables d'environnement en se basant sur les fichiers modèles nommés .env.example :
- ./secrets/tasks-db-password
- ./gateway-service/.env
- ./tasks-service/.env
- ./tasks-db/.env
- ./rabbitmq/.env## Génération des services Java avec Spring Initializr
Les services Java ont été initialisés à l'aide de Spring Initializr avec la configuration suivante :
- Project : Maven
- Language : Java
- Spring Boot : 3.4.0
- Project Meatadat :
- Group : dev.shrp
- Artifact : nom-du-service
- Name : nom-du-service
- Description : Micro Service nom-du-service
- Package name : dev.shrp.nom-du-service
- Packaging : Jar
- Java : 17
- Dependencies :
- Spring Web
- Spring Data JPA (si le service est connecté à une base de données)
- PostgreSQL Driver (si la base de données est de type PostgreSQL)- Pour chaque service Java :
- ajouter un fichier Dockerfile et les variables d'environnement utiles avec un fichier .env à la racine du dossier du service, à référencer dans le fichier compose.yaml
- personnaliser le fichier ./src/main/resources/application.properties pour accéder aux variables d'environnement```properties
spring.application.name=gatewaytasks_service=${TASKS_SERVICE}
```- [Configuration Spring Initializr pour le service Gateway](https://start.spring.io/#!type=maven-project&language=java&platformVersion=3.4.0&packaging=jar&jvmVersion=17&groupId=dev.shrp&artifactId=gateway&name=gateway&description=Service%20gateway&packageName=dev.shrp.gateway&dependencies=cloud-gateway-reactive,cloud-resilience4j,cloud-contract-stub-runner)
- Tutoriel pour le service Gateway : [Building a Gateway](https://spring.io/guides/gs/gateway)
## Lancement des services Docker
### Sans reconstruction des images Docker
```sh
docker compose up
```### Sans reconstruction des images Docker + activation du mode watch (permet de reconstruire en live les containers en cas de modification du code source)
```sh
docker compose up --watch
```### Avec reconstruction des images Docker au lancement (si modification du code source associé)
```sh
docker compose up --build
```### Avec reconstruction des images Docker au lancement (si modification du code source associé) + activation du mode watch (permet de reconstruire en live les containers en cas de modification du code source)
```sh
docker compose up --build --watch
```### Suppression des containers
```sh
docker compose down
```## Test de l'API avec Curl
- curl --request GET \
--url
- curl --request GET \
--url
- curl --request POST \
--url \
--header 'content-type: application/json' \
--data '{
"user_id":"f928c455-d2f3-4e30-bf58-178ae041e8c2",
"content":"Faire du sport"
}'--
!["Logotype Shrp"](https://sherpa.one/images/sherpa-logotype.png)
__Alexandre Leroux__
_Enseignant / Formateur_
_Développeur logiciel web & mobile_Nancy (Grand Est, France)