mirror of
https://github.com/Lemonochrme/service-architecture.git
synced 2025-06-08 13:40:50 +02:00
185 lines
5.4 KiB
Markdown
185 lines
5.4 KiB
Markdown
# Mini-Projet Architecture de Services
|
||
|
||
## Objectif :
|
||
|
||
Créer une application axée microservices en utilisant SOAP et REST
|
||
|
||
## Installation
|
||
|
||
```
|
||
mvn compile
|
||
```
|
||
|
||
Une fois le projet compilé, lancer les différents services SOAP et REST via `Spring Boot` :
|
||
|
||
```
|
||
mvn spring-boot:run -pl user-service
|
||
```
|
||
|
||
|
||
|
||
```
|
||
curl -X GET http://localhost:8082/volunteers/requests
|
||
curl -X POST "http://localhost:8082/volunteers/1/help?requestId=123"
|
||
curl -X POST -H "Content-Type: application/json" -d '{"description":"Available for emergency aid"}' http://localhost:8082/volunteers/1/spontaneous
|
||
```
|
||
|
||
|
||
|
||
|
||
|
||
# Specifications
|
||
|
||
### **1. Objectifs de l'application**
|
||
- **Aider les personnes en besoin** : Faciliter la publication de demandes d’aide par des personnes en situation de vulnérabilité.
|
||
- **Mobiliser des volontaires** : Permettre aux volontaires de répondre à des demandes d’aide ou de proposer une aide spontanée.
|
||
- **Gérer l’administration** : Faciliter l’administration et le suivi des demandes.
|
||
|
||
### **2. REST Microservices**
|
||
|
||
#### **2.1 User Service**
|
||
- **Features:**
|
||
- Account creation for requesters, volunteers, and administrators.
|
||
- User profile management (modification and deletion).
|
||
- Authentication and role management (requester, volunteer, administrator).
|
||
- **Main Endpoints:**
|
||
- `POST /users`: Create a user.
|
||
- `GET /users/{id}`: View a user's profile.
|
||
- `PUT /users/{id}`: Update a user.
|
||
- `DELETE /users/{id}`: Delete a user.
|
||
|
||
#### **2.2 Request Service**
|
||
- **Features:**
|
||
- Creation, validation, and management of help requests.
|
||
- Management of request statuses: Pending, validated, rejected, completed.
|
||
- Viewing and filtering requests by status.
|
||
- **Main Endpoints:**
|
||
- `POST /requests`: Create a request.
|
||
- `GET /requests`: List of requests (with possible filters).
|
||
- `GET /requests/{id}`: View a specific request.
|
||
- `PUT /requests/{id}`: Update the status or details of a request.
|
||
- `DELETE /requests/{id}`: Delete a request.
|
||
|
||
#### **2.3 Volunteer Service**
|
||
- **Features:**
|
||
- Viewing available requests.
|
||
- Offering help for a specific request.
|
||
- Posting spontaneous help offers.
|
||
- **Main Endpoints:**
|
||
- `GET /volunteers/requests`: List of available requests.
|
||
- `POST /volunteers/{id}/help`: Respond to a specific request.
|
||
- `POST /volunteers/spontaneous`: Post a spontaneous help offer.
|
||
|
||
#### **2.4 Feedback Service**
|
||
- **Features:**
|
||
- Recording and managing feedback after a request is completed.
|
||
- Viewing feedback associated with a request or user.
|
||
- **Main Endpoints:**
|
||
- `POST /feedbacks`: Add feedback.
|
||
- `GET /feedbacks`: View feedback (with possible filters).
|
||
|
||
#### **2.5 Administration Service**
|
||
- **Features:**
|
||
- Validation or rejection of help requests.
|
||
- Management of rejection reasons.
|
||
- Viewing global statistics (e.g., number of completed requests).
|
||
- **Main Endpoints:**
|
||
- `GET /admin/requests`: List of requests to be validated.
|
||
- `PUT /admin/requests/{id}/validate`: Validate a request.
|
||
- `PUT /admin/requests/{id}/reject`: Reject a request with justification.
|
||
|
||
### **3. Architecture technique**
|
||
- **Communication :** Chaque microservice expose une API REST avec des endpoints bien définis.
|
||
- **Base de données :** Chaque microservice possède sa propre base de données pour favoriser la décentralisation (database-per-service).
|
||
- **Authentification :** Utilisation de JWT pour sécuriser les communications.
|
||
- **Load Balancing et Gateway :** Utilisation d’un API Gateway pour la gestion des requêtes et la sécurité.
|
||
- **Monitoring :** Intégration de services comme Prometheus et Grafana pour le suivi des performances.
|
||
|
||
|
||
|
||
### **4. Avantages de cette architecture**
|
||
- **Scalabilité** : Les microservices peuvent être déployés et mis à l'échelle individuellement.
|
||
- **Flexibilité** : Possibilité d’utiliser différentes technologies pour chaque service.
|
||
- **Maintenance** : Une meilleure isolation des fonctionnalités simplifie le débogage et les mises à jour.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#### Tester les services
|
||
|
||
##### 1. **Créer un utilisateur avec UserService**
|
||
```bash
|
||
curl -X POST -H "Content-Type: application/json" \
|
||
-d '{"name":"Jane Doe", "email":"jane@example.com", "password":"1234", "role":"REQUESTER"}' \
|
||
http://localhost:8083/users
|
||
```
|
||
|
||
##### 2. **Créer une demande avec RequestService**
|
||
```bash
|
||
curl -X POST -H "Content-Type: application/json" \
|
||
-d '{"userId":1, "details":"I need help with my groceries"}' \
|
||
http://localhost:8082/requests
|
||
```
|
||
|
||
##### 3. **Valider une demande avec AdministrationService**
|
||
```bash
|
||
curl -X PUT http://localhost:8080/admin/requests/1/validate
|
||
```
|
||
|
||
##### 4. **Ajouter un feedback avec FeedbackService**
|
||
```bash
|
||
curl -X POST -H "Content-Type: application/json" \
|
||
-d '{"requestId":1, "comment":"Great service!", "rating":5}' \
|
||
http://localhost:8081/feedbacks
|
||
```
|
||
|
||
##### 5. **Un volontaire répond à une demande avec VolunteerService**
|
||
```bash
|
||
curl -X POST http://localhost:8084/volunteers/1/help?requestId=1
|
||
```
|
||
|
||
|
||
|
||
- **Lister les utilisateurs (UserService)** :
|
||
```bash
|
||
curl -X GET http://localhost:8083/users/1
|
||
```
|
||
|
||
- **Lister les demandes associées à un utilisateur (RequestService)** :
|
||
```bash
|
||
curl -X GET http://localhost:8082/requests/user/1
|
||
```
|
||
|
||
- **Lister les feedbacks pour une demande (FeedbackService)** :
|
||
```bash
|
||
curl -X GET http://localhost:8081/feedbacks/request/1
|
||
```
|
||
|
||
- **Lister les actions des volontaires (VolunteerService)** :
|
||
```bash
|
||
curl -X GET http://localhost:8084/volunteers/actions
|
||
```
|
||
|