Déployer des charges de travail par lots natives en nuage à l'aide du service par lots d'Oracle Cloud Infrastructure
Présentation
Les applications modernes s'appuient fortement sur le traitement en arrière-plan pour gérer des tâches telles que la transformation des données, la génération de rapports, le traitement des médias et les simulations à grande échelle. Ces charges de travail nécessitent souvent de nombreuses opérations de calcul, s'exécutent de façon asynchrone et peuvent varier considérablement en fonction de l'échelle et de la fréquence. La gestion de ces charges de travail à l'aide d'approches traditionnelles peut s'avérer complexe. Les équipes doivent provisionner l'infrastructure, créer des systèmes de programmation et gérer l'évolutivité manuellement.
Le service par lots Oracle Cloud Infrastructure (OCI) est conçu pour simplifier ce processus. Il offre un moyen entièrement géré d'exécuter des charges de travail par lots à grande échelle, ce qui vous permet de vous concentrer sur la définition de vos tâches pendant que la plate-forme gère l'exécution et la gestion des ressources.
Dans ce tutoriel, nous allons explorer le fonctionnement du lot OCI, son architecture et la façon dont il peut être utilisé efficacement dans des scénarios du monde réel.
Quel problème résout le lot OCI?
L'exécution de charges de travail par lots implique généralement plusieurs niveaux de complexité. Les équipes doivent souvent provisionner des ressources de calcul à l'avance, mettre en oeuvre leurs propres mécanismes de programmation de tâche et créer une logique pour gérer les nouvelles tentatives, les défaillances et l'évolutivité. Même lors de l'utilisation de plates-formes telles que Kubernetes, des efforts importants sont nécessaires pour configurer et maintenir l'environnement. Cela augmente les frais généraux opérationnels et ralentit le développement.
Le lot OCI répond à ces défis en fournissant un service unifié qui gère le cycle de vie des charges de travail par lots. Il élimine la nécessité de créer des planificateurs personnalisés ou de gérer l'infrastructure, ce qui permet aux équipes d'exécuter des tâches à grande échelle plus efficacement et avec moins d'efforts opérationnels.
Aperçu du service de lots OCI
Le lot OCI sert de service centralisé pour la gestion et l'exécution des charges de travail par lots. Lorsqu'un travail est soumis, il est placé dans une file d'attente et traité en fonction des décisions de planification et de la disponibilité des ressources. Le service évalue les exigences de la tâche et provisionne la capacité de calcul de manière dynamique pour exécuter les tâches. Chaque tâche s'exécute dans un environnement conteneurisé, ce qui assure la cohérence et l'isolement. Une fois l'exécution terminée, les sorties sont stockées et des journaux sont générés pour la surveillance et le dépannage.
Cette approche fournit un flux de travail rationalisé dans lequel la soumission, la programmation, l'exécution et l'observabilité des tâches sont traitées au sein d'un seul service géré.
Examen approfondi de l'architecture
L'architecture du lot OCI suit un flux clair de la soumission de tâche à l'exécution et à la sortie, comme illustré dans le diagramme.

Le processus commence lorsqu'un utilisateur soumet une tâche à l'aide de la console, de l'interface de ligne de commande ou de l'API OCI. Cette demande est associée à Batch Context, qui agit comme couche de configuration fondamentale. Le contexte définit les paramètres clés tels que le réseau, les parcs de calcul et la journalisation, afin de garantir que toutes les tâches s'exécutent dans un environnement cohérent.
Les tâches sont ensuite organisées en Job Pools, qui fournissent un regroupement logique et aident à contrôler le comportement de programmation. Cela est particulièrement utile lors de la gestion des charges de travail entre différentes équipes ou environnements, car il permet la hiérarchisation et l'isolement. Chaque tâche soumise représente une unité de travail complète et peut inclure une ou plusieurs tâches. Les tâches sont les plus petites unités exécutables et sont exécutées à l'aide d'un environnement de tâches défini. Cela permet de diviser les travaux en petits morceaux qui peuvent s'exécuter indépendamment ou en séquence, en fonction des dépendances définies.
Une fois soumises, les tâches sont placées dans un fichier Queue, où elles attendent que les ressources soient disponibles. Le programmateur évalue continuellement la file d'attente et sélectionne les travaux en fonction de leur priorité et de leur capacité. Cela garantit que les charges de travail sont traitées efficacement sans surcharger le système.
Pour exécuter ces tâches, le lot OCI utilise Compute Fleets, qui représente la capacité de calcul sous-jacente. Ces flottes sont provisionnées de façon dynamique en fonction de la demande de charge de travail. À mesure que d'autres tâches sont soumises, une capacité supplémentaire est affectée; lorsque la demande diminue, les ressources sont réduites. Cela garantit une utilisation efficace sans intervention manuelle.
Après l'exécution, les résultats sont stockés dans OCI storage services, et les journaux et les mesures sont saisis pour la visibilité. Ceci fournit une vue complète de l'exécution des tâches et des performances du système.
L'importance de cette architecture
Une force clé du lot OCI réside dans sa séparation entre la soumission et l'exécution de la tâche. Au lieu d'exécuter immédiatement chaque tâche, le système utilise des files d'attente et une logique de planification pour gérer efficacement les charges de travail. Cette conception permet au lot OCI de gérer les pics soudains de demande sans nécessiter d'infrastructure préprovisionnée. Il garantit également que les travaux prioritaires peuvent être exécutés en premier, ce qui améliore la prévisibilité dans les environnements partagés.
En gérant dynamiquement l'allocation des ressources et en contrôlant l'exécution au moyen de files d'attente, le service offre un équilibre entre performance, évolutivité et rentabilité.
Composants de base du lot OCI
OCI Batch est construit autour d'un ensemble de composants de base qui fonctionnent ensemble pour fournir des capacités de traitement par lots.
- Le contexte de lot définit l'environnement pour les charges de travail, notamment les configurations de réseau, de parcs de calcul et de journalisation. Il assure la cohérence de tous les travaux.
- Les groupes de tâches sont utilisés pour regrouper les tâches connexes et gérer le comportement de programmation. Ils aident à organiser les charges de travail et à contrôler les priorités dans des environnements à équipes multiples.
- Un travail représente un flux de travail complet et peut comprendre plusieurs tâches. Il définit ce qui doit être exécuté et la manière dont les tâches sont liées.
- Les tâches sont les plus petites unités d'exécution. Chaque tâche s'exécute dans un conteneur et effectue une opération spécifique. Les tâches peuvent être exécutées en parallèle ou suivre des dépendances, ce qui permet des flux de travail simples et complexes.
- Les profils de tâche définissent comment les tâches sont exécutées en spécifiant les besoins en ressources telles que l'UC, la mémoire, les images de conteneur et les variables d'environnement. Cela permet d'optimiser les charges de travail en fonction de leurs besoins.
Exemple réel : Pipeline de traitement vidéo
Pensez à un scénario où des milliers de vidéos doivent être traitées. Par exemple, la conversion de formats, la génération de miniatures ou l'application de filtres.
À l'aide du lot OCI, chaque vidéo peut être traitée comme une tâche distincte au sein d'une tâche. Ces tâches peuvent être exécutées en parallèle sur plusieurs ressources de calcul, ce qui réduit considérablement le temps total de traitement. À mesure que la demande de charge de travail augmente, le lot OCI provisionne automatiquement une capacité de calcul supplémentaire pour gérer les tâches. Une fois le traitement terminé, les résultats sont stockés et des journaux sont générés pour la surveillance. Ce modèle peut être appliqué à de nombreux autres cas d'utilisation, notamment des pipelines de données, des charges de travail d'apprentissage automatique et des simulations d'ingénierie.
Conditions requises
Suivez les exemples de politique IAM pour permettre au service de traitement par lots OCI d'accéder aux services OCI requis.
Vous devrez également télécharger l'interface de ligne de commande OCI si vous voulez l'utiliser pour créer des tâches.
Tâche 1. Créer un contexte de lot
Le contexte de lot est la couche de configuration de niveau supérieur pour vos charges de travail par lots. Il comprend le réseau, les parcs, les droits, les paramètres de priorité des tâches et la configuration de journalisation.
Pour créer un contexte de lot, allez au service Lot et sélectionnez Contextes de lot, puis Créer un contexte de lot. Remplissez les détails suivants en fonction de votre environnement.
- Nom
- Compartiment
- Description
- VCN
- Sous-réseau
- Parc
- Droits (facultatif)
- Configuration de la priorité des tâches (facultatif)
-
Configuration de la journalisation

Tâche 2. Créer un groupe de travaux
Un pool de travaux est simplement un conteneur logique pour les travaux. Lors de l'exécution d'un travail, vous sélectionnez un groupe de travaux sous lequel le créer. Pour créer un groupe de tâches, vous n'avez besoin que des configurations suivantes.
- Nom
- Description
-
Compartiment

Tâche 3. Créer un profil de tâche
Un profil de tâche est une configuration réutilisable qui définit les ressources de calcul minimales requises pour les tâches, telles que 1 OCPU et 16 Go de mémoire. Vous pouvez créer plusieurs profils correspondant chacun à un besoin en ressources différent. Pour créer un profil de tâche, vous avez besoin des configurations suivantes :
- Nom
- Description
- Minimum d'OCPU - Vous pouvez régler cet exemple à 1
-
Mémoire minimale en Go - Vous pouvez régler cet exemple à 8

Tâche 4. Configurer l'environnement local et pousser des images de conteneur
-
Extrayez le code de GitHub et déplacez-le vers le répertoire approprié.
git clone https://github.com/oracle-devrel/technology-engineering.git cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ -
Créez un référentiel dans le registre de conteneurs OCI (OCIR).

-
Pousser l'image de conteneur vers OCIR. Le chemin de l'image doit correspondre à votre région, à votre espace de noms de location, au nom du référentiel et au marqueur d'image, à savoir
iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latestdocker build -t <image>:<tag> . docker push <image>:<tag>
-
Créer des seaux de stockage d'objets pour les vidéos d'entrée et de sortie.


-
Charger un fichier vidéo dans le stockage d'objets
Tâche 5. Créer un environnement de traitement des tâches
Un environnement de tâche est la configuration d'exécution de vos tâches. Pour configurer un environnement de tâche, vous devez :
- Nom
- Description
- Contexte de sécurité :
- ID utilisateur : Réglez cette valeur à 1
- ID groupe : Réglez cette valeur à 1
- ID groupe de systèmes de fichiers : Réglez cette valeur à 1
-
Répertoire de travail : Réglez ceci à /video

Tâche 6. Soumettre le travail
Il existe différentes façons de soumettre une tâche au service Batch. Pour ce tutoriel, nous allons utiliser l'interface de ligne de commande OCI.
- Créer un fichier nommé
video_conversion_job.json - Copier et coller ce qui suit dans
video_conversion_job.json{ "batchJobPoolId": "JOB_POOL_OCID", "compartmentId": "COMPARTMENT_ID", "description": "Task to convert video from MP4 to AVI format", "displayName": "convert_video", "maxWaitSeconds": 0, "tasks": [ { "batchJobPoolId": "JOB_POOL_OCID", "compartmentId": "COMPARTMENT_ID", "description": "Task to convert video from MP4 to AVI format", "displayName": "convert_video", "maxWaitSeconds": 0, "tasks": [ { "batchTaskEnvironmentId": "TASK_ENVIRONMENT_OCID", "batchTaskProfileId": "TASK_PROFILE_OCID", "description": "Task to convert video from MP4 to AVI format", "environmentVariables": [ { "name": "INPUT_BUCKET", "value": "input_bucket" }, { "name": "INPUT_OBJECT", "value": "input.mp4" }, { "name": "OCI_BUCKET", "value": "output_bucket" }, { "name": "OUTPUT_FILENAME", "value": "output.avi" }, { "name": "OCI_NAMESPACE", "value": "TENANCY_NAMESPACE" }, { "name": "OCI_REGION", "value": "REGION" } ], "fleetAssignmentPolicy": { "type": "BEST_FIT" }, "name": "convert_video", "type": "COMPUTE" } ], "waitForState": [ "ACCEPTED" ], "waitIntervalSeconds": 0Remplacez ce qui suit en fonction de votre environnement :
- JOB_POOL_OCID;
- COMPARTMENT_ID
- TASK_ENVIRONMENT_OCID;
- TASK_PROFILE_OCID;
- ESPACE DE NOMS DE LOCATION
- RÉGION
-
Exécutez la commande suivante :
oci batch batch-job create --from-json file://video_conversion_job.jsonLa tâche prendra jusqu'à 10 minutes. Observez le travail dans la console OCI pour voir à quelle étape il se trouve.
Tâche 7. Valider les résultats
- Dans la console OCI, allez à Stockage d'objets.
- Recherchez le seau de sortie et validez si une vidéo transcodée est présente.
Lot OCI par rapport aux approches traditionnelles
Les solutions de traitement par lots traditionnelles nécessitent souvent la gestion de l'infrastructure, la configuration des programmateurs et la gestion manuelle de l'évolutivité. Cela augmente la complexité et les frais généraux opérationnels. Toutefois, le lot OCI élimine ces difficultés en fournissant un environnement géré où la programmation, l'exécution et le provisionnement des ressources sont gérés automatiquement. Cela facilite l'exécution de charges de travail à grande échelle sans expertise approfondie en infrastructure.
Meilleures pratiques
Pour utiliser efficacement le lot OCI, les charges de travail doivent être conçues en tenant compte de l'évolutivité. La décomposition de tâches volumineuses en tâches plus petites permet une meilleure exécution en parallèle et des performances améliorées. Il est également important de définir des profils de tâches appropriés afin que les ressources soient allouées efficacement. Une journalisation et une surveillance appropriées doivent être activées pour garantir la visibilité de l'exécution des tâches. L'utilisation de groupes de tâches et de priorités permet de s'assurer que les charges de travail critiques sont exécutées à temps, en particulier dans les environnements partagés.
Conclusion
Le service de lot OCI offre un moyen simplifié et évolutif d'exécuter des charges de travail par lots dans le nuage. En gérant l'orchestration des tâches, la programmation et le provisionnement du calcul au sein d'un seul service, il réduit la complexité opérationnelle et améliore l'efficacité. Pour les organisations traitant des charges de travail à grande échelle et gourmandes en calcul, OCI Batch offre une solution fiable et flexible qui permet aux équipes de se concentrer sur la livraison de résultats plutôt que sur la gestion de l'infrastructure.
Liens connexes
- Service par lots OCI - Moteur d'orchestration de calcul géré pour les charges de travail natives en nuage
- Service de lot OCI
Remerciements
- Auteurs : Payal Sharma (architecte en nuage principal), Matthew McDaniel (ingénieur en nuage de personnel)
Ressources d'apprentissage supplémentaires
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur la chaîne YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Deploy Cloud Native Batch Workloads Using Oracle Cloud Infrastructure Batch Service
G56469-01