Gérer des charges de travail Azure Batch à partir d’une application .NET

Effectué

Azure Batch est une collection de ressources que vous combinez pour produire une solution parallèle à grande échelle et très performante.

Vous décidez d’écrire l’application qui gère l’intégralité du processus Azure Batch sous la forme d’une application console .NET Core. L’application commence par charger les vidéos d’animaux dans le cloud, Il crée ensuite un pool Azure Batch avec des nœuds de calcul (des machines virtuelles). L’application crée ensuite un travail à exécuter sur ces nœuds.

Le travail qui s’exécute sur chaque nœud de calcul contient des tâches pour chaque vidéo chargée dans le conteneur de stockage en entrée. La tâche charge les vidéos d’animaux MP4, les convertit en images GIF animées et enregistre les fichiers dans un conteneur de sortie. La tâche référence la bibliothèque ffmpeg stockée sous la forme d’un package d’application dans le compte Azure Batch. Le diagramme suivant montre notre processus :

Diagram showing how an app can use Azure Storage and Azure Batch to run apps on compute nodes in pools.

Azure Batch s’utilise en combinaison avec Stockage Azure. Stockage Azure fournit l’emplacement des données d’entrée, un endroit pour les informations de journalisation et de supervision, ainsi qu’un espace de stockage pour la sortie finale. Les applications exécutées par une exécution Azure Batch peuvent également y être stockées, mais une option plus flexible est d’utiliser la fonctionnalité de package d’application d’Azure Batch.

Les composants d’Azure Batch sont les suivants :

  • Compte Azure Batch : Conteneur renfermant les ressources suivantes nécessaires à notre solution Azure Batch :
    • Package d’application : Un package d’application ajoute des applications que les tâches d’une instance Batch peuvent utiliser. Un compte Azure Batch peut contenir jusqu’à 20 packages d’application. Vous pouvez demander une augmentation de cette limite si votre entreprise en a besoin.
    • Pool : Un pool contient des nœuds de calcul, c’est-à-dire les moteurs qui exécutent votre travail Batch. Vous spécifiez le nombre, la taille et le système d’exploitation des nœuds au moment de la création. Un compte Azure Batch peut contenir de nombreux pools.
    • Nœud : Un certain nombre de tâches à exécuter peuvent être affectées à chaque nœud, et ces tâches sont allouées et gérées par Azure Batch. Les nœuds sont associés à un pool spécifique.
    • Travail : Les travaux gèrent des collections de tâches. Un travail est associé à un pool spécifique. Un compte Azure Batch peut avoir plusieurs travaux.
    • Tâche : Les tâches exécutent les applications, Celles-ci peuvent se trouver dans un package d’application ou dans un conteneur Stockage Azure. Une fois les fichiers d’entrée traités, les tâches peuvent les écrire dans des conteneurs de sortie.

Avant de pouvoir commencer à gérer les composants Azure Batch à partir d’une application .NET, vous devez créer le compte Azure Batch et le compte Stockage Azure. Vous pouvez utiliser le portail Azure, PowerShell ou Azure CLI pour créer ces comptes.

Pourquoi utiliser une application pour gérer des charges de travail Batch

L’utilisation d’une application pour contrôler le traitement Azure Batch vous permet d’automatiser l’exécution et la surveillance des tâches dans votre instance Azure Batch. L’ensemble étendu d’API clientes disponibles vous permet de contrôler l’ensemble du workflow de Batch depuis votre code. Une fois le traitement par lots terminé, l’application peut supprimer automatiquement les ressources créées, ce qui permet de maintenir vos coûts Azure à un niveau bas.

Les charges de travail Batch permettent une mise à l’échelle à des milliers de nœuds, ce qui rend plus faciles à réaliser des solutions qui nécessitent des ressources de calcul sollicitant fortement le processeur, comme le transcodage vidéo, les prévisions météorologiques et l’analyse d’images. Tous ces cas d’usage sont plus efficaces quand ils sont gérés par programmation.

API du service client Batch

Microsoft publie des API Batch pour toute une gamme de langages. Grâce à ces bibliothèques clientes, vous pouvez contrôler par programmation tous les composants du traitement Batch, notamment l’authentification, le traitement des fichiers, la création de pools de nœuds, la création de travaux avec des tâches et la surveillance de l’état de ces tâches en cours d’exécution.

Dans .NET, ces API Batch sont chargées en tant que packages NuGet dans vos applications. Nous allons également utiliser la bibliothèque de client Stockage Azure pour gérer les fichiers et les ressources dans notre solution.

Comment utiliser une application .NET pour contrôler Azure Batch

Les étapes que vous allez suivre dans le reste du module créent des comptes Azure Batch et Stockage Azure en utilisant le portail Azure. Vous chargerez ensuite l’application ffmpeg comme package d’application pour pouvoir l’utiliser dans des tâches. Votre application va utiliser des tâches exécutant ffmepg pour convertir les vidéos.

Une fois les comptes Batch et Stockage créés dans le portail Azure, vous devrez créer une application console .NET Core dans Cloud Shell qui utilise les bibliothèques de client Azure Batch et Stockage Azure.

Votre application utilisera la bibliothèque de client Stockage Azure pour charger les vidéos MP4 dans le stockage d’objets blob. L’application va ensuite utiliser la bibliothèque de client Batch pour créer un pool avec trois nœuds (des machines virtuelles Windows Server), créer un travail, puis ajouter les tâches de conversion vidéo au travail à exécuter sur ces nœuds. Une fois les tâches en cours d’exécution, l’application doit surveiller leur état, vérifier qu’elles se terminent correctement et supprimer les ressources indésirables.