Déployer des charges globales de traitement par lots natives du cloud à l'aide du service batch Oracle Cloud Infrastructure
Introduction
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 sont souvent gourmandes en calcul, exécutées de manière asynchrone et peuvent varier considérablement en échelle et en fréquence. La gestion de ces charges de travail à l'aide d'approches traditionnelles peut être complexe, ce qui oblige les équipes à provisionner l'infrastructure, à créer des systèmes de planification et à gérer la mise à l'échelle manuellement.
Oracle Cloud Infrastructure (OCI) Batch Service est conçu pour simplifier ce processus. Il fournit 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 travaux pendant que la plate-forme gère l'exécution et la gestion des ressources.
Dans ce tutoriel, nous allons explorer le fonctionnement d'OCI Batch, son architecture et comment il peut être utilisé efficacement dans des scénarios réels.
Quel problème OCI Batch résout-il ?
L'exécution de charges de travail par lots implique traditionnellement plusieurs couches de complexité. Les équipes doivent souvent provisionner les ressources de calcul à l'avance, implémenter leurs propres mécanismes de planification des tâches et créer une logique pour gérer les nouvelles tentatives, les échecs et le redimensionnement. Même lorsque vous utilisez des plates-formes comme Kubernetes, des efforts importants sont nécessaires pour configurer et maintenir l'environnement. Cela augmente les frais opérationnels et ralentit le développement.
OCI Batch répond à ces défis en fournissant un service unifié qui gère le cycle de vie des workloads par lots. Il supprime 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.
Présentation d'OCI Batch Service
OCI Batch agit comme un service centralisé pour la gestion et l'exécution de workloads 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 besoins en travaux et provisionne la capacité de calcul dynamique pour exécuter des tâches. Chaque tâche s'exécute dans un environnement en conteneur, ce qui garantit la cohérence et l'isolement. Une fois l'exécution terminée, les sorties sont stockées et les journaux sont générés pour la surveillance et le dépannage.
Cette approche fournit un workflow simplifié dans lequel la soumission, la planification, l'exécution et l'observabilité des travaux sont gérées au sein d'un seul service géré.
Architecture Deep Dive
L'architecture d'OCI Batch suit un flux clair de la soumission à l'exécution et à la sortie des travaux, comme indiqué dans le diagramme.

Le processus commence lorsqu'un utilisateur soumet un travail à l'aide de la console, de l'interface de ligne de commande ou de l'API OCI. Cette demande est associée à un élément Batch Context, qui sert de couche de configuration de base. Le contexte définit des paramètres clés tels que la mise en réseau, les parcs de calcul et la journalisation, ce qui garantit que tous les travaux sont exécutés dans un environnement cohérent.
Les travaux sont ensuite organisés en Job Pools, qui fournissent un regroupement logique et aident à contrôler le comportement de planification. Ceci 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 travail soumis 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âche défini. Cela permet de décomposer les travaux en morceaux plus petits qui peuvent s'exécuter indépendamment ou en séquence, selon les dépendances définies.
Une fois soumis, les travaux sont placés dans une table Queue, où ils attendent que les ressources soient disponibles. Le planificateur évalue en permanence la file d'attente et sélectionne les travaux en fonction de la priorité et de la capacité. Cela garantit que les charges de travail sont traitées efficacement sans surcharger le système.
Pour exécuter ces tâches, OCI Batch utilise Compute Fleets, qui représente la capacité de calcul sous-jacente. Ces parcs sont provisionnés dynamiquement en fonction de la demande de charge globale. Au fur et à mesure que de nouveaux travaux sont soumis, une capacité supplémentaire est allouée. Lorsque la demande diminue, les ressources sont réduites. Cela garantit une utilisation efficace sans intervention manuelle.
Une fois l'exécution terminée, les résultats sont stockés dans OCI storage services, et les journaux et les mesures sont capturés pour plus de visibilité. Vous obtenez ainsi une vue complète de l'exécution des travaux et des performances du système.
Pourquoi cette architecture compte
La principale force d'OCI Batch réside dans sa séparation entre la soumission et l'exécution des travaux. Au lieu d'exécuter immédiatement chaque travail, le système utilise des files d'attente et une logique de planification pour gérer efficacement les charges de travail. Cette conception permet à OCI Batch de gérer les pics de demande soudains sans nécessiter d'infrastructure pré-provisionnée. Il garantit également que les travaux de priorité supérieure peuvent être exécutés en premier, ce qui améliore la prévisibilité dans les environnements partagés.
En gérant l'allocation des ressources de manière dynamique et en contrôlant l'exécution via des files d'attente, le service offre un équilibre entre les performances, l'évolutivité et la rentabilité.
Composants de base d'OCI Batch
OCI Batch s'articule autour d'un ensemble de composants de base qui fonctionnent ensemble pour fournir des fonctionnalités de traitement par lots.
- Le contexte de batch définit l'environnement des charges globales, y compris les configurations de réseau, de parcs de calcul et de journalisation. Il assure la cohérence de tous les travaux.
- Les pools de travaux permettent de regrouper des travaux associés et de gérer le comportement de planification. Ils permettent d'organiser les charges de travail et de contrôler les priorités dans des environnements multi-équipes.
- Un travail représente un workflow complet et peut se composer de plusieurs tâches. Il définit ce qui doit être exécuté et la façon 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 workflows simples et complexes.
- Les profils de tâche définissent la façon dont les tâches sont exécutées en spécifiant les besoins en ressources tels que l'UC, la mémoire, les images de conteneur et les variables d'environnement. Les charges de travail peuvent ainsi être optimisées en fonction de leurs besoins.
Exemple concret : pipeline de traitement vidéo
Imaginez un scénario dans lequel 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.
A l'aide d'OCI Batch, chaque vidéo peut être traitée comme une tâche distincte dans un travail. Ces tâches peuvent être exécutées en parallèle sur plusieurs ressources de calcul, ce qui réduit considérablement le temps de traitement total. À mesure que la demande de workloads augmente, OCI Batch 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 les journaux sont générés pour la surveillance. Ce modèle peut être appliqué à de nombreux autres cas d'utilisation, notamment les pipelines de données, les charges de travail de machine learning et les simulations d'ingénierie.
Prérequis
Suivez les exemples de stratégie IAM pour autoriser le service de traitement batch OCI à 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 travaux.
Tâche 1 : Créer un contexte de lot
Le contexte de batch est la couche de configuration de niveau supérieur pour vos charges globales de batch. Il inclut la mise en réseau, les parcs, les habilitations, les paramètres de priorité des travaux et la configuration de la journalisation.
Pour créer un contexte de batch, accédez au service de batch et sélectionnez Contextes de batch, puis Créer un contexte de batch. Remplissez les détails suivants en fonction de votre environnement.
- Nom
- Compartiment
- Description
- VCN
- Sous-réseau
- Parc
- Droits (facultatif)
- Configuration de la priorité du travail (facultatif)
-
Configuration de la journalisation

Tâche 2 : Créer un pool 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 pool de travaux sous lequel le créer. Pour créer un pool de travaux, vous avez uniquement besoin 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, chacun correspondant à un besoin en ressources différent. Pour créer un profil de tâche, vous devez disposer des configurations suivantes :
- Nom
- Description
- Nombre minimal d'OCPU : vous pouvez définir cette valeur sur 1 pour cet exemple
-
Mémoire minimale en Go - Vous pouvez définir cette valeur sur 8 pour cet exemple

Tâche 4 : Configuration de l'environnement local et propagation des images de conteneur
-
Extrayez le code de GitHub et déplacez-le vers le bon répertoire.
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 OCI Container Registry (OCIR).

-
Envoyez l'image du conteneur vers OCIR. Le chemin d'image doit correspondre à la région, à l'espace de noms de location, au nom de référentiel et à la balise d'image, à savoir
iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latestdocker build -t <image>:<tag> . docker push <image>:<tag>
-
Créez des buckets Object Storage pour les vidéos d'entrée et de sortie.


-
Charger un fichier vidéo dans Object Storage
Tâche 5 : Créer un environnement de 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 aurez besoin des éléments suivants :
- Nom
- Description
- Contexte de sécurité:
- ID utilisateur : définissez cette valeur sur 1
- ID groupe : définissez cette valeur sur 1
- ID de groupe de systèmes de fichiers : définissez cette valeur sur 1
-
Répertoire de travail : Définissez ceci sur /video

Tâche 6 : Soumettre le travail
Il existe plusieurs façons d'envoyer une tâche au service de lot. Pour ce tutoriel, nous allons utiliser l'interface de ligne de commande OCI.
- Créez un fichier nommé
video_conversion_job.json. - Copiez et collez les éléments suivants 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
- ID_PROFIL_TÂCHE
- ESPACE DE NOMS DE LOCATION
- REGION
-
Exécutez la commande suivante :
oci batch batch-job create --from-json file://video_conversion_job.jsonLa tâche peut prendre jusqu'à 10 minutes. Observez le travail dans la console OCI pour voir sa phase.
Tâche 7 : Valider les résultats
- Dans la console OCI, accédez à Object Storage.
- Recherchez le bucket de sortie et validez la présence de la vidéo transcodée.
OCI Batch par rapport aux approches traditionnelles
Les solutions de traitement par lots traditionnelles nécessitent souvent la gestion de l'infrastructure, la configuration des planificateurs et la gestion manuelle de la mise à l'échelle. Cela augmente la complexité et les frais opérationnels. Cependant, OCI Batch élimine ces difficultés en fournissant un environnement géré dans lequel la planification, 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 OCI Batch efficacement, les charges de travail doivent être conçues en tenant compte de l'évolutivité. La division de tâches volumineuses en tâches plus petites permet une meilleure exécution parallèle et des performances améliorées. Il est également important de définir des profils de tâche appropriés afin que les ressources soient allouées efficacement. Une journalisation et une surveillance appropriées doivent être activées pour garantir une visibilité sur l'exécution des travaux. L'utilisation de pools de tâches et de priorités permet de s'assurer que les charges de travail critiques sont exécutées dans les temps, en particulier dans les environnements partagés.
Conclusion
Le service OCI Batch offre un moyen rationalisé et évolutif d'exécuter des charges de travail par lots dans le cloud. En gérant l'orchestration des tâches, la planification 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 entreprises qui traitent des workloads à grande échelle et gourmands en calcul, OCI Batch offre une solution fiable et flexible qui permet aux équipes de se concentrer sur l'obtention de résultats plutôt que sur la gestion de l'infrastructure.
Liens connexes
- Service de traitement par lots OCI – Moteur d'orchestration de calcul géré pour les charges de travail cloud natives
- Service batch OCI
Accusés de réception
- Auteurs : Payal Sharma (architecte cloud senior), Matthew McDaniel (ingénieur cloud du personnel)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur la chaîne YouTube Oracle Learning. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.
Deploy Cloud Native Batch Workloads Using Oracle Cloud Infrastructure Batch Service
G56470-01