Avec le marketing imposé par les fournisseurs de services Cloud il est parfois complexe de s’y retrouver. Si bien qu’il est parfois complexe de comprendre les différences entre plusieurs services ou solutions. Je vous propose de dégrossir les différences et les usages potentiels pour 3 services disponibles dans le Cloud de Microsoft : Azure Batch, Azure Functions et enfin Azure Automation.
Azure Batch
Explications
Azure Batch est conçu pour traiter des tâches massives en parallèle sur un grand nombre de machines virtuelles (VM). Il permet de gérer des charges de travail intensives sans que vous ayez à configurer ou gérer individuellement les VM. Vous pouvez l’utiliser pour tout type de tâche nécessitant des calculs complexes ou le traitement simultané d’une grande quantité de données.
Il est important que de bien comprendre que sur ce service nous allons travailler avec une collection d’objet Computer (ou autre) comme des machines virtuelles. Vous verrez pour les autres services que cela ne sera pas le cas.
Cas d’utilisation de Azure Batch
- Rendu vidéo ou image : Par exemple, une société de production vidéo peut utiliser Azure Batch pour rendre des animations ou convertir des vidéos en plusieurs formats.
- Analyse scientifique : Les chercheurs ou scientifiques peuvent simuler des modèles physiques ou chimiques sur des milliers de combinaisons en parallèle.
- Entraînement de modèles IA/ML : Si vous devez entraîner un modèle d’intelligence artificielle sur un grand ensemble de données, Batch peut exécuter plusieurs expériences simultanément.
- Calcul financier ou mathématique complexe : Simulation Monte Carlo, analyse des risques ou valorisation de portefeuilles pour les entreprises financières.
Généralement afin de pouvoir utiliser Azure Batch vous devez passer par les actions décrites ci-dessous :
- Provisionnement automatique des ressources :
- Vous définissez un pool de VM avec des caractéristiques spécifiques (CPU, RAM, GPU).
- Batch les déploie et les gère automatiquement pour exécuter vos tâches.
- Division des tâches :
- Vous fournissez un script ou une application à exécuter sur chaque tâche.
- Batch divise le travail en petits morceaux et le répartit sur les VM.
- Nettoyage automatique :
- Une fois les tâches terminées, Azure Batch peut libérer les ressources pour minimiser les coûts.
Avantages et limitations
Azure Batch est donc pratique pour les cas de figure ou vous avez des centaines ou des milliers de tâches répétitives à exécuter sur votre infrastruture IaaS. Cette solution ne sera en revanche pas idéal pour les tâches uniques ou légères.
Azure Functions
Explications de Azure Functions
Azure Functions est un service sans serveur (autrement appelé serverless) qui exécute de petites portions de code en réponse à des événements. Il est optimisé pour des tâches légères, rapides, et ponctuelles.
L’intérêt de ce service et que vous n’avez pas besoin de gérer les charges de calculs qui vont être nécessaire pour exécuter votre code ou remplir votre besoin. Dit autrement, vous n’avez donc pas à gérer les serveurs sous-jacents, tout est pris en charge automatiquement par Azure.
Cas d’utilisation de Azure Functions
Voici plusieurs exemples d’utilisation :
- Automatisation basée sur des événements, on exécute une fonction lorsque :
- Un fichier est déposé dans un stockage Azure (Blob Storage).
- Un message arrive dans une file d’attente (Queue Storage, Event Hub).
- Une requête HTTP ou une notification webhook est reçue.
- Microservices : Utilisez Azure Functions pour créer des services autonomes qui effectuent des tâches spécifiques dans une architecture microservices (stockage de fichier, archivage, appel de jobs à heures fixes pour réaliser des backups, etc.).
- Traitement en temps réel pour par exemple transformer un fichier CSV en JSON dès son dépôt dans un stockage.
- Gestion des workflows légers pour créer un utilisateur dans Active Directory, envoyer un email de bienvenue et générer un rapport après un événement, etc.
Fonctionnement de Azure Functions
On peut imaginer de nombreux cas d’usage à Azure Functions. Mais vous devez garder en tête que le code ou les applications que vous avez créé par le passé et que vous déployez ou configuriez sur vos machines virtuelles ne seront pas nécessairement automatiquement « portables » ou compatibles avec Azure Functions. Vous aurez donc probablement du développement à refaire – ou à minima à adapter.
Pour pouvoir créer une Azure Functions, vous devrez définir les composants suivants :
- Déclencheurs (Triggers) : Vous définissez ce qui déclenche la fonction (ex. : un fichier ajouté, un événement IoT, une requête HTTP).
- Exécution éphémère : La fonction s’exécute uniquement lorsqu’elle est appelée, puis les ressources sont libérées.
- Échelle automatique : Azure ajuste automatiquement les ressources pour gérer plus ou moins d’appels, sans intervention de votre part.
Avantages et limitations :
En général, Azure Functions n’est pas forcément adapter pour les tâches longues ou complexes. C’est en revanche idéal pour des tâches individuelles & courtes et qui se répètent de manière similaires (comme les exemples que je vous ai cités précédemment). Néanmoins, avec l’amélioration du service – cela a tendance à être de moins en moins vrai.
La complexité c’est que vous devrez bien souvent re-développer votre application ou votre besoin. En revanche, un avantage indéniable et l’économie de coûts que vous pouvez réaliser puisqu’il n’y a pas de VM indépendante à déployer mais c’est Azure qui alloue uniquement le compute nécessaire à votre tâche.
Azure Automation
Explications de Azure Automation
Azure Automation est un service qui vous aide à automatiser la gestion de vos ressources Azure ou d’autres systèmes. Il est souvent utilisé pour des tâches de maintenance, des actions répétitives, ou des workflows d’administration IT.
L’usage le plus connu de Azure Automation est sa possibilité d’exécuter des scripts PowerShell, Python (et d’autres) de manière automatisée voir même panifiée à des horaires fixes. C’est un service qui est très simple à utiliser que j’affectionne particulièrement. J’en ai d’ailleurs parlé dans plusieurs anciens articles. 😀
Cas d’utilisation de Azure Automation
- Maintenance des machines virtuelles : Par exemple, appliquer automatiquement des correctifs (patching) sur vos VM Windows ou Linux.
- Gestion des ressources Azure : Par exemple, redémarrer une VM automatiquement si elle est inactive depuis un certain temps. J’avais déjà démontré ce cas d’utilisation dans cet article pour arrêter et démarrer des charges de calculs afin d’optimiser votre facturation Azure.
- Tâches planifiées ou récurrentes : Nettoyage de ressources inutilisées, suppression de comptes d’utilisateurs expirés, ou optimisation des coûts.
- Interopérabilité : Vous pouvez connecter Azure Automation à des outils tiers (ex. : System Center) pour automatiser la gestion des ressources hors Azure.
- Automatisation des workflows IT : Créer un processus automatisé pour provisionner un utilisateur, lui attribuer un accès, puis envoyer un email de bienvenue. D’ailleurs, les scripts (ou runbooks) que vous allez déployés peuvent être créés en CLI ou bien avec une interface graphique style Logic Apps si vous êtes moins à l’aise avec le code.
Fonctionnement de Azure Automation
- Runbooks : Un Runbook est un script (PowerShell ou Python) que vous pouvez exécuter manuellement ou planifier. Ces scripts interagissent directement avec Azure ou des ressources externes.
- Intégration avec d’autres services : Azure Automation peut se connecter à Log Analytics pour suivre les logs ou déclencher des actions basées sur des alertes.
- Tâches planifiées : Vous pouvez programmer des exécutions régulières (ex. : tous les jours à 2h du matin).
Avantages et limitations
Je ne suis pas le plus objectif sur ce service car il se trouve que c’est un de mes composants préférés dans Azure. Le coût d’utilisation est très peu élevé et les possibiliés sont illimitées car tout ce que vous pourriez faire via Azure CLI peut être intégré dans Azure Automation.
L’outil peut malgré tout manqué de réactivité lorsque vous avez des traitements intensifs ou parallèles à exécuter. Par exemple, j’ai souvent remarqué que lorsqu’un runbook est planifié à 14h00 il peut s’exécuter avec plusieurs secondes / voir minutes de décalage. Donc plutôt orienté pour la gestion et l’adminstrations de vos autres composants Azure. 😉
Conclusion
Finalement, on peut synthétiser les différence dans le tableau ci-après.
Caractéristique | Azure Batch | Azure Functions | Azure Automation |
But principal | Traitement massif de données | Réagir à des événements légers | Automatiser la gestion des ressources |
Type de tâche | Tâches massives et parallèles | Tâches légères et rapides | Gestion d’infrastructure IT |
Déclencheur (ou trigger) | Script ou application | Événement (fichier, HTTP, etc.) | Manuel ou planifié |
Approche | Gérer des pools de VM | Sans serveur (serverless) | Runbooks/script planifiés |
Exemple concret | Rendu vidéo de 100 fichiers | Envoi d’un email après un upload | Mise à jour des VM chaque mois |
Adapté pour | Calculs complexes et longues durées | Réponse rapide à des événements | Maintenance ou gestion IT |
Scalabilité | Haute (pool de VM) | Automatique (sans serveur) | Moyenne (lié aux scripts) |
Durée des tâches | Longue (minutes à heures) | Très courte (millisecondes à secondes) | Moyenne à longue |