Ma veille 

Définition

La veille technologique est une activité qui met en œuvre des techniques d’acquisition, de stockage et d’analyse d’informations, concernant un produit ou un procédé, sur l’état de l’art et l’évolution de son environnement scientifique, technique, industriel ou commercial, afin de collecter, organiser, puis analyser et diffuser les informations pertinentes qui vont permettre d’anticiper les évolutions, et qui vont faciliter l’innovation.

Plus simplement, la veille technologique consiste à se tenir au courant de l’actualité afin d’être à même de faire de meilleurs choix, d’innover, de créer…

Pour ma part, ma veille technologique consiste à se mettre à jour des nouvelles tendances, à la recherche de résolution de problème. Ce que j’ai pu acquérir via le site IT-Connect.fr auquel je suis abonné sur Linkedin. Ce site est vraiment intéressant car assez complet et mis à jour très régulièrement, avec des nouveautés, des aides, des tutos et des conseils vu par des professionnels.

En deuxième, je vais aussi sur le site Tech2Tech.fr qui offre aussi des tutos, nouveautés et bons plans et auquel on peut aussi s’abonner via les réseaux sociaux

Il y a aussi un autre site que j’utilise pour les tutos et docs techniques Neptunet.fr

Ensuite je vais vous présenter la conteneurisation et plus particulièrement Docker administré depuis Portainer, 

Ce qui a occupé beaucoup de mes soirées…

La conteneurisation est devenue le dernier mot à la mode dans le domaine du cloud computing. Beaucoup pensent qu’elle peut aider à moderniser les systèmes existants en créant de nouvelles applications évolutives conçues dans le cloud.

Alors pourquoi la conteneurisation est-elle nécessaire maintenant ?

Pour comprendre sa nécessité et sa nature, commençons par la Virtualisation et l’utilisation croissante des machines virtuelles (VM) dans le cloud.
En général, presque toutes les entreprises utilisent l’environnement cloud (public ou privé), avec des instances exécutant des VM avec des capacités d’évolutivité et d’équilibrage de charge représentant leur couche de calcul.

Cependant, les approches de virtualisation ont fait face à quelques défis qui ont rendu ces environnements inefficaces.

Voici quelques exemples :

 

  • Manque de cohérence des environnements : Déploiement d’applications et de packages dans des environnements virtuels.
  • Dépendance du système d’exploitation : Les applications déployées sont exécutées uniquement sur des systèmes d’exploitation compatibles.
  • Niveau d’isolement : Incapacité à fournir un sandbox instantané au-dessus du niveau du système d’exploitation.
  • Granularité de la consommation de calcul : Impossibilité de déployer plusieurs applications répliquées, alors que l’équilibrage de la charge sur la couche applicative ne se produit qu’au sein d’une seule machine et non au niveau de la couche du système d’exploitation.
  • Correctifs des images dans les environnements de production : Les déploiements canari et bleu-vert ne sont pas flexibles au niveau du cluster et sont difficiles à gérer dans plusieurs régions.

Qu'est ce que la conteneurisation ?

Il s’agit d’une forme de virtualisation du système d’exploitation dans laquelle vous exécutez des applications dans des espaces utilisateurs isolés appelés conteneurs qui utilisent le même système d’exploitation partagé. Un conteneur d’applications est un environnement informatique entièrement regroupé en package et portable :

 

  • Il dispose de tout ce dont une application a besoin pour s’exécuter, y compris ses fichiers binaires, ses bibliothèques, ses dépendances et ses fichiers de configuration, le tout encapsulé et isolé dans un conteneur.
  • La conteneurisation d’une application permet d’isoler le conteneur du système d’exploitation hôte, avec un accès limité aux ressources sous-jacentes, à l’instar d’une machine virtuelle légère.
  • Vous pouvez exécuter l’application conteneurisée sur différents types d’infrastructure, tels qu’un serveur bare metal, dans le cloud ou sur des VM, sans avoir à la remanier pour chaque environnement.

La conteneurisation permet de réduire les charges au démarrage et de supprimer la nécessité de configurer des systèmes d’exploitation invités distincts pour chaque application, car ils partagent tous un seul noyau de système d’exploitation.  En raison de cette efficacité élevée, les développeurs de logiciels utilisent couramment la conteneurisation des applications pour regrouper plusieurs microservices individuels constituant les applications modernes.

A quoi sert la conteneurisation ?

La conteneurisation permet aux développeurs de logiciels de créer et de déployer des applications de façon plus rapide et plus sécurisée. Avec les méthodes traditionnelles, vous codez dans un environnement informatique spécifique, ce qui entraîne souvent des erreurs et des bogues lorsque vous transférez ce code dans un nouvel emplacement. Par exemple, lorsque vous transférez du code de votre ordinateur de bureau vers une machine virtuelle, ou d’un système d’exploitation Windows vers Linux.

La conteneurisation élimine ce problème en vous permettant de regrouper le code de la demande avec les fichiers de configuration, les dépendances et les bibliothèques associées. Vous pouvez ensuite isoler ce package de logiciels unique (conteneur) du système d’exploitation hôte, ce qui lui permet d’être autonome et de devenir portable, c’est-à-dire de s’exécuter sur n’importe quelle plate-forme ou n’importe quel cloud sans aucun problème.

Alors que les concepts d’isolation des processus et de conteneurisation ont déjà quelques décennies, l’émergence d’un Docker Engine en open source en 2013 a accéléré l’adoption de la technologie des conteneurs d’applications. Le Docker Engine est devenu une norme de l’industrie en ce qui concerne le processus de conteneurisation grâce à une approche de packaging universelle et à des outils simples pour les développeurs.

L’industrie qualifie souvent les conteneurs de légers, ce qui signifie qu’ils partagent le noyau du système d’exploitation de la machine et ne nécessitent pas l’association d’un système d’exploitation à chaque application, comme c’est le cas avec la virtualisation. Par conséquent, les conteneurs ont une capacité intrinsèquement plus petite qu’une machine virtuelle et nécessitent moins de temps de démarrage, ce qui permet l’exécution de plus de conteneurs sur une seule capacité de calcul en tant que machine virtuelle unique. Ainsi, l’efficacité des serveurs est augmentée et les coûts des serveurs et des licences sont réduits.

Quels sonts les avantages de la conteneurisation ?

Vous pouvez fournir immédiatement des applications conteneurisées aux utilisateurs dans un espace de travail numérique. La conteneurisation offre des avantages considérables aux développeurs de logiciels et aux équipes de développement, allant d’une agilité et d’une portabilité supérieures à un contrôle des coûts amélioré. En voici la liste : 

  1. Portabilité

Un conteneur d’application crée un progiciel exécutable qui est isolé par rapport au système d’exploitation hôte. Ainsi, il ne dépend pas du système d’exploitation hôte et n’est pas lié à celui-ci, ce qui le rend portable et lui permet de s’exécuter de manière cohérente et uniforme sur n’importe quelle plate-forme ou cloud. Les méthodes de consolidation du système d’exploitation utilisées par les développeurs permettent également d’éviter les incohérences telles que l’intégration qui cherche à entraver la fonctionnalité de l’application.

2. Vitesse

Les développeurs désignent les conteneurs comme « légers » parce qu’ils partagent le noyau du système d’exploitation de la machine hôte et qu’ils ne font pas l’objet de charges supplémentaires. Leur légèreté permet d’améliorer l’efficacité des serveurs et de réduire les coûts liés aux serveurs et aux licences. Elle réduit également le temps de lancement, car il n’y a pas de système d’exploitation à démarrer.

L’utilisation d’un conteneur Docker vous permet de créer une version principale d’une application (image) et de la déployer rapidement sur demande. Un environnement conteneur garantit une grande flexibilité lorsque vous souhaitez créer plusieurs nouvelles instances conteneurisées d’applications à la demande.

3. Evolutivité

La technologie des conteneurs d’applications offre une grande évolutivité. Un conteneur d’application peut gérer des charges de travail croissantes en reconfigurant l’architecture existante afin d’activer les ressources à l’aide d’une conception d’application orientée vers les services. Par ailleurs, un développeur peut ajouter d’autres conteneurs dans un cluster d’ordinateurs distribués.

Un environnement conteneur permet l’ajout de nouvelles fonctions, mises à jour et caractéristiques instantanément sans que cela affecte les applications d’origine. Par conséquent, les conteneurs permettent l’évolutivité des applications avec une utilisation des ressources minimale

4. Agilité

Le Docker Engine, qui permet l’exécution des conteneurs, est devenu la norme de l’industrie en matière de conteneurs d’applications grâce à des outils de développement simples et à une approche universelle fonctionnant avec les systèmes d’exploitation Windows et Linux. Cet écosystème de conteneurs est désormais passé aux moteurs sous la direction de l’OCI (Open Container Initiative). Les développeurs peuvent donc continuer à utiliser les outils et les processus DevOps pour accélérer le développement et l’amélioration des applications.

5. Efficacité

Étant donné que les logiciels exécutés dans les environnements conteneurisés partagent le noyau du système d’exploitation de la machine hôte, les développeurs peuvent partager les couches d’application entre les conteneurs. De plus, les conteneurs ont une capacité intrinsèquement plus petite que les machines virtuelles. Leur temps de démarrage est réduit, ce qui permet aux développeurs d’exécuter plus de conteneurs sur la même capacité de calcul qu’une machine virtuelle unique. Ainsi, l’efficacité des serveurs est augmentée et les coûts des serveurs et des licences sont réduits.

6. Mauvaise isolation

La conteneurisation d’une application permet de l’isoler et de la faire fonctionner de façon indépendante. Par conséquent, la défaillance d’un conteneur n’affecte pas le fonctionnement des autres. Les équipes de développement peuvent rapidement identifier et corriger les problèmes techniques d’un conteneur défectueux sans provoquer l’arrêt du reste des conteneurs. En outre, le moteur de conteneur peut tirer parti de techniques d’isolation de la sécurité du système d’exploitation comme le contrôle d’accès SELinux pour identifier et isoler les pannes au sein des conteneurs.

7. Sécurité

L’isolation des applications via les conteneurs empêchent le code malveillant d’affecter d’autres applications conteneurisées ou le système hôte. Vous pouvez également définir des autorisations de sécurité pour bloquer automatiquement l’accès aux composants indésirables qui cherchent à s’introduire dans d’autres conteneurs ou à limiter les communications.

L’isolation des applications aide les développeurs à partager des fonctionnalités supplémentaires sans facteur de risque. Par exemple, si vous travaillez avec une équipe de développement à l’extérieur de votre réseau, vous pouvez partager les ressources nécessaires sans que les informations critiques ne se trouvent dans votre réseau.

8. Facilité de gestion

En utilisant une plate-forme d’orchestration des conteneurs, vous pouvez automatiser l’installation, la gestion et l’évolution des charges de travail et des services conteneurisés. L’orchestration des conteneurs permet de faciliter les tâches de gestion, comme le déploiement de nouvelles versions d’applications, l’évolution d’applications conteneurisées ou la mise à disposition de fonctions de surveillance, de consignation et de débogage.

9. Continuité

Différents conteneurs s’exécutent indépendamment, de sorte que la défaillance de l’un n’aura pas d’impact sur la continuité des autres. Les équipes de développement bénéficient de la flexibilité nécessaire à la correction des erreurs dans un conteneur sans provoquer l’arrêt des autres. Par conséquent, la conteneurisation assure la continuité des opérations.

10. Facilité d’utilisation pour les developpeurs.

Les conteneurs sont conviviaux pour les développeurs, car il est possible d’utiliser un seul environnement pour le développement et la production, un obstacle courant dans le développement d’applications web. Votre équipe de développement peut écrire une app sur un ordinateur portable Windows, mais celle-ci ne s’exécute pas sur un poste de travail Mac.

Avec la conteneurisation, l’image que votre équipe construit localement est la même que celle exécutée en production. Lorsqu’elles sont combinées à un workflow approprié, les applications conteneurisées peuvent aider à minimiser les cas où elles fonctionnent correctement à un emplacement, mais elles s’exécutent avec bogues dans un autre. De plus, les workflow de construction de conteneurs fonctionnent exceptionnellement bien dans les intégrations de pipelines CI/CD. Ces avantages permettent à votre équipe de développement de gagner en productivité et en efficacité.

Portainer & Docker

Site web Portainer

Site web Docker

 Qu’est ce que Docker

Docker est une plateforme de conteneurs lancée en 2013 ayant largement contribué à la démocratisation de la conteneurisation. Elle permet de créer facilement des conteneurs et des applications basées sur les conteneurs. Il en existe d’autres, mais celle-ci est la plus utilisée. Elle est par ailleurs plus facile à déployer et à utiliser que ses concurrentes.

C’est une solution open source, sécurisée et économique. De nombreux individus et entreprises contribuent au développement de ce projet. Un large écosystème de produits, services et ressources sont développés par cette vaste communauté.

Initialement conçue pour Linux, Docker permet aussi la prise en charge des containers sur Windows ou Mac grâce à une ” layer ” de virtualisation Linux entre le système d’exploitation Windows / macOS et l’environnement runtime Docker. Il est donc possible d’exécuter des conteneurs Windows natifs sur des environnements de conteneurs Windows ou Linux.

Qu’est ce que Portainer

Docker est un outil utilisable en ligne de commande, pour le coup c’est pas hyper agréable à utiliser au quotidien malgré que cela soit tout à fait possible. Mais pour une intervention rapide, l’utilisation d’une interface web qui permette de gérer les opérations courantes sur ses conteneurs est très utile. Et ça tombe bien, il existe Portainer pour ça et manager facilement vos Dockers! Portainer s’installe comme un conteneur docker pour simplifier sont déploiement. Portainer permet de gérer une bonne partie des éléments de docker : conteneurs, images, volumes, réseaux, utilisateurs, etc. Il peux aussi contrôler un autre serveur Docker à distance grâce à un agent et permet de déployer des applications dans des conteneurs en juste quelques clics.

 

 

A voir aussi, Kubernetes