Qu'est-ce qu'une charge de travail ?
En informatique, une charge de travail fait référence aux tâches, processus ou travaux exécutés par un système, un service ou une application. Les charges de travail ne concernent pas seulement les applications ; elles représentent l'activité ou la demande de l'infrastructure sous-jacente.
Dans la suite de cette ressource, nous étudierons la différence entre les charges de travail et les applications, les types courants de charges de travail et la manière de gérer, d'automatiser et de protéger les charges de travail dans les environnements informatiques modernes. Nous mettrons également en évidence des exemples du monde réel pour rendre ces concepts concrets. Poursuivez votre lecture pour en savoir plus.
- Charges de travail et applications
- Types de charges de travail
- Exemples de charges de travail
- Gestion de la charge de travail
- Protection de la charge de travail
- Principaux enseignements et ressources complémentaires
Charges de travail et applications
À première vue, les charges de travail et les applications peuvent sembler interchangeables, mais elles ont des objectifs distincts dans la conception des systèmes. Une application fait référence au logiciel lui-même, qu'il s'agisse d'une application web, d'une application mobile ou d'un logiciel de bureau. La charge de travail, quant à elle, est ce que l'application exige du système sous-jacent, comme les unités centrales de traitement (CPU), la mémoire ou l'espace disque.
Pensez à un application de commerce électronique. La charge de travail de l'application est déterminée par le nombre de transactions (ou de commandes) traitées par minute, les utilisateurs simultanés et les processus de backend qui gèrent les mises à jour de l'inventaire, sessions d'utilisateursou moteurs de recommandation. L'application est statique dans son concept, mais sa charge de travail fluctue en fonction de la demande.
Il est essentiel de comprendre cette différence lors de la conception des systèmes, en particulier pour les évolutivité et performance. Bien que l'application puisse être conçue avec un certain nombre de fonctionnalités, sa charge de travail changera au fur et à mesure que l'activité des utilisateurs augmentera, que de nouvelles fonctionnalités seront mises en place et que l'infrastructure évoluera.
Types de charges de travail
En voici quelques exemples :
1. Charges de travail transactionnelles : Il s'agit de systèmes qui traitent des volumes importants de transactions, Ces charges de travail sont caractérisées par de faibles exigences en matière de latence et une grande fiabilité. Ces charges de travail se caractérisent par de faibles exigences en matière de temps de latence et une grande fiabilité.
2. Charges de travail par lots : Ces charges de travail exécutent une série de tâches qui peuvent être transformés en lots. Les pipelines d'analyse de données, les rapports nocturnes et les tâches d'extraction, de transformation et de chargement (ETL) sont de bons exemples de charges de travail par lots.
3. Charges de travail interactives : Ces charges de travail impliquent des activités en temps réel, comme l'interaction avec les utilisateurs finaux, dans les applications web et mobiles. Elles exigent des temps de réponse rapides aux entrées des utilisateurs.
4. Charges de travail à forte intensité de calcul : Il s'agit d'applications qui nécessitent une puissance de traitement importante, telles que l'entraînement de modèles d'apprentissage automatique, le rendu vidéo ou les simulations.
5. Charges de travail à forte intensité de données : Les systèmes qui doivent traiter, stocker et extraire des quantités massives de données, tels que les bases de données à grande échelle ou les systèmes de gestion de l'information. plates-formes de big data.
Exemples de charges de travail
- Sites de commerce électronique : Cette charge de travail implique des demandes de produits de la part des utilisateurs, des requêtes dans la base de données pour obtenir les détails de l'inventaire, le traitement des transactions de paiement et les mises à jour de l'expédition.
- Formation de modèles d'apprentissage automatique : Nécessite des ressources intensives de l'unité centrale ou de l'unité de traitement graphique (GPU) pour former des modèles sur de grands ensembles de données. Il s'agit souvent d'une charge de travail à forte intensité de calcul.
- Services de streaming : Des plateformes telles que Netflix gèrent des charges de travail interactives où la vidéo est diffusée à la demande pour les utilisateurs. Il s'agit d'un backend à forte intensité de données qui stocke de gros fichiers multimédias.
- Détection de la fraude en temps réel : Un cas d'utilisation courant pour une application financière implique l'analyse des transactions en temps réel pour détecter les fraudes potentielles - cette charge de travail en continu traite des milliers de transactions par seconde pendant les heures de pointe.
Gestion de la charge de travail
La gestion de la charge de travail consiste à répartir les tâches au sein d'un système de ressources disponibles, telles que l'unité centrale, la mémoire et le stockage, afin de garantir des performances efficaces. Une bonne gestion de la charge de travail est essentielle au bon fonctionnement des applications.
Des outils comme OpenPBS et Slurm permettent de gérer la charge de travail dans un environnement en grappe, car ils planifient les tâches et affectent les ressources de manière dynamique au sein des différents nœuds. Ces outils optimisent les ressources matérielles en planifiant les charges de travail de manière à ce que les tâches prioritaires reçoivent des ressources et que les tâches moins importantes puissent être retardées ou mises en file d'attente jusqu'à ce que des ressources soient disponibles.
Automatisation de la charge de travail
La gestion évolutive de la charge de travail nécessite l'automatisation. L'automatisation de la charge de travail fait référence au processus de planification, d'exécution et de gestion automatiques des tâches au sein d'une application ou d'un système. Grâce à son évolutivité, elle permet d'optimiser les ressources, de minimiser les efforts et de garantir des performances constantes, en particulier dans les environnements dynamiques.
Concepts clés de l'automatisation de la charge de travail
- Planification des tâches : L'automatisation au niveau du système d'exploitation implique souvent la planification de tâches. Une fois configuré avec des règles, telles que des heures, des événements ou des seuils système spécifiques, il peut déclencher des tâches automatiquement. Parmi les exemples d'automatisation simple au niveau du système d'exploitation, on peut citer les tâches cron sous Linux ou un planificateur de tâches sous Windows.
- Mise à l'échelle des ressources : Les plateformes d'automatisation telles que Kubernetes mettent à l'échelle les ressources de manière dynamique en fonction de la demande en temps réel. Par exemple, en cas de pic d'utilisateurs sur une application web, Kubernetes déploie automatiquement de nouvelles instances (conteneurs) pour équilibrer la charge et la répartir uniformément.
- Gestion des erreurs : Les systèmes automatisés peuvent gérer les échecs des tâches. Lorsqu'une tâche échoue, les outils d'automatisation peuvent réessayer, consigner une erreur ou déclencher une alerte pour une saisie manuelle. Ainsi, les temps d'arrêt sont minimisés et se poursuivent sans interruption pendant que le système fait ce qu'il doit faire.
- Gestion de la dépendance : L'automatisation de la charge de travail vous permet de spécifier quelles tâches dépendent de quoi, ce qui signifie que vous pouvez vous assurer que les processus sont exécutés dans l'ordre approprié. Prenons l'exemple d'un pipeline de traitement de données dans lequel les tâches ETL doivent être exécutées dans l'ordre : l'extraction doit précéder la transformation et le chargement.
Outils d'automatisation de la charge de travail
1. Kubernetes: Principale plateforme de gestion des charges de travail conteneurisées, Kubernetes automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. Il utilise des contrôleurs pour surveiller l'état du système et ajuste les ressources en fonction de la demande.
2. AWS (Amazon Web Services) Lambda : Plateformes sans serveur comme AWS Lambda vous permettent d'exécuter du code en réponse à des événements sans avoir à provisionner ou à gérer des serveurs. Ce modèle d'automatisation permet aux charges de travail d'évoluer automatiquement et efficacement en réponse aux interactions des utilisateurs, aux tâches planifiées ou à d'autres déclencheurs.
3. Apache Airflow : Airflow est une plateforme open source populaire pour la création programmatique, l'ordonnancement et la surveillance des flux de travail. Elle est particulièrement utile pour les charges de travail par lots où les tâches doivent être exécutées en séquence ou à des moments précis (par exemple, les pipelines de données et les travaux ETL).
4. Terraform : Terraform permet d'automatiser les charges de travail en provisionnant et en gérant l'infrastructure en tant que code (IaC). Il peut s'intégrer à des plateformes comme AWS et Google Cloud pour automatiser les politiques de mise à l'échelle, provisionner les serveurs et gérer des flux de travail d'infrastructure complexes.
Protection de la charge de travail
En raison de leur complexité croissante, les charges de travail sont de plus en plus vulnérables aux menaces de sécurité, ce qui rend la protection des charges de travail vitale. La protection de la charge de travail consiste à sécuriser les applications, leurs données et l'infrastructure qui les supporte.
Une stratégie courante consiste à utiliser des modèles de sécurité sans confiance, où chaque entité interagissant avec une charge de travail (qu'il s'agisse d'un utilisateur ou d'une application) est authentifiée et autorisée avant d'accéder aux ressources. Des outils tels que Bouclier AWS peuvent aider à protéger les charges de travail contre les attaques par déni de service distribué (DDoS), tandis que les solutions de sécurité des conteneurs comme Falcon surveillent les charges de travail Kubernetes pour détecter les anomalies.
La protection des charges de travail dans le nuage (CWP) consiste à surveiller et à éliminer en permanence les menaces qui pèsent sur les charges de travail et les conteneurs dans le nuage. Une plateforme CWP (CWPP) est une solution de sécurité qui protège les charges de travail de tous types dans n'importe quel endroit, offrant une protection unifiée des charges de travail dans le nuage à travers plusieurs fournisseurs. Les fournisseurs de cloud offrent généralement des services natifs de protection des charges de travail, tels que le cryptage des données au repos et en transit, la gestion des identités et des accès (IAM) et l'isolation du réseau par le biais de clouds privés virtuels (VPC).
Principaux enseignements et ressources complémentaires
- Charge de travail : Se réfère à la demande placée sur un système, alors qu'une application est un logiciel.
- Types de charges de travail : Les charges de travail vont du transactionnel et de l'interactif au batch, au calcul intensif et à l'utilisation intensive de données. Chaque charge de travail doit être traitée en fonction des exigences qui lui sont imposées.
- Gestion de la charge de travail : La gestion efficace des charges de travail est souvent automatisée. L'objectif est d'utiliser les ressources en fonction des besoins du système.
- Protéger la charge de travail : La protection contre les menaces qui pèsent sur la charge de travail est importante, et les outils et modèles de sécurité natifs de l'informatique en nuage y contribuent.
Nous vous laissons également avec quelques ressources adjacentes pour aider votre entreprise à créer et à gérer des applications à l'échelle.
- Architecture de haute disponibilité : Exigences et meilleures pratiques
- Qu'est-ce qu'une application distribuée ? Définition et exemples
Vous pouvez visiter notre blog et pôle de concepts pour en savoir plus sur les concepts liés à la charge de travail de Couchbase.