Containers (Part. 1)

Bonjour tout le monde, avez-vous déjà entendu parler de containers ? De Docker ou Kubernetes ? Non ? Vous passez alors à côté d’une grosse opportunité. Je vais aujourd’hui, vous présenter les avantages d’utiliser des containers dans votre quotidien. Les conteneurs sont une forme de virtualisation des systèmes d’exploitation. Un seul conteneur peut être utilisé pour faire une exécution à partir d’un petit microservice ou d’un processus logiciel vers une application plus grande.

Pourquoi utiliser des containers ?

Les technologies de “conteneurisation” telles que Docker et Kubernetes permettent de créer et de gérer des conteneurs isolés pour chaque service, facilitant ainsi le déploiement, l’orchestration et la gestion des applications de microservices. Les avantages sont multiples et seront cités plus bas dans l’article.

Les commandes

Voici les commandes les plus utiles :

docker run -e POSTGRES_PASSWORD=password -d postgres =>  run postgres

docker ps =>  affiche les containers

docker exec -it  \l psql -U postgres =>  lance postgres

docker rm -f $(docker ps -a -q) => La commande ninja qui supprime les conteneurs

Avantages

  • Taille : La taille d’un conteneur est généralement beaucoup plus faible que celui d’une machine virtuelle.
  • Vitesse​ : Un conteneur démarre très rapidement.
  • Portabilité​ : Utilisable partout et en tout temps.
  • Autosuffisance​ : N’a pas besoin d’aller chercher des librairies partout, tout est dans le conteneur.
  • Coût​ : Coûte beaucoup moins cher que les machines virtuelles, besoin de moins de materiel

Inconvénients

  • Faille de sécurité : plusieurs machines/conteneurs peuvent être touchées en cas de failles.
  • Difficulté pour une sécurité poussée entre différents environnements
architecture avantages désavantages
monolithique Regrouper toutes les fonctionnalités d’une application, plus simple à développer et à déployer Peut rendre le système difficile à maintenir
microservices Offre une grande flexibilité et évolutivité beaoucp plus complexe

exemple d’architectures monolitiques

  • Les premières versions de Photoshop étaient des applications monolithiques où toutes les fonctionnalités étaient regroupées en un seul programme

  • Les premières versions de Photoshop étaient des applications monolithiques où toutes les fonctionnalités étaient regroupées en un seul programme

  • Un système de gestion de contenu (CMS) tel que WordPress ou Drupal peut être considéré comme une application monolithique, car toutes les fonctionnalités sont regroupées en un seul système.

exemple d’architectures de services

  • Netflix et Spotify utilisent une architecture de microservices pour gérer leurs fonctionnalités de streaming et de gestion de compte utilisateur. Les différents services, tels que la recherche, les recommandations ou les notifications, sont tous conçus pour être indépendants et évolutifs

  • Uber utilises des microservices pour gérer les différentes parties de son application, telles que les systèmes de géolocalisation, de facturation et de notification

Architecture de microservices

  • Les technologies de “conteneurisation” telles que Docker et Kubernetes permettent de créer et de gérer des conteneurs isolés pour chaque service, facilitant ainsi le déploiement, l’orchestration et la gestion des applications de microservices

  • Les “API RESTful” (Representational State Transfer) sont souvent utilisées pour permettre la communication entre les différents services de microservices, car elles permettent de transférer des données entre les services de manière simple et cohérente

  • Les langages de programmation tels que Java, Node.js, Python et Go sont couramment utilisés pour développer des microservices. Toutefois, il n’y a pas de langage de programmation “unique” pour ce type de développement

  • Les bases de données NoSQL (Not Only SQL) telles que MongoDB, Firebase, Cassandra et Couchbase sont souvent utilisées pour les microservices, car elles offrent une évolutivité horizontale et une meilleure flexibilité que les bases de données relationnelles

  • Les outils de surveillance tels que Zabbix, Prometheus et Grafana sont utilisés pour surveiller la santé et les performances des services mais également et pour faciliter la détection et le dépannage des erreurs

Liens & Sources

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *