83 lines
4.8 KiB
Markdown
83 lines
4.8 KiB
Markdown
|
# Évaluation - TP
|
|||
|
|
|||
|
## Objectifs
|
|||
|
|
|||
|
1. Implémenter un micro-projet dans un temps donné
|
|||
|
2. Respecter les consignes
|
|||
|
3. S'organiser pour respecter les contraintes de temps et réaliser le contrat
|
|||
|
4. Appliquer les concepts et principes découverts lors des sessions précédentes
|
|||
|
|
|||
|
## Sujet
|
|||
|
|
|||
|
Concevoir et implémenter une architecture élastique de base de données autour des solutions [CockroachDB](https://www.cockroachlabs.com/docs/stable/), [Docker](https://docs.docker.com/) et [NATS](https://nats.io/).
|
|||
|
|
|||
|
### Contexte
|
|||
|
|
|||
|
Un client souhaite mettre en place une infrastructure élastique autour d'une base de données relationnelle.
|
|||
|
|
|||
|
Son système d'information est d’ors et déjà basé sur Docker pour la conteneurisation et NATS pour l'échange de messages entre les différents services de son environnement applicatif.
|
|||
|
|
|||
|
Son objectif est de pouvoir (à travers l'envoi de messages NATS) d'ajouter/supprimer des instances de base de données pour s'adapter automatiquement au niveau de charge de l'environnement applicatif.
|
|||
|
|
|||
|
Il voudrait qu'on lui fournisse un prototype implémentant les fonctionnalités suivantes:
|
|||
|
|
|||
|
- Un script `bootstrap-env.sh` qui créait un environnement basé sur Docker avec une instance de CockroachDB en mode cluster et un serveur NATS dans des conteneurs différents.
|
|||
|
- Un script `add-node.sh` qui démarre un nouveau conteneur CockroachDB qui rejoindra automatiquement le cluster déjà existant.
|
|||
|
- Un script `remove-node.sh` qui arrête un des conteneurs CockroachDB en cours d'exécution si il en reste plus de 1.
|
|||
|
- Un script `db-node-add-subscriber.sh` qui une fois lancé s'abonne à la publication du sujet `db.node.add` sur le serveur NATS et invoque automatiquement le script `add-node.sh`.
|
|||
|
- Un script `db-node-remove-subscriber.sh` qui une fois lancé s'abonne à la publication du sujet `db.node.remove` sur le serveur NATS et invoque automatiquement le script `remove-node.sh`.
|
|||
|
- Un script `test.sh` qui publie des messages sur le serveur NATS afin de tester le bon fonctionnement du prototype.
|
|||
|
|
|||
|
Un fichier `README` devra être fourni décrivant la procédure d'installation et d'utilisation du prototype.
|
|||
|
|
|||
|
Il voudrait également qu'on lui fournisse un [diagramme de séquence](https://fr.wikipedia.org/wiki/Diagramme_de_s%C3%A9quence) pour les développeurs et les administrateurs opérationnels illustrant les processus suivants:
|
|||
|
|
|||
|
- Ajout d'une nouvelle instance CockroachDB via un message NATS
|
|||
|
- Suppression d'une instance CockroachDB via un message NATS
|
|||
|
|
|||
|
Il aimerait enfin qu'on lui présente une potentielle solution, accompagnée d'un [diagramme d'activité](https://fr.wikipedia.org/wiki/Diagramme_d%27activit%C3%A9), pour limiter le nombre maximum d'instances CockroachDB en cours d'exécution à un instant T.
|
|||
|
|
|||
|
## Contraintes concernant l'implémentation
|
|||
|
|
|||
|
- Vos scripts doivent utiliser l'interpréteur Bash.
|
|||
|
- Le code doit être commenté.
|
|||
|
- Vous pouvez utiliser [nuts](./https://forge.cadoles.com/wpetit/nuts) (voir la section Release pour télécharger les binaires) pour la partie communication avec le serveur NATS.
|
|||
|
|
|||
|
## Éléments attendus
|
|||
|
|
|||
|
- Un répertoire nommé `projet` contenant les fichiers suivants:
|
|||
|
- `bootstrap-env.sh`
|
|||
|
- `add-node.sh`
|
|||
|
- `remove-node.sh`
|
|||
|
- `db-node-add-subscriber.sh`
|
|||
|
- `db-node-remove-subscriber.sh`
|
|||
|
- `test.sh`
|
|||
|
- `README`
|
|||
|
- Un fichier PDF nommé `document_achitecture.pdf` comprennant les diagrammes de séquence ainsi que la proposition de solution pour limiter le nombre maximum d'instances, accompagné de son diagramme d'activité.
|
|||
|
|
|||
|
Votre TP est à téléverser sur la plateforme de partage dans le répertoire défini par l'intervenant **avant la fin de la journée** (l'horodatage de création du fichier sur l'application fera foi). **Il ne devra pas être modifié après cette journée**.
|
|||
|
|
|||
|
L'archive (zip ou tar.gz, à votre convenance) comprenant vos fichiers devra respecter le format suivant:
|
|||
|
|
|||
|
```
|
|||
|
[prenom]_[nom]_evaluation.[extension]
|
|||
|
```
|
|||
|
|
|||
|
_Grille de notation page suivante_
|
|||
|
|
|||
|
<div style="page-break-after: always;"></div>
|
|||
|
|
|||
|
## Grille de notation
|
|||
|
|
|||
|
| Critère | Description | Points maximum |
|
|||
|
|---------|-------------|----------------|
|
|||
|
| Respect des consignes | Les consignes sont respectées. | 3 |
|
|||
|
| Implémentation | Le prototype fourni est fonctionnel. | 6 |
|
|||
|
| Documentation | Le code est commenté. Le fichier `README` est clair et exhaustif. | 3 |
|
|||
|
| Document d'architecture | Les diagrammes de séquences sont représentatifs du comportement du prototype. La proposition de solution est claire et argumentée. Le diagramme d'activité illustre correctement la solution présentée. | 6 |
|
|||
|
| Orthographe et vocabulaire | Les règles d’orthographe et le choix du vocabulaire est correct (l'usage d'anglicismes ne sera pas pénalisé). | 2 |
|
|||
|
| Prototypage de la solution proposée | Vous avez implémenté la solution de limitation des instances proposée et elle est fonctionnelle. | 3 (points bonus) |
|
|||
|
|
|||
|
**Le total de vos points ne peut excéder 20.**
|
|||
|
|