Les avantages et les inconvénients de Docker
Installez-vous votre application sur plusieurs serveurs simultanément ? Déployez-vous souvent de nouvelles versions ? Vous avez dans ce cas suffisamment de raisons de passer d’une méthode “traditionnelle” à une méthode “industrielle”. Cela exige toutefois une approche différente, typique de la philosophie Dev OPS. Vous devrez donc prendre un certain temps pour vous y habituer, avant de pouvoir profiter des avantages :
Gérable
Tout système dans un conteneur Docker peut être arrêté, démarré et répliqué immédiatement. Si un conteneur se plante, cela n’affectera pas les autres systèmes, même s’ils fonctionnent physiquement ensemble sur la même machine hôte.
Extensible et infaillible
Si vous placez plusieurs conteneurs les uns à côté des autres, vous serez en mesure de mieux répartir la charge de trafic en cas de pic soudain. Si vous utilisez également l’orchestration, vous pourrez démarrer des nœuds supplémentaires et redémarrer un système qui s’est planté de manière entièrement automatique.
Indépendant de la plateforme
Votre application est-elle dépendante de versions ou de configurations spécifiques ou de services web sur un autre système ? Les interdépendances peuvent transformer une simple mise à niveau du système en un véritable casse-tête, surtout dans le cas d’applications de grande envergure. Avec Docker, vous êtes totalement indépendant du système. Vous pouvez utiliser la version appropriée dans chaque conteneur, de sorte que vous n’ayez pas à tout mettre à jour en même temps.
Performant
Docker place chaque conteneur directement sur le système d’exploitation hôte – le seul système d’exploitation. Les conteneurs ont accès au stockage des données mutualisées. Les fichiers utilisés par plusieurs conteneurs ne sont stockés qu’une seule fois. Cela permet de se retrouver avec beaucoup moins d’ « over Head ».
Docker fonctionne de manière fondamentalement différente d’une machine virtuelle : cette dernière se présente en fait comme un matériel classique avec des processeurs, de la mémoire et du stockage. Au besoin, vous pouvez au préalable répartir les ressources disponibles entre plusieurs machines virtuelles, et un système d’exploitation complet, avec tous ses composants, tourne alors sur chacune d’entre elles. De plus, un hyperviseur (sous lequel se trouve aussi un système d’exploitation) veille à ce que les machines virtuelles soient parfaitement isolées les unes des autres. Cela vous permet de fragmenter votre capacité informatique en plusieurs petits morceaux. Pour résumer, les machines virtuelles sont moins rigides que des machines dédiées, mais elles sont très gourmandes en ressources et moins flexibles. Selon certaines études, les conteneurs nécessitent jusqu’à cinq fois moins de puissance de calcul (pour la même charge de travail) que la technologie des machines virtuelles.
Le principal défi que comporte l’utilisation de Docker est que vous devez être capable de vous débrouiller sur le plan conceptuel et technique. Si vous n’êtes pas un adepte de l’approche DevOps, et que les micro services vous semblent trop compliqués, Docker n’est peut-être pas le meilleur choix que vous puissiez faire en fin de compte.
Applications plus anciennes
La plupart des applications plus anciennes ne sont tout simplement pas adaptées à la conteneurisation.
Code compact
Un conteneur Docker contient le strict nécessaire. Pour que le contenu du conteneur soit simple et facile à entretenir, beaucoup choisissent de partitionner une application complexe en plusieurs composants fonctionnels distincts, appelés micro services. Si vous ne voulez pas recourir aux micro services ou si vous êtes limité par des choix architecturaux qui ont été opérés dans le passé, les conteneurs ne sont peut-être pas la solution la plus appropriée.
Connaissances techniques
L’approche DevOps et les micro services constituent d’excellents choix lors de la création d’une nouvelle application reposant sur une architecture contemporaine. Bien sûr, il faut que vous compreniez ces concepts dans leur intégralité.