Les containers ce sont tout simplement des « logiciels dans une boîte ». Ils ont la même fonction qu’une boîte étanche ou qu’un container sur un cargo, à savoir représenter un moyen pratique d’emballer une application afin qu’elle soit autonome. De la même façon qu’une VDI-in-a-Box emballe un ordinateur de bureau.
On trouve les containers sous trois versions :
- Machines virtuelles (par exemple : ESX, Hyper-V, KVM). Elles existent depuis des années. Elles permettent de créer une image standard pouvant être exécutée sur différents hôtes, mais consomment beaucoup de ressources et sont longues à configurer.
- Containers de systèmes (par exemple : Virtuozzo, OpenVZ). Tout comme les machines virtuelles, chaque container est une image système complète, mais le noyau sous-jacent est partagé avec l’hôte. Elles permettent de créer de façon légère une machine virtuelle ayant la même image que le système hôte.
- Containers d’applications (par exemple : Docker). C’est là que le monde commence réellement à changer. Chaque container est défini par un fichier texte qui installe l’environnement dont l’application a besoin. Il peut alors être exécuté n’importe où sans qu’il soit nécessaire de s’occuper de la plateforme sous-jacente. L’utilisateur reçoit une copie autonome de l’application qui est ramenée à l’état « parfait » d’origine à chaque exécution. Ces containers sont extrêmement légers et offrent des performances équivalentes à celles d’une exécution de l’application en local.
Les containers ne sont pas seulement pratiques puisque chaque application est emballée dans son propre environnement privé, plusieurs exemplaires peuvent être exécutés sur la même plateforme. Cela permet de proposer des microservices, qui sont un moyen de scinder une application en petits composants. Tout comme les containers maritimes ont révolutionné le monde du fret, les microservices conteneurisés transforment le développement des applications.
Cette transition ne se produira pas d’un seul coup. Il existe d’ailleurs une tendance qui consiste à déplacer telles quelles les applications existantes dans des conteneurs et d’entreprendre de nouveaux développements aux côtés d’une architecture de microservices, ce qui permet ainsi de profiter rapidement des avantages des conteneurs.
Pour que tout cela fonctionne, il faut qu’entre en scène un nouveau type de planificateur, appelé orchestrateur, dont Kubernetes est un des exemples les plus connus.
Il faut le voir comme le barreur d’un navire, qui fixe le cap et réagit aux événements (ce qui, de façon assez amusante, est exactement ce que signifie le mot grec !).
L’adoption des containers est en pleine accélération et ne disparaîtra pas. Ces outils se montrent beaucoup trop polyvalents et portables pour que le secteur s’en détourne.