# Introduction

## **🌟** Qu'est-ce que c'est DockerCoins et pourquoi l'utiliser ?

**DockerCoins** est une application éducative qui simule une crypto-monnaie fictive pour enseigner de manière ludique et pratique les concepts fondamentaux de **Docker**, des **micro-services** et du **déploiement distribué**.

Grâce à ses composants clés, tels qu’un **worker** pour miner des coins, une base **Redis** pour le stockage et une interface **WebUI** pour visualiser la production en temps réel, ce projet permet d'explorer toutes les étapes de la création, du déploiement et de la gestion d’une application distribuée.

En mettant l'accent sur l’utilisation de **Docker Machine** dans un environnement **Windows avec VMware**, DockerCoins offre une opportunité unique de :

* **Configurer des conteneurs** et établir des réseaux entre services.
* Explorer les notions de **scalabilité**, de **sécurité**, et de **maintenance**.
* Comprendre les principes des architectures modernes en reproduisant un environnement réaliste.

Accessible aux **débutants** et aux **professionnels**, DockerCoins est idéal pour expérimenter les technologies Docker dans un cadre engageant et interactif, tout en maîtrisant les bases des systèmes distribués.

L'objectif est de comprendre non seulement comment fonctionne une application distribuée, mais aussi comment la concevoir, la sécuriser et la maintenir dans des environnements modernes.

***

## 🎯 **Le Contexte du Projet**

{% stepper %}
{% step %}
**Installer et configurer Docker Desktop** sur un environnement Windows.
{% endstep %}

{% step %}
**Déployer DockerCoins** sur un cluster local simulé à l'aide de VMware pour gérer plusieurs nœuds Docker.
{% endstep %}

{% step %}
**Expérimenter les micro-services** : décomposer une application en plusieurs composants indépendants mais interconnectés.
{% endstep %}

{% step %}
**Explorer des concepts avancés** comme le scaling, la gestion de clusters avec Docker Swarm, et la mise en œuvre de bonnes pratiques de sécurité.
{% endstep %}
{% endstepper %}

Le projet vise à recréer une infrastructure de type production dans un cadre pédagogique.

***

## 🛠️ **Le Concept : Une Métaphore Ludique**

DockerCoins simule le **minage** d’une cryptomonnaie fictive et inutile, appelée **DockerCoins**. Ce processus implique plusieurs "travailleurs", chacun ayant un rôle spécifique :

* 🌀 **RNG (Random Number Generator)** : Génère des nombres aléatoires, comme la matière première.
* 🔐 **Hasher** : Convertit ces nombres en valeurs "hachées", essentielles pour valider les transactions.
* 🏗️ **Worker** : Vérifie les valeurs hachées et crée un DockerCoin si les conditions sont remplies.
* 📦 **Redis** : Stocke les DockerCoins créés, pour en garder une trace historique.
* 🖥️ **WebUI** : Une interface visuelle pour surveiller les performances et les gains en temps réel.

{% hint style="info" %}
**💡 Comment ces services travaillent ensemble**<br>

* **Étape 1** : Le service **RNG** génère un nombre aléatoire.
* **Étape 2** : Le **Worker** envoie ce nombre à **Hasher**, qui génère un hash.
* **Étape 3** : Si le hash commence par un "0", le **Worker** considère que le DockerCoin est validé et l’enregistre dans **Redis**.
* **Étape 4** : Enfin, **WebUI** affiche vos DockerCoins dans une interface graphique.
  {% endhint %}

***

## 🚀 **Ce Que Vous Allez Apprendre**

Cette documentation est conçue pour vous accompagner étape par étape dans :&#x20;

{% stepper %}
{% step %}
**L’installation et la configuration des outils nécessaires** sur un environnement Windows avec VMware.
{% endstep %}

{% step %}
**La compréhension du fonctionnement des micro-services** et de leur interaction dans une architecture Docker.
{% endstep %}

{% step %}
**La sécurisation et la gestion des services** pour garantir la stabilité et la robustesse du système.
{% endstep %}

{% step %}
**L’exploration des fonctionnalités avancées** comme le scaling des services et les mises à jour progressives.
{% endstep %}

{% step %}
**La réflexion sur des améliorations futures** pour rendre le projet encore plus efficace et proche des cas d’utilisation réels.
{% endstep %}
{% endstepper %}

***

## 👥 **Pour Qui Est Cette Documentation ?**

Cette documentation est conçue pour **tout le monde**, que vous soyez :

* **Un débutant curieux** : Vous découvrirez les bases de Docker de manière ludique.
* **Un étudiant en informatique** : DockerCoins est un excellent laboratoire pour comprendre l’orchestration et les micro-services.
* **Un professionnel** : Vous apprendrez comment intégrer des concepts modernes dans vos projets.

> **Astuce 📝** : Même si vous n’avez jamais utilisé Docker, suivez les étapes dans l’ordre. Des notes et explications simplifiées vous aideront à progresser.

***

## 🖥️ **Les Technologies que Vous Utiliserez**

Ce projet s’appuie sur des outils et technologies modernes, essentiels pour construire des applications distribuées :

* **Docker Desktop** : Pour exécuter et gérer des conteneurs Docker localement sur Windows.
* **VMware** : Pour simuler un environnement de cluster avec plusieurs machines virtuelles.
* **Docker Compose** : Pour orchestrer plusieurs services à l’échelle locale.
* **Docker Swarm** : Pour transformer plusieurs hôtes Docker en un cluster unifié.
* **Redis** : Une base de données NoSQL rapide et fiable pour le stockage temporaire.
* **Git** : Pour gérer le code source et collaborer efficacement.

***

## 🧠 **Pourquoi ce Projet Est Pertinent Aujourd’hui ?**

Dans le monde des applications modernes :

* **La conteneurisation** est essentielle pour le déploiement d'applications modulables et portables.
* **Les micro-services** permettent de construire des systèmes robustes et scalables, où chaque composant peut évoluer indépendamment.
* **Docker et Swarm** offrent une infrastructure puissante mais simple à utiliser pour orchestrer ces micro-services.

DockerCoins combine tous ces éléments pour vous offrir une expérience pratique et utile.
