La meilleure explication peut être trouvée (comme toujours) dans l'article bliki de Martin Fowler sur les serveurs immuables .
Un serveur, qu'il s'agisse de matériel ou d'un serveur virtuel dans le cloud, est généralement doté d'un système d'exploitation et d'une application.
Souvent, l'application et les composants du système d'exploitation nécessitent une configuration et des modifications doivent être appliquées. Par exemple, les correctifs de sécurité, le déploiement de nouvelles versions de l'application et les modifications de configuration.
Lorsque vous considérez que tout changement est une mutation de l'état du serveur, le terme immutable
commence à avoir plus de sens. Cela signifie qu'aucune mutation n'est autorisée sur un tel serveur.
C'est souvent le cas, lorsque des personnes sont impliquées dans le changement d'état du serveur - que ce soit le déploiement d'une version, un changement de configuration ou un chemin de sécurité. Le résultat est un serveur qui ne fonctionne plus comme prévu. Par exemple, l'application peut ne pas s'exécuter maintenant en raison d'une mauvaise configuration, etc.
C'est pourquoi une pratique de création de serveurs immuables est établie. Avec des serveurs immuables , une image d'un serveur est créée avec toute la configuration, les correctifs et les versions d'application regroupés. Ensuite, cette image de serveur peut être utilisée pour créer des serveurs dans divers environnements.
Le premier environnement où une telle image est utilisée, serait un environnement où l'image peut être testée pour fonctionner. Toutes les anomalies sont détectées et ce n'est qu'alors qu'une telle image peut être promue dans un environnement de production pour y remplacer les serveurs par la nouvelle version (qui est connue pour bien fonctionner).
Une fois que le processus de création des images et de promotion des images est automatisé, vous obtenez un processus très résistant aux pannes qui implique très peu d'efforts humains et très peu de chances d'introduire une défaillance dans votre service.
Souvent, les serveurs immuables n'incluent même aucun moyen de les "entrer", comme par exemple le serveur ssh est manquant. Dans ce cas, il arrive aussi souvent que toute la métrologie d'un serveur (métriques, journaux) soit expédiée à des systèmes externes tels qu'une base de données de métriques ou un service d'agrégation de journaux.
Avec les conteneurs (voir: Docker ), il existe également un processus pour créer des images, puis les générer dans des conteneurs en cours d'exécution. Ceux-ci sont assez souvent remplacés par de nouveaux conteneurs basés sur des images mises à jour, et ne sont jamais mutés. Cela signifie qu'aucun humain n'entre dans le conteneur pour "réparer quelque chose" en introduisant un changement.