Avantages et inconvénients des conteneurs d'applications
L'utilisation de conteneurs présente plusieurs avantages, mais ne vous lancez pas sans tenir compte des problèmes qu’ils peuvent créer.
La tendance actuelle dans le monde de la virtualisation est à la conteneurisation. Cette technique permet de virtualiser des applications plutôt que des systèmes d'exploitation (contrairement aux serveurs virtuels).
Pour qui souhaite conteneuriser ses applications, le choix est vaste. Docker est sans doute la plateforme la plus connue, mais d'autres fournisseurs tels que Citrix prennent également en charge les conteneurs. Même Microsoft s'y est mis dans sa prochaine version de Windows Server.
Si les conteneurs sont devenus si populaires, c'est qu'ils offrent des avantages que les serveurs virtuels ne peuvent pas égaler. Comme toute technologie, cependant, les conteneurs d'applications présentent des points forts et des points faibles. Si les premiers sont indéniables, les aspects négatifs méritent également considération. Evidemment, les problèmes rencontrés varient d'une solution à une autre, mais certains avantages et inconvénients semblent s'appliquer à la plupart des plateformes de conteneurs.
Pour comprendre les bénéfices qu'apportent les conteneurs d'applications, vous devez avoir une connaissance élémentaire de leur fonctionnement. Les conteneurs fournissent essentiellement des barrières permettant d'isoler les applications. Si un serveur (ou une VM) unique exécute plusieurs applications, celles-ci partagent les ressources du système d'exploitation. Or, si quelqu'un parvenait à pirater une application, la faille pourrait être exploitée pour prendre le contrôle des autres applications exécutées sur le même serveur, voire éventuellement du système d'exploitation du serveur.
Mais il n'y a pas que les failles de sécurité qui inquiètent les administrateurs. Si une application consommait une trop grande quantité de ressources de l'unité centrale, ou si une application comportant des bogues devait subir une fuite de mémoire, l'utilisation des ressources par l'application en question ne manquerait pas d'influer sur les autres applications exécutées sur le serveur.
Aujourd'hui, les administrateurs évitent généralement ces problèmes en virtualisant les serveurs. En hébergeant chaque application dans sa propre VM, l'administrateur crée une barrière d'isolement entre les applications. Cette approche est efficace, mais comporte des défauts. En effet, l'exécution de chaque application sur une VM distincte peut entraîner une prolifération des VM. De plus, étant donné que chaque VM dispose de son propre système d'exploitation, la multiplication des VM peut induire des coûts de licence élevés (pour les systèmes d'exploitation, les antivirus, les applications de sauvegarde, etc.) et une utilisation inefficace des ressources matérielles.
Les conteneurs, eux, créent une barrière d'isolement au niveau de chaque application. Cela signifie que plusieurs applications peuvent résider sur un seul et même système d'exploitation sans interférer les unes avec les autres.
Les avantages fournis par les conteneurs d'applications sont relativement simples. Comme il est inutile de créer une VM distincte pour chaque application, il y a moins de VM à gérer. Par ailleurs, les ressources matérielles sont utilisées plus efficacement car il n'est pas nécessaire d'exécuter un SE distinct pour chaque application. Cette efficacité peut également se traduire par de meilleures performances.
Selon la solution de conteneurisation adoptée, les conteneurs peuvent en outre garantir la portabilité des applications. En conséquence, il devient possible de gérer séparément le cycle de vie des VM et celui des applications, ce qui facilite la tâche des administrateurs.
Bien entendu, les conteneurs d'applications comportent également des inconvénients. Le plus souvent invoqué semble être la difficulté à les configurer et à les gérer. Maints administrateurs Windows se sont arraché les cheveux en essayant de configurer des conteneurs Docker, car Docker est une solution Linux. Cependant, Docker peut s'avérer long à maîtriser même pour les spécialistes de Linux.
Malgré cette difficulté, le principal défaut des conteneurs est sans doute la sécurité. Certes, les conteneurs sont conçus pour isoler les applications les unes des autres, mais n'oublions pas que les applications conteneurisées exécutées sur un serveur utilisent le même système d'exploitation. Dans cette situation, le système d'exploitation (ou le moteur de conteneurisation) peut devenir une vulnérabilité. Que se passerait-il, par exemple, si un pirate lançait une attaque par déni de service contre le système d'exploitation du serveur ? Cette attaque pourrait se solder par une panne touchant plusieurs applications. De même, que se passerait-il si le système d'exploitation plantait en raison d'une défaillance au niveau du noyau ?
Certaines applications anciennes pourraient également rencontrer des problèmes. A une époque, les développeurs construisaient des applications en partant du principe qu'elles auraient accès au système d'exploitation au niveau de la racine (root). Or, si une application de ce type devait être conteneurisée, elle risquerait de ne pas fonctionner ou de mettre en danger le système d'exploitation du serveur. Le résultat effectif dépend en grande partie du produit utilisé. En effet, certains produits de conteneurisation savent gérer ces applications, alors que d'autres ne le peuvent pas sans compromettre la sécurité.
Comme vous le constatez, les conteneurs d'applications présentent des avantages et des inconvénients. A terme, ils deviendront sans doute plus sûrs et plus faciles à utiliser, de la même manière que la virtualisation des serveurs s'est améliorée au fil du temps.