Dans le contexte informatique, une abstraction est une représentation qui masque les détails spécifiques à un consommateur de services (un consommateur étant un programme informatique ou un humain), rendant un système plus générique, et ainsi facilement compréhensible. Le système d’exploitation de votre ordinateur portable en est un bon exemple. Il masque tous les détails du fonctionnement de votre ordinateur. Vous n’avez pas besoin d’avoir une compréhension approfondie du processeur, de la mémoire et du fonctionnement des programmes, vous utilisez simplement le système d’exploitation et ce dernier s’occupe des détails...
Ce que c’est Les applications Cloud Natives sont des applications conçues pour tirer avantage des innovations du cloud computing. Ces applications s’intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de mise à l’échelle. Ce terme fait aussi référence aux applications qui tirent avantage d’infrastructure pilotée par le cloud computing. Aujourd’hui, les applications Cloud Natives incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux organisations...
Ce que c’est Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes et plus petites. Les applications distribuées sont généralement composées de microservices individuels qui s’occupent de différentes problématiques au sein d’une application plus large. Dans un environnement Cloud Native, ces composants individuels s’exécutent généralement en tant que conteneurs sur un cluster.
Problème auquel il répond Une application s’exécutant sur un seul ordinateur représente un point de défaillance unique — si cet ordinateur tombe en panne, l’application devient indisponible...
Ce que c’est Une application monolithique contient toutes les fonctionnalités au sein d’un unique logiciel déployable. C’est souvent la manière la plus simple pour commencer le développement d’une application. Cependant, lorsque l’application se complexifie, les monolithes peuvent devenir difficiles à maintenir. Avec plus de développeurs qui travaillent sur la même base de code, la probabilité de conflits dans les changements et donc de communication directe entre les développeurs augmente.
Problème auquel il répond Transformer une application en microservices augmente la charge de travail - comme il y a plus de choses à tester, déployer et à maintenir opérationel...
Ce que c’est Une architecture en microservices est une approche architecturale qui divise les applications en (micro)services distincts et indépendants, chaque service étant focalisé sur une fonctionnalité spécifique. Ces services fonctionnent en étroite collaboration, et l’utilisateur final a l’impression d’utiliser un seul service. Prenons Netflix comme exemple. Son interface vous permet d’accéder, de rechercher et de prévisualiser des vidéos. Ces fonctionnalités sont probablement alimentées par de plus petits services, chacun gérant une fonctionnalité spécifique, telle que l’authentification, la recherche et l’exécution des prévisualisations dans votre navigateur...
L’architecture faiblement couplée est un type d’architecture où les différents composants d’une application sont construits indépendamment les uns des autres (c’est le paradigme opposé des architectures fortement couplées). Chaque composant, parfois identifié comme un microservice, est construit pour effectuer une tâche spécifique d’une manière qui lui permet d’être utilisé par d’autres services. Cette approche est souvent plus longue à mettre en œuvre que l’architecture fortement couplée mais, elle a plusieurs avantages en particulier lorsque l’application change d’échelle...
L’architecture fortement couplée est un type d’architecture où un nombre de composants d’application sont interdépendants (le paradigme opposé est les architectures faiblement couplées). Celà signifie qu’un changement dans un composant aura sûrement un impact sur les autres composants. Souvent plus simples à mettre en oeuvre que les architectures faiblement couplées, elles peuvent mettre un système à risque par rapport aux erreurs en cascade. Elles ont également tendance à nécessiter des déploiements synchronisés des composants ce qui peut devenir un frein à la productivité des développeurs...
Un système auto-réparant est capable de se remettre de certains types de défaillance sans aucune intervention humaine. Il possède une boucle de “convergence” ou de “contrôle” qui examine activement l’état courant du système et le compare à l’état souhaité initialement par les opérateurs. S’il y a une différence (par exemple, moins d’instances d’application sont en cours d’exécution que souhaité), il prendra des mesures correctives (par exemple, démarrer de nouvelles instances)...
La capacité de mise à l’échelle (ou scalabilité) correspond à la capacité d’un système à s’agrandir. C’est-à-dire à augmenter la capacité d’un système à faire ce qu’il est supposé faire. Par exemple, un cluster Kubernetes change d’echelle en augmentant ou en réduisant le nombre d’applications conteneurisées, mais cette scalabilité dépend de plusieurs facteurs. Combien de nœuds possède-t-il, combien de conteneurs peut gérer chaque nœud, et combien d’enregistrements et d’opérations le plan de contrôle (control plane) peut-il supporter ?..
Ce que c’est Le cloud computing, ou informatique en nuage, ou encore infonuagique au Québec, offre des ressources informatiques telles que de la puissance de calcul, du réseau et de l’espace de stockage à la demande sur Internet, permettant aux utilisateurs d’accéder à des ressources informatiques situées dans un emplacement physique distant. Nous différencions généralement le cloud privé du cloud public, suivant si l’infrastructure cloud est exclusivement dédiée à une organisation, ou mutualisée et ouverte au public...
Ce que c’est Un cluster est un groupe d’ordinateurs ou d’applications qui fonctionnent ensemble dans un but commun. Dans un contexte Cloud Native, le terme est souvent appliqué à Kubernetes. Un cluster Kubernetes est un ensemble de services (ou de charges de travail) qui s’exécutent dans leurs propres conteneurs, souvent sur des machines différentes. L’ensemble de tous ces services conteneurisés, connectés au travers du réseau, représente un cluster.
Problème auquel il répond Un logiciel qui s’exécute sur un seul ordinateur représente un point de défaillance unique — si cet ordinateur tombe en panne, ou si accidentellement quelqu’un débranche le câble d’alimentation, alors un système critique pourrait être mis hors-ligne...
Ce que c’est La conteneurisation est l’action de regrouper une application et ses dépendances dans une image de conteneur. Le processus de construction du conteneur nécessite de respecter le standard de l’Open Container Initiative (OCI). Du moment que le résultat est une image qui respecte ce standard, l’outil de conteneurisation qui sera utilisé n’a pas d’importance.
Problème auquel il répond Avant que les conteneurs ne se répandent, les organisations s’appuyaient sur les machines virtuelles (VMs) pour orchestrer différentes applications au sein d’une unique machine physique...
Ce que c’est Un conteneur est un processus qui fonctionne avec des contraintes de ressources et de capacités gérées par le système d’exploitation d’un ordinateur. Les fichiers accessibles au processus du conteneur sont regroupés dans une image de conteneur. Les conteneurs sont exécutés les uns à côté des autres sur la même machine, mais généralement le système d’exploitation empêche les processus de conteneurs différents d’interagir les uns avec les autres...
Ce que c’est Un ensemble de pratiques qui mettent l’accent sur les cycles de développement itératifs et les équipes auto-organisées. Contrairement aux projets dits en cascade où la valeur n’est générée qu’à la toute fin du projet, le développement Agile de logiciels se concentre sur une livraison de valeur continue et incrémentale, ainsi que sur l’amélioration évolutive du processus lui-même.
Problème auquel il répond Définir, communiquer et comprendre les exigences pour toutes les parties prenantes d’un projet logiciel est très difficile, voire impossible...
Ce que c’est Le DevOps est une méthodologie dans laquelle une équipe gère le processus complet du développement d’une application jusqu’aux opérations en production, d’où le terme DevOps. Ceci va au-delà de l’implémentation de technologies et demande un changement complet dans la culture et les processus. Le DevOps fait appel à un groupe d’ingénieurs travaillant sur des petits composants (en opposition à une fonctionnalité complète), permettant ainsi de réduire les actions de passations – une source d’erreurs commune...
Du point de vue Cloud Native, la fiabilité fait référence à la capacité d’un système à réagir face aux pannes. Si nous disposons d’un système distribué qui continue de fonctionner alors que l’infrastructure change et que des composants unitaires tombent en panne, alors il est fiable. En revanche, s’il tombe facilement en panne et que les opérateurs doivent intervenir manuellement pour le maintenir en état de marche, alors il n’est pas fiable...
Glossaire Cloud Native Le Glossaire Cloud Native a pour objectif de démystifier l’univers Cloud Natif, réputé pour sa complexité. Il vise à le rendre accessible aussi bien aux spécialistes technologiques qu’aux acteurs du monde des affaires. Pour y parvenir, nous mettons l’accent sur la simplicité (par exemple, un langage simple sans buzzwords, des exemples auxquels toute personne utilisant la technologie peut se rapporter, en laissant de côte les détails inutiles). Le Glossaire Cloud Native est un project dirigé par le Comité Marketing de la CNCF (Business Value Subcommittee, BVS)...
En mathématiques ou en informatique, l’idempotence décrit une opération qui aboutit toujours au même résultat, peu importe combien de fois vous l’exécutez. Si les paramètres sont identiques, une opération idempotente n’affectera pas l’application qu’elle appelle...
Ce que c’est L’infrastructure en tant que code est la pratique de stocker la définition d’infrastructure dans un ou plusieurs fichiers. Ceci remplace le modèle traditionnel où l’infrastructure en tant que service est provisionnée manuellement, habituellement au travers de scripts ou autres outils de configuration.
Problème auquel il répond Construire des applications d’une manière Cloud Native nécessite des infrastructures qui peuvent être duplicables et jettables. Il est également nécessaire de pouvoir mettre à l’échelle à la demande de manière automatique et répétable, potentiellement sans intervention humaine...
L’infrastructure immuable fait référence à l’infrastructure informatique (machines virtuelles, conteneurs, équipements réseau) qui ne peut pas être modifiée une fois déployée. Cela peut être imposé à l’aide d’un processus automatisé qui écrase les modifications non autorisées, ou à l’aide d’un système qui, dés le départ, n’autorise aucune modification. Les conteneurs sont un bon exemple d’infrastructure immuable, car des modifications persistantes ne peuvent être apportées aux conteneurs qu’en créant une nouvelle version du conteneur ou en recréant le conteneur existant à partir de son image...
Ce que c’est Une API est un moyen pour les programmes informatiques d’interagir entre eux. Tout comme les humains interagissent avec un site web via une page web, une API permet aux programmes informatiques d’interagir les uns avec les autres. Contrairement aux interactions humaines, les APIs ont des contraintes sur ce qui peut ou non leur être demandé. Les contraintes sur leurs interactions permettent de créer une communication stable et fonctionnelle entre les programmes...
Ce que c’est Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneurs open source. Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un “Système d’exploitation de centre de données” qui gère des applications à travers un système distribué.
Kubernetes planifie la création de conteneurs sur les nœuds d’un cluster, regroupant plusieurs ressources d’infrastructure tel qu’un répartiteur de charge (load balancer), du stockage persistent, etc...
Ce que c’est Une machine physique, ou machine bare metal, fait référence à un ordinateur physique, plus précisément à un serveur, qui possède un et un seul système d’exploitation. En informatique moderne, la plupart des serveurs sont des machines virtuelles, il est donc important de faire cette distinction. Un serveur physique est généralement un ordinateur assez gros qui intègre du matériel puissant. L’installation d’un système d’exploitation et l’exécution d’applications directement sur ce matériel physique, sans virtualisation, est ce que l’on appelle une machine physique, ou machine bare metal...
Ce que c’est Une machine virtuelle (VM) est un ordinateur et son système d’exploitation qui n’est pas lié à un matériel particulier. Les VMs s’appuient sur la virtualisation pour découper un unique ordinateur physique en plusieurs ordinateurs virtuels. Cette séparation permet aux entités et aux fournisseurs d’infrastructure de facilement créer et détruire des VMs sans impacter l’infrastructure sous-jacente.
Problème auquel il répond Les machines virtuelles tirent parti de la virtualisation. Lorsqu’une machine physique est liée à un unique système d’exploitation, la manière donc les ressources peuvent être utilisées est en quelque sorte limitée...
Ce que c’est Dans un monde de microservices, les applications sont découpées en plusieurs petits services qui communiquent via le réseau. Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiables, piratables et souvent lents. Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoutent de la fiabilité, de l’observabilité et des fonctionnalités liées à la sécurité de manière uniforme pour tous les services...
La mise à l’échelle automatique (ou autoscaling) est la capacité d’un système à s’adapter automatiquement (voir capacité de mise à l’échelle), généralement, en termes de ressources informatiques. Avec un système permettant une mise à l’échelle automatique, les ressources sont automatiquement ajoutées en cas de besoin et peuvent être ajustées pour répondre aux demandes fluctuantes des utilisateurs. Le processus de mise à l’échelle automatique varie et peut être configuré pour s’adapter à différentes métriques, telles que la mémoire ou le temps de traitement...
Ce que c’est La mise à l’échelle horizontale est une technique qui consiste à augmenter la capacité d’un système en ajoutant plus de nœuds au lieu d’ajouter plus de ressources informatiques à des nœuds unitaires (ce dernier étant connu sous le nom de mise à l’échelle verticale (Vertical Scaling)). Supposons que nous avons un système avec 4 Go de mémoire et que nous voulons augmenter sa capacité à 16 Go, la mise à l’échelle horizontale consiste à ajouter 4 × 4 Go de mémoire plutôt que de passer à un système avec 16 Go de mémoire...
Ce que c’est La mise à l’échelle verticale, également connue sous le nom de “mise à l’échelle vers le haut et vers le bas”, est une technique qui consiste à augmenter la capacité d’un système en ajoutant des processeurs et de la mémoire à chaque nœud unitaire à mesure que la charge de travail augmente. Supposons que vous avez un ordinateur avec 4 Go de mémoire et que vous voulez augmenter sa capacité à 16 Go, la mise à l’échelle verticale consiste à passer à un système avec 16 Go de mémoire...
Ce que c’est Un nœud est un ordinateur qui travaille de concert avec d’autres ordinateurs, ou nœuds, pour accomplir une tâche commune. Prenons par exemple votre ordinateur portable, votre modem et votre imprimante. Ils sont tous connectés via votre réseau wifi, communiquant et collaborant ensemble, chacun représentant un nœud. En cloud computing, un nœud peut être un ordinateur physique, un ordinateur virtuel, appelé VM, ou encore un conteneur.
Problème auquel il répond Bien qu’une application puisse s’exécuter sur une seule machine, comme beaucoup le font encore, cela comporte certains risques...
L’observabilité est une propriété des systèmes qui définit le degré auquel le système peut générer des informations exploitables. Elle permet aux utilisateurs de comprendre l’état d’un système à partir de ses sorties externes et de prendre des mesures (correctives).
Les systèmes informatiques sont mesurés en observant des signaux de bas niveau tels que le temps processeur, la mémoire, l’espace disque, des signaux de niveau supérieur et des signaux métiers, notamment les temps de réponse de l’API, les erreurs, le nombre de transactions par seconde, etc...
Ce que c’est L’orchestration de Conteneurs fait référence à la gestion et à l’automatisation du cycle de vie d’applications conteneurisées au sein d’environnements dynamiques. Réalisée à l’aide d’un orchestrateur de conteneurs (la plupart du temps, Kubernetes), elle permet les déploiements, le passage à l’échelle (automatique), (l’auto-)remédiation et le monitoring. L’orchestration est une métaphore: L’outil d’orchestration dirige les conteneurs tel un chef d’orchestre, s’assurant que chaque conteneur (ou musicien) fait ce qu’il doit faire...
Ce que c’est Une passerelle d’API est un outil qui regroupe des APIs d’applications individuelles, les rendant toutes disponibles en un seul endroit. Celà permet aux organisations de déplacer des fonctions clés, telles que l’authentification et l’autorisation ou la limitation du nombre de requêtes entre applications, vers un emplacement géré de manière centralisée. Une passerelle d’API fonctionne comme une interface commune pour les consommateurs d’API (souvent externes).
Problème auquel il répond Si vous mettez des APIs à la disposition de consommateurs externes, vous voudrez un point d’entrée unique pour gérer et contrôler tous les accès...
Notez bien qu’en informatique, le mot service a plusieurs significations. Dans cette définition, nous nous concentrerons sur la plus traditionnelle : service comme dans microservice. La manière dont les services diffèrent des microservices, voire s’ils diffèrent, est subtil et différentes personnes peuvent avoir des opinions différentes. Pour une définition générale, nous les considérerons équivalents. Veuillez vous référer à la définition des microservices...
Ce que c’est Un système distribué est un ensemble de composants autonomes connectés via un réseau, et qui apparaît à ses utilisateurs comme un seul système cohérent. La plupart du temps appelés nœuds, ces composants peuvent aussi bien être des machines physiques (des ordinateurs ou des téléphones portables par exemple) que des processus logiciels. Les nœuds sont programmés pour atteindre un objectif commun et échangent des messages via le réseau afin de collaborer...
Ce que c’est Les technologies Cloud Natives, aussi référencées comme la pile des technologies Cloud Natives, sont les technologies utilisées pour construire des applications Cloud Natives. Ces technologies permettent aux organisations de développer des applications capables de se mettre à l’échelle dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides. Tout en tirant pleinement parti des avantages du cloud computing. Elles sont conçues dès le départ pour exploiter les capacités du cloud computing ainsi que des conteneurs, des service meshes, des micro-services...
Ce que c’est La virtualisation, dans un cadre Cloud Native, est l’exécution de plusieurs systèmes d’exploitation isolés sur un même ordinateur physique, aussi appelé serveur. Ces systèmes d’exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont appelées machines virtuelles ou VMs. Lorsque nous parlons d’une machine virtuelle, nous parlons d’un ordinateur défini par logiciel. C’est-à-dire quelque chose qui ressemble et se comporte comme un vrai ordinateur, mais partage son matériel avec d’autres machines virtuelles...