Impossible de mettre en place une infrastructure immuable sans une architecture par application

Écosystème F5 | 09 juillet 2018

En 2013, nous avons découvert le concept de serveur immuable. Comme le terme « immuable » l’indique, un serveur immuable est statique. Sa configuration est fixe et ne peut pas (ou du moins ne devrait pas) être modifiée. Si des changements sont nécessaires, un nouveau serveur doté de la nouvelle configuration remplace le serveur en cours d’exécution. Cette approche est souhaitable, en particulier dans les environnements cloud et sur site fortement automatisés, car elle simplifie la configuration et améliore la fiabilité des systèmes d’automatisation qui pilotent les déploiements.

Ce concept fonctionne bien dans les environnements cloud et conteneurisés, y compris pour les services réseau et applicatifs, mais se prête moins aux architectures d’infrastructure traditionnelles et partagées.

Cela s’explique par le fait que la notion d’infrastructure partagée implique l’exécution de plusieurs services. D’après les données de F5 iHealth, cela peut représenter en moyenne 123 configurations individuelles (serveurs virtuels). Il n’est ni pratique ni recommandé d’essayer d’arrêter et de redéployer 122 de ces serveurs virtuels pour apporter une seule modification à un serveur virtuel.

Mais cela ne rend pas pour autant le concept irréalisable ni indésirable. Pour adopter une infrastructure immuable parallèlement à vos systèmes d’automatisation et d’infrastructure en tant que code (IaC), il est essentiel de passer à une architecture par application.

Pourquoi une infrastructure immuable ?

Pourquoi entreprendre une transformation aussi importante de l’architecture du réseau d’entreprise ? Permettez-moi de me citer moi-même, car je ne vois pas comment mieux le reformuler aujourd’hui :

À cause de l’entropie.

La loi de l’entropie logicielle est décrite par Ivar Jacobson et al. dans « Génie logiciel orienté objet : une approche guidée par les cas d’utilisation » :
Le deuxième principe de la thermodynamique stipule, en principe, que le désordre d’un système fermé ne peut pas diminuer : il peut seulement rester inchangé ou augmenter. Ce désordre se mesure par l’entropie. Ce principe semble également s’appliquer aux systèmes logiciels : à mesure qu’un système est modifié, son désordre, ou entropie, augmente toujours. C’est ce que l’on appelle l’entropie logicielle.

Cette loi s’applique également aux systèmes qui nécessitent des mises à jour du firmware ou du système, sur lesquels sont déployés des correctifs urgents et des patchs, et dont la configuration fait l’objet d’ajustements d’urgence qui, dans un monde parfait, ne devraient être effectués que dans le cadre d’un processus de gestion des changements rigoureusement respecté. Le problème que l’infrastructure immuable (jetable) cherche à résoudre est le suivant : plus on apporte de modifications à un système, plus celui-ci semble s’encombrer de résidus et devenir instable. Désordre. Chaos. Entropie.

Il ne s’agit pas seulement de modifier la configuration pour répondre aux besoins d’une application ou de déployer en urgence des correctifs virtuels afin de remédier à une vulnérabilité récemment découverte. Ce sont de bonnes raisons de modifier la configuration d’un service applicatif, mais ce ne sont pas les seules. Les correctifs urgents, les mises à jour et les dépendances de version peuvent également vous obliger à modifier l’une des 123 configurations exécutées sur une infrastructure partagée.

En adoptant une architecture propre à chaque application, vous éliminez le risque qu’une, deux, voire dix de ces instances perturbent la centaine d’autres qui s’exécutent sur une infrastructure partagée. En attribuant à chaque application son propre chemin de données, vous posez les bases d’une approche fondée sur une infrastructure immuable, qui facilitera la transition vers des pratiques de déploiement automatisées reposant sur l’infrastructure en tant que code.

Cela implique une chaîne de services applicatifs entièrement logicielle, dans laquelle les services applicatifs sont déployés selon une véritable architecture de « microservices applicatifs », à l’image du déploiement des microservices au sein de conteneurs.

Julian Dunn de Chef l’a bien résumé dans son blog : Infrastructure immuable : réaliste ou non ?

Une infrastructure immuable est généralement définie comme une pile que l’on construit une seule fois (qu’il s’agisse d’une image de machine virtuelle, d’une image de conteneur ou d’autre chose), dont on exécute une ou plusieurs instances et que l’on ne modifie plus jamais. Le modèle de déploiement consiste à arrêter l’instance ou le conteneur et à reprendre depuis la première étape : créer une nouvelle image et supprimer les anciennes instances.

Ainsi, si nous appliquons ce principe aux services applicatifs les plus étroitement liés (affines) à une application donnée, nous obtenons une architecture réseau à deux niveaux, composée de services partagés communs et essentiels — comme la protection du réseau contre les attaques DDoS et le contrôle des accès au moyen de pare-feu traditionnels basés sur les ports — qui alimentent une « pile » propre à chaque application, considérée comme immuable et déployée/gérée selon les principes de l’infrastructure en tant que code.

Mais il est réellement impossible de mettre en place une infrastructure immuable sans disposer d’une infrastructure propre à chaque application, car il faut d’abord découpler les services applicatifs concernés de leurs plateformes partagées. Si vous pouvez utiliser la même plateforme, simplement sous forme logicielle, ce processus devient encore plus simple, car vous disposez déjà d’une grande partie des connaissances et des outils nécessaires pour avancer à toute vitesse vers un modèle immuable propre à chaque application.

Même si vous n’envisagez pas une véritable infrastructure immuable, la possibilité d’y recourir lorsque cela s’avère le plus pertinent (nouvelle version de l’infrastructure, correctifs urgents, correctifs, etc.) vous facilitera la vie, ainsi que celle des responsables DevOps de l’application prise en charge par l’infrastructure.

Partager
Mots-clés : 2018

À propos de l’auteur

Articles de blog associés

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives
Écosystème F5 | 08/09/2025

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives

Découvrez comment NGINXaaS s’intègre à Google Cloud pour renforcer les performances et la sécurité, et préparer vos applications critiques à un avenir propulsé par l’IA.

L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui
Écosystème F5 | 24/04/2023

L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui

En faisant appel à un partenaire de déploiement AWS WAF tel que F5, vous pouvez renforcer la sécurité de vos applications web grâce à des règles personnalisées qui bloquent les schémas d’attaque courants, comme les injections SQL ou les attaques par scripts intersites (XSS).

Appliquer le principe de Peter Parker à l’inspection TLS
Écosystème F5 | 09/12/2019

Appliquer le principe de Peter Parker à l’inspection TLS

« Un grand pouvoir implique de grandes responsabilités. » Si l’on en trouve des échos chez Voltaire et Churchill, cette citation est surtout connue grâce aux bandes dessinées Spider-Man, où elle est attribuée à l’oncle Ben. Bien entendu, si cette phrase est si répandue dans la culture populaire, c’est notamment parce qu’elle peut s’appliquer à une multitude de situations et de sujets, y compris à l’inspection TLS.

Le NetOps a besoin de défenseurs, pas d’adversaires
Écosystème F5 | 13/12/2018

Le NetOps a besoin de défenseurs, pas d’adversaires

Il est important de reconnaître que les équipes NetOps ne sont pas toujours celles qui font obstacle au déploiement de la dernière nouveauté, application ou service. Les freins à la rapidité sont souvent dus au fait que les organisations n’adoptent pas tous les principes du DevOps lorsqu’elles cherchent à transformer leurs opérations informatiques.

Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects
Écosystème F5 | 01/03/2018

Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects

Il est de nouveau temps de nous pencher sur les services applicatifs que les entreprises utilisent réellement pour rendre leurs applications plus rapides et plus sûres. On constate notamment une hausse du recours aux services de protection contre les bots, ainsi que la progression lente mais régulière de HTTP/2. Bien qu’il ne s’agisse pas d’une application…

Les templates prennent le contrôle du cloud
Écosystème F5 | 02/02/2017

Les templates prennent le contrôle du cloud

Les modèles s’imposent dans le cloud. Lisez le blog de F5 pour découvrir comment l’infrastructure en tant que code et les API déclaratives automatisent la mise à disposition des applications.