Comment conteneurs et microservices font entrer le système d’exploitation dans une nouvelle ère

Qu'est-ce que Brand Voice ?

La révolution des conteneurs et l’approche par microservices qui l’accompagne vont transformer radicalement le rôle du système d’exploitation, appelé à devenir une plateforme partagée pour les applications.

Par Gordon Haff, Technology Evangelist auprès de Red Hat

Selon une nouvelle étude Forrester Consulting commanditée par Red Hat, les trois avantages les plus souvent cités en faveur de l’adoption des conteneurs sont, par ordre décroissant, la meilleure qualité des versions (31%), l’évolutivité accrue des applications (29%) et la plus grande facilité d’administration (28%). Forrester souligne que « la diversité des avantages cités confirme que les conteneurs sont voués au succès auprès d’entreprises avec des besoins et des objectifs très variés.

test

En encapsulant dans des packages les applications et les composants dont elles ont besoin pour tourner, les conteneurs proposent un environnement cohérent et stable pour la portabilité des applications, sans les habituels conflits.

Les conteneurs sont un pilier des nouvelles technologies et des nouvelles approches du développement applicatif, qui sont utilisés aujourd’hui dans différents secteurs notamment dans l’automatisation industrielle. L’approche de cloisonnement léger des conteneurs permet de packager des services en couplage lâche y compris monofonctionnels, de lecture d’un capteur, d’agrégation de données spécifiques ou d’envoi d’un message, par exemple. Ces petits services indépendants, capables d’opérer indépendamment les uns des autres, sont souvent appelés « microservices ».

Les microservices sont plus avantageux que des applications monolithiques plus complexes car les interfaces entre les différentes fonctions sont plus nettes et parce qu’il est possible de modifier les services indépendamment les uns des autres. Chaque service est comme une boîte noire aux yeux des autres. Du moment que son interface publique reste inchangée et qu’il exécute correctement la tâche qui lui est assignée, les développeurs peuvent y apporter autant de modifications qu’ils le souhaitent. Les autres services n’ont pas besoin de savoir quoi que ce soit sur son fonctionnement interne.

D’un point de vue technique, les services qui tournent dans des conteneurs Linux sont isolés les uns des autres mais peuvent être liés à une même copie du système d’exploitation tournant sur un serveur. Cette approche s’oppose à celle de virtualisation à base d’hyperviseur, où chaque service isolé nécessite une copie intégrale du système d’exploitation. De plus, comme les conteneurs consomment très peu de ressources système – de mémoire notamment -, ils ne dégradent quasiment pas les performances de l’application.

Ainsi, l’utilisation des conteneurs implique que les copies du système d’exploitation qui tournent dans un environnement donné se comportent comme une sorte de plateforme partagée pour toutes les applications concernées. Le noyau du système d’exploitation est partagé par les conteneurs qui tournent sur un même système tandis que les dépendances des applications sont packagées dans le conteneur lui-même.

Le système d’exploitation n’est donc plus configuré, paramétré, intégré et, au final, marié avec une seule application comme c’était la norme jusque-là. Mais comme le système d’exploitation fournit le framework et le support de l’ensemble des conteneurs qui en dépendent, son rôle est plus important encore que dans le cas de la virtualisation d’un serveur physique.

Tous les principes de sécurité, d’ajustement des performances, de fiabilité et de certification qui s’appliquent au monde virtuel valent également pour les conteneurs. Le système d’exploitation assume plus de responsabilités de sécurité et d’isolement des ressources que dans le cas où c’est un hyperviseur qui est à l’œuvre. Cela signifie qu’il vaut mieux utiliser les capacités disponibles du système d’exploitation, comme SELinux, pour appliquer les meilleures pratiques d’exécution des services conteneurisés comme s’ils tournaient sur un serveur nu conventionnel. Cela peut inclure l’abandon des privilèges et l’exécution des services en mode non-root autant que possible.

L’avenir est aux systèmes d’exploitation qui pilotent, orchestrent et planifient les applications destinées à plusieurs hôtes. Cela suppose de modéliser les apps pour plusieurs hôtes et conteneurs et de les distribuer aux ressources appropriées à l’aide de services et d’API. Autrement dit, l’évolution de Linux va dans le sens d’un environnement où l’ordinateur devient un ensemble de systèmes connectés plutôt qu’un seul serveur dédié.

Nous entrons dans une phase d’abstraction du système d’exploitation. Après la fin des instances programmées pour chaque serveur physique, voici la fin des instances personnalisées pour chaque application. Les applications qui ont besoin de cette capacité de personnalisation intensive du système d’exploitation pour fonctionner n’ont pas leur place dans un environnement conteneurisé. Une des tendances les plus favorables aux conteneurs aujourd’hui est la migration massive vers des applications plus portables et moins actives (stateful). Le rôle du système d’exploitation demeure central ; simplement, c’est une image standard qui s’applique désormais à toutes les applications et non plus une image personnalisée pour chacune.

Outre son rôle d’automatisation de la sécurité et d’orchestration des applications conteneurisées, la contribution du système d’exploitation pour la cohérence (et donc la portabilité) est importante à d’autres égards. La vraie portabilité des conteneurs suppose, par exemple, de pouvoir les déployer sur des serveurs physiques, des hyperviseurs, des Cloud privés et des Cloud publics. Cela implique d’avoir accès en toute sécurité à des images de conteneurs signées numériquement et certifiées. Il faut pour cela une plateforme de distribution d’applications intégrée, basée sur les standards ouverts, du conteneur d’application jusqu’à la cible du déploiement.

Au final, les applications en deviennent plus adaptables, bien plus mobiles, faciles à distribuer et légères. Les processus de répartition et de provisioning sont davantage automatisés. Elles peuvent mieux s’adapter aux changements d’infrastructure et traiter les demandes des divisions métier.

Il faut aussi que le système d’exploitation puisse s’adapter tout en profitant des capacités existantes de sécurité, de performance et de fiabilité. Linux et d’autres projets Open Source permettent justement de faire tourner des conteneurs avec des garanties de portabilité, de sécurité et de facilité d’administration.

Lectures complémentaires :