Ce dépôt couvre deux parties principales:
-
Réponse au besoin métier data
- restauration d'un backup JSONL dans MongoDB Time Series,
- contrôles d'intégrité,
- tests CRUD,
- génération d'un graphique de température.
-
Industrialisation technique
- cluster MongoDB Replica Set (3 nœuds),
- orchestration Docker Compose,
- automatisation des tests migration + réplication,
- documentation de déploiement (EC2/ECR/monitoring).
git clone https://github.com/PascalDuval/GreenCoop.git
cd GreenCoop- Docker Desktop (obligatoire)
- Git
- Optionnel: mongosh (pour le script PowerShell tout-en-un)
- Optionnel: Python 3.11+ pour exécution locale hors Docker
- Optionnel: Jupyter Notebook/Lab pour explorer les notebooks historiques
GreenCoop/
docker-compose.yml
docker-compose-minimal.yml
Dockerfile
run-all-replica.ps1
migration/ # code Python de migration + tests
scripts-replica/ # scripts de setup/test Replica Set
data/ # backup et sorties locales
docs/
deployment/
architecture/
archive/legacy-ancien/ # historique (anciens notebooks/scripts)
Le projet fonctionne sans configuration grâce aux valeurs par défaut du compose. Pour personnaliser:
Copy-Item .env.example .envPuis adaptez les valeurs de .env.
Variables principales:
ENABLE_REPLICA_TESTSMONGO_URIMONGO_PRIMARY_URIMONGO_PRIMARY_ADMIN_URIMONGO_REPLICA_URIMONGO_CLONE_SECONDARY_URIDB_NAMECOLLECTION_NAMEBACKUP_FILEVISUAL_FILE
docker compose up -d --build
docker compose logs -fLe conteneur data_migration exécute automatiquement:
- attente du PRIMARY,
- restauration du backup,
- génération du graphe,
- tests de migration,
- tests de réplication.
Relancer uniquement la partie tests/migration:
docker start -a data_migrationArrêter/nettoyer:
docker compose down -vPorts MongoDB exposés:
- PRIMARY:
localhost:27027 - SECONDARY:
localhost:27028 - SECONDARY:
localhost:27029
$env:MONGOSH_PATH="C:\path\to\mongosh.exe"
.\run-all-replica.ps1-
run-all-replica.ps1- stoppe l'existant (
docker compose down -v), - relance les conteneurs (
docker compose up -d --build), - initialise le Replica Set via
scripts-replica/init-replica-GreenCoop.js, - crée les utilisateurs via
scripts-replica/create-users.js, - vérifie l'accès en lecture sur un secondaire,
- exécute le conteneur
data_migration.
- stoppe l'existant (
-
scripts-replica/mongo-setup.sh- attend que
mongo1réponde, - initialise le Replica Set,
- attend l'élection du PRIMARY,
- crée les utilisateurs applicatifs.
- attend que
-
migration/restore_backup_and_plot.py- lit
data/backup_ObsProEtAmateur.jsonl, - remplace le contenu de la collection cible,
- génère le graphique
data/visualisation_temp.png.
- lit
-
migration/run_migration_tests.py- exécute les tests de migration dans cet ordre:
- intégrité (
test_integrity), - lecture (
test_crud_read), - insertion/suppression (
test_crud_insert_delete).
- intégrité (
- exécute les tests de migration dans cet ordre:
scripts-replica/run_replica_tests.py- vérifie l'état du Replica Set,
- vérifie l'accès admin au PRIMARY,
- vérifie la lecture en SECONDARY,
- vérifie la lecture read-only sur un nœud secondaire cloné.
Installer les dépendances:
pip install pymongo pandas matplotlibExécuter:
python -m migration.restore_backup_and_plot
python -m migration.run_migration_testsNote: en exécution hors Docker, MongoDB doit être accessible via les URI configurées.
Notebooks historiques disponibles dans:
archive/legacy-ancien/notebooksarchive/legacy-ancien/fonction_gen_CRUD.ipynb
Lancement:
jupyter labEnsuite, ouvrir les notebooks depuis archive/legacy-ancien.
Conseil: si vous utilisez un environnement Conda dédié, sélectionnez le kernel correspondant avant exécution.
docs/deployment/PROCEDURE_EC2.mddocs/deployment/docs/architecture/
archive/legacy-ancien: ancien périmètre conservéarchive/old-docs: anciennes versions de livrables