# Trois possibilités de déployer son application ![image](../images/comparison-containers-vms.png) ## Bare-metal Un déploiement bare-metal signifie que l’application tourne directement sur un serveur physique, sans virtualisation ni conteneurisation. Ce serveur exécute un seul système d’exploitation, installé à même le matériel. C'est un modèle traditionnel assumé pour certains contextes avec des demandes exigeantes en termes de performance ou de sécurité. Il n’y a pas de couche d’abstraction (comme un hyperviseur ou un moteur de conteneur) : l’application tourne au plus près du matériel, avec un contrôle total sur l’environnement. **Avantages :** - Isolation forte. - Possibilité de faire tourner plusieurs OS différents. - Facile à sauvegarder ou migrer. **Inconvénients :** - Consommation importante de ressources. - Temps de démarrage élevé. - Taille d’images souvent massive. --- ## VM Une **machine virtuelle (VM)** émule un système complet (matériel + OS invité). Elle repose sur un **hyperviseur** (type 1 ou 2) qui fournit une couche d’abstraction entre l’OS hôte et les OS invités. Chaque VM dispose de **son propre noyau** et **fonctionne indépendamment** du système hôte. **Avantages :** - Isolation forte (noyau dédié, matériel virtualisé). - Possibilité d’exécuter plusieurs OS différents (Linux, Windows…). - Facile à sauvegarder (snapshot) ou migrer (live migration). **Inconvénients :** - Empreinte importante (CPU, RAM, disque). - Temps de démarrage élevé (boot complet). - Taille d’images souvent massive. --- ## Les conteneurs Un **conteneur** est une autre forme de virtualisation, mais où l'on a choisi d'isoler les processus les uns des autres. Il s’agit d’un ou plusieurs **processus isolés** tournant **directement sur l’OS hôte**, tout en **partageant le même noyau**. La conteneurisation repose sur : - des **namespaces** (réseaux, PID, users, etc.) pour cloisonner la vision du système, - des **cgroups** pour limiter la consommation de ressources. - des **union filesystem** pour En d'autres termes, un conteneur **donne l’illusion** d’un système indépendant, mais **reste dépendant du noyau** de la machine hôte. **Avantages :** - Démarrage instantané. - Empreinte mémoire et disque très réduite. - Facilité de duplication, déploiement et orchestration. **Inconvénients :** - Dépendance au noyau de l’hôte (Linux uniquement dans la majorité des cas). - Isolation plus légère qu’une VM (sensible en cas de faille kernel). - Moins adapté à l’exécution d’un OS complet ou différent. --- ## Comparaison rapide | **Critère** | **Bare-metal** | **Machine virtuelle (VM)** | **Conteneur** | |--------------------------|----------------------------------------------|----------------------------------------------------|----------------------------------------------------| | **Type d’isolation** | Physique (matériel dédié) | Virtuelle (hyperviseur, noyau dédié) | Logique (noyau partagé, isolation processus) | | **Noyau système** | Propre à l’installation | Propre à chaque VM | Partagé avec l’hôte | | **Temps de démarrage** | Lent (boot matériel + OS) | Moyen (boot VM + OS invité) | Instantané (processus isolé) | | **Empreinte ressource** | Élevée (plein OS + pas de mutualisation) | Moyenne (OS invité + duplication de services) | Faible (aucun noyau, processus natif) | | **Portabilité** | Dépend du matériel | Portabilité élevée via images | Très portable (format image + orchestration) | | **Flexibilité OS** | OS de son choix | OS différent de l’hôte possible | Nécessite un noyau compatible avec l’hôte | | **Cas d’usage typique** | Serveur critique, base de prod historique | Environnements isolés, tests OS, services legacy | Microservices, CI/CD, scalabilité rapide |