Les conteneurs : incontournables pour les développeurs

François Tonic (Programmez!)

Les conteneurs se sont imposés dans les infrastructures et maintenant auprès des développeurs. On les voit partout. Par rapport aux machines virtuelles, ils sont plus légers, plus flexibles. Ils sont orientés piles techniques et applicatifs. Grâce à l’Infrastructure as Code et au DevOps, les conteneurs apportent une réelle flexibilité pour les ops et les dévs.

Il n’y a plus de questions à se poser : VM ou conteneurs. Aujourd’hui, les conteneurs sont les meilleurs amis du Cloud et des développeurs. Ils sont utilisables dans tous les Cloud publics du marché et ils trouvent naturellement leur place dans le cloud hybride.

C’est quoi un conteneur ?

Basiquement, le conteneur est une forme légère de virtualisation. L’image ne contient pas l’OS, mais décrit tout ce qu’il faut pour fonctionner : le code nécessaire, les dépendances, le type d’OS, la version de l’OS à utiliser, l’application, les librairies, etc. Par contre, l’OS d’exécution est l’OS de la machine sur laquelle tourne le conteneur. Une machine virtuelle inclut directement l’OS dans l’image. Ce dernier est pratique, mais augmente, parfois, considérablement le poids de l’image et rend sa mise à jour plus difficile. Sur un conteneur, la mise à jour des dépendances, de l’application, est plus simple. On se concentre sur l’essentiel : les piles techniques et l’application.

Si on prend un conteneur Docker, le dockerfile est le fichier de base de votre conteneur. Il contient les instructions / commandes nécessaires pour instancier les ressources et exécuter vos applications.

Un hello world dockerfile serait (selon docker.com) :

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

On définit l’image Docker et son OS, ici Ubuntu. On ajoute les fichiers dans le répertoire Docker courant, puis on exécute l’application Python, ici, app.py.

Vous l’aurez compris : le code est au cœur du conteneur. Dév ou Ops, un conteneur est avant tout un fichier contenant des instructions, des commandes qu’il s’agit créer, coder et maintenir.

Applications et les avantages

Par définition, le conteneur est flexible et est capable de s’adapter à tous les contextes ou presque. On peut les utiliser dans les applications courantes de l’entreprise, les bases de données, les services web, les architectures de type micro-services… Il est possible d’accélérer les déploiements, de réduire les coûts d’exploitation d’une infrastructure (conteneur vs machine virtuelle). L’approche par conteneur réduit les dépendances techniques et il devient plus facile de migrer d’un cloud à un cloud ou de déplacer des workloads de son infrastructure interne à un cloud public, ou inversement. 

Le revers de la médaille est que le conteneur exige une rigueur dans sa description et sa maintenance. Il faut mettre à jour les piles techniques utilisées. Et pour pouvoir utiliser plusieurs dizaines, ou centaines de conteneurs, vous devez utiliser un orchestrateur. Ces outils sont là pour vous aider à gérer les conteneurs, la montée en charge et assurer le bon déploiement des conteneurs. En architecture micro-services, l’orchestrateur est indispensable. Kubernetes est l’orchestrateur le plus connu. Il existe des dizaines de distributions Kubernetes, chaque fournisseur cloud, ou presque, propose sa version.

Typiquement, l’orchestrateur va permettre de :

  • Déployer automatiquement
  • De surveiller les états des conteneurs et des services déployés
  • De gérer la montée en charge
  • De faciliter le déploiement des applications sur une grande variété d’environnements d’exécution (desktop, serveur, cloud privé, cloud hybride, cloud public).

Au niveau au-dessus, vous pouvez déployer et utiliser des plateformes conteneurs dédiées telles que OpenShift.

Le rôle incontournable des conteneurs

L’État des lieux du développement d’applications basé sur des conteneurs (IBM, 2018), montre bien la place du conteneur après des développeurs : 66 % des développeurs les utilisent. La portabilité et son usage sur des clouds publics sont plébiscités (70 % des répondants), ainsi que la sécurité.

Le conteneur est désormais largement supporté par les clouds publics, les IDE, les outils d’automatisation. Ils peuvent aider à améliorer la sécurité.

L’étude met en avant plusieurs critères intéressants :

  • 59 % des répondants estiment que le conteneur améliore la qualité des applications
  • 57 % estiment qu’ils peuvent réduire l’indisponibilité des applications
  • 53 % y voient un moyen d’être plus réactif et de mieux répondre aux attentes du marché, des utilisateurs
  • 50 % pensent que le conteneur peut réduire les coûts

Toujours pas convaincu(e) ? Faites un tour sur les nombreux contenus sur les conteneurs d’IBM : developer.ibm.com/technologies/containers

Vous y trouverez des podcasts, des articles, des blogs, des tutoriels, etc.