Nos TechTrends sont focalisés sur une tendance technologique, ils vous dressent l’état de l’art et proposent des solutions techniques et méthodologiques pour accompagner son adoption. En 2015 nous vous présentions le TechTrends Cloud.
Nous profitons de l’arrivée des beaux jours et de l’organisation du Paris Container Day le 13 Juin 2017 pour vous proposer notre dernier-né :
Le TechTrends Conteneurs
Dans ce document, nous vous partageons notre vision des conteneurs. La première partie Projeter propose d’identifier différents cas d’usage des conteneurs. Par la suite, la partie Implémenter vous invite à construire une plateforme conteneurisée avec les bons outils. Pour finir, le chapitre Exploiter vous aide à faire vivre la plateforme conteneurisée.
Classiquement, les développements logiciels dans les entreprises s’organisent en suivant trois grandes phases : la construction, le déploiement et la production. Quels que soient le langage ou la technologie utilisés, la phase de construction est bien souvent mature en termes d’outillage et de standardisation. Pour le déploiement, il existe différents outils d’automatisation permettant d’utiliser des solutions adaptées à chaque technologie. Si l’on s’intéresse au run, il existe aussi des solutions automatisées. Cependant, dans l’ensemble, ces outils manquent de standardisation et nécessitent encore aujourd’hui un grand nombre de tâches manuelles lors des opérations de déploiement et de run.
Les conteneurs permettent de standardiser ces différentes phases. Ils fournissent un modèle de packaging, de déploiement et d’exécution. Ce modèle est reproductible et portable. Il s’applique tout aussi bien aux solutions techniques sous Linux qu’à celles sous Windows.
L’utilisation de ce nouveau modèle permet de fiabiliser l’ensemble de la chaîne de delivery en définissant un standard commun du développement à la production tout en garantissant une portabilité optimale. Par nature, les conteneurs favorisent l’adoption d’organisations DevOps, car ils concernent l’ensemble de la chaîne de delivery.
Le succès des conteneurs est lié à trois facteurs : la maturité, la simplicité et le packaging. En effet, les solutions d’exécution conteneurisées ne sont pas nées de la dernière pluie. Les namespaces permettent d’isoler un ensemble de processus et de ressources sous Linux depuis 2002. C’est en 2008 que les choses s’accélèrent avec la création des cgroups, qui permettent de maîtriser les ressources allouées aux processus. Ce moment correspond à la naissance des premiers PaaS dont AppEngine, DotCloud et Mesos qui reposent tous dès le départ sur la conteneurisation. Mais c’est aussi l’année de naissance du projet LXC ou Linux Containers, qui fournit un ensemble d’outils et d’APIs facilitant la création et la gestion des conteneurs d’application ou de système.
En 2013, l’émergence de Docker popularise leur utilisation. Avec ce nouvel outil, la technologie est devenue abordable et facile à utiliser. Docker fournit, de plus, un modèle de packaging accompagné d’un système de distribution et de déploiement simple, rapide et efficace. Aujourd’hui, les images, tout comme les “wars” dans l’écosystème Java, offrent la garantie d’un package portable pouvant être exécuté sur tous les systèmes supportant les cgroups et les namespaces. Les conteneurs offrent donc l’opportunité d’innover rapidement avec une réversibilité à moindre effort.
Comment pouvez-vous tirer parti de ce nouveau paradigme de packaging et de déploiement ?