diff --git a/docs/README.md b/docs/README.md index 20c2d3a..ac8f580 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,6 +12,18 @@ Ce dossier documente l'API HTTP, l'architecture et les décisions techniques. - Service `StorageService` (voir `src/lib.rs`) encapsule la logique de stockage, récupération et nettoyage TTL. - `src/main.rs` démarre Tide avec état `StorageService` et une boucle de nettoyage périodique (60s). +Voir aussi: +- `architecture.md` +- `configuration.md` +- `guides_principaux.md` +- `guides_techniques.md` +- `guides_test.md` +- `tests_monitoring.md` +- `reseau_de_relais.md` +- `developpement.md` +- `depannage.md` +- `performance.md` + ## REX technique - Docker diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..ab8350c --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,13 @@ +# Architecture + +## Flux de Données + +- Entrées: requêtes HTTP `/store`, `/retrieve/:key`. +- Traitements: validation clés/TTL, encodage hex, stockage FS hiérarchique, métadonnées TTL. +- Sorties: réponses JSON normalisées. + +## Composants + +- Service `StorageService` (I/O disque, TTL, nettoyage). +- Serveur HTTP Tide (routes, état partagé). +- Nettoyage périodique (60s) basé sur fichiers `.meta`. diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..568a244 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,8 @@ +# Configuration + +## Services Disponibles +- HTTP sur port 8081 + +## Variables d'Environnement +- `RUST_LOG` (optionnel): niveau de logs. +- Pour Docker, monter `/app/storage` si persistance souhaitée. diff --git a/docs/demarrage_rapide.md b/docs/demarrage_rapide.md new file mode 100644 index 0000000..07ddce1 --- /dev/null +++ b/docs/demarrage_rapide.md @@ -0,0 +1,15 @@ +# Démarrage Rapide + +## Prérequis +- Rust stable et Cargo +- Optionnel: Docker + +## Installation +- `cargo build` + +## Lancement +- `cargo run -- --permanent` + +## Docker (optionnel) +- Build: `docker build -t sdk_storage:local .` +- Run: `docker run --rm -p 8081:8081 -v $PWD/storage:/app/storage sdk_storage:local` diff --git a/docs/depannage.md b/docs/depannage.md new file mode 100644 index 0000000..426e76b --- /dev/null +++ b/docs/depannage.md @@ -0,0 +1,12 @@ +# Dépannage + +## Problèmes Courants +1. Ports déjà utilisés: changer le port de publication Docker. +2. Permissions storage: vérifier l'UID/GID et droits du volume. +3. Clés invalides: s'assurer d'un hex 64 caractères. + +## Logs détaillés +- Exécuter avec `RUST_LOG=info`. + +## Healthchecks +- Ajouter une route `/health` (évolution possible) ou ping sur `/retrieve` avec clé connue. diff --git a/docs/developpement.md b/docs/developpement.md new file mode 100644 index 0000000..f7395fc --- /dev/null +++ b/docs/developpement.md @@ -0,0 +1,13 @@ +# Développement + +## Structure du Projet +- `src/lib.rs`: service métier +- `src/main.rs`: serveur HTTP Tide +- `tests/`: scénarios d'intégration + +## Ajout d'un Nouveau Service +- Créer une abstraction dédiée dans `src/lib.rs` ou module séparé. +- Câbler dans `main.rs` via `tide::with_state` si nécessaire. + +## Modification de la Configuration +- Mettre à jour `docs/configuration.md` et secrets CI/CD. diff --git a/docs/guides_principaux.md b/docs/guides_principaux.md new file mode 100644 index 0000000..49a397c --- /dev/null +++ b/docs/guides_principaux.md @@ -0,0 +1,5 @@ +# Guides Principaux + +- Concepts de base: clés hex 64, valeurs hex, TTL en secondes. +- API: `/store` (POST), `/retrieve/:key` (GET). +- Persistance: système de fichiers, sous-dossiers par préfixe de clé. diff --git a/docs/guides_techniques.md b/docs/guides_techniques.md new file mode 100644 index 0000000..5f4ca78 --- /dev/null +++ b/docs/guides_techniques.md @@ -0,0 +1,6 @@ +# Guides Techniques + +- `StorageService`: abstraction des opérations de stockage. +- TTL: sérialisé dans `*.meta` (UNIX timestamp secondes). +- Nettoyage: parcours des dossiers, suppression données expirées. +- Journalisation: sorties standard, intégration possible avec superviseur. diff --git a/docs/guides_test.md b/docs/guides_test.md new file mode 100644 index 0000000..35f0c86 --- /dev/null +++ b/docs/guides_test.md @@ -0,0 +1,5 @@ +# Guides de Test + +- Tests unitaires recommandés sur `StorageService` via répertoires temporaires. +- Tests d'intégration HTTP optionnels via client HTTP. +- Stratégies: cas TTL min/max, clés invalides, conflits de clé. diff --git a/docs/performance.md b/docs/performance.md new file mode 100644 index 0000000..2490e85 --- /dev/null +++ b/docs/performance.md @@ -0,0 +1,9 @@ +# Performance + +## Ressources Recommandées +- Disque rapide si grand volume d'écritures. +- Mémoire suffisante pour buffers I/O. + +## Optimisations +- Paramétrer la taille des blocs et la stratégie de fsync selon contraintes. +- Éviter les collisions de clés, supervision du cleanup TTL. diff --git a/docs/reseau_de_relais.md b/docs/reseau_de_relais.md new file mode 100644 index 0000000..41ab9fb --- /dev/null +++ b/docs/reseau_de_relais.md @@ -0,0 +1,10 @@ +# Réseau de Relais + +## Architecture Mesh +- À définir selon déploiement. + +## Ajout de Nœuds Externes +- Procédure à documenter si nécessaire. + +## Configuration Externe +- Ports, sécurité, endpoints à exposer. diff --git a/docs/tests_monitoring.md b/docs/tests_monitoring.md new file mode 100644 index 0000000..3509f2a --- /dev/null +++ b/docs/tests_monitoring.md @@ -0,0 +1,8 @@ +# Tests et Monitoring + +## Tests +- Unitaires et intégration via `cargo test`. + +## Monitoring +- Exposer métriques avec un reverse proxy/sidecar si nécessaire. +- Ajouter des healthchecks HTTP au niveau de l'orchestrateur.