Annonce de la mise à la disposition générale de la prise en charge de Python dans Azure Functions

Publié le 19 août, 2019

Principal PM Manager, Azure Functions

La prise en charge de Python pour Azure Functions est désormais généralement disponible pour héberger vos charges de travail de production, notamment dans les domaines de la science des données, du Machine Learning ou de la gestion automatisée des ressources. Vous pouvez maintenant développer des applications Python 3.6 à exécuter sur le runtime Functions 2.0 multiplateforme et open source. Celles-ci peuvent être publiées sous forme de code ou de conteneurs Docker sur une plateforme d'hébergement Linux serverless dans Azure. Cette pile favorise l'innovation pour nos utilisateurs précoces, sachant que des clients tels que General Electric Aviation et TCF Bank utilisent déjà des fonctions Azure écrites en Python pour leurs charges de travail de production serverless. Merci à eux pour leur indéfectible partenariat !

Selon David Havera, directeur Blockchain Analytics Engineering, « le groupe GE Aviation Digital souhaite bénéficier d'un langage commun qui puisse être utilisé aussi bien pour l'Engineering données principale que pour l'analyse frontale et le Machine Learning. Microsoft a joué un rôle déterminant en intégrant la prise en charge de Python à Azure Functions, de la préversion jusqu'à la version finale, permettant ainsi une implémentation réelle de la science des données et de la technologie Blockchain dans notre projet TRUEngine ».

Tout au long de la phase de préversion de Python pour Azure Functions, nous avons recueilli les commentaires de la communauté pour simplifier les expériences de création, introduire un modèle de programmation idiomatique et créer une plateforme d'hébergement plus performante et plus robuste sous Linux. Ce billet est un résumé complet de tout ce que vous devez savoir sur la prise en charge de Python dans Azure Functions et inclut des ressources utiles pour commencer à utiliser les outils de votre choix.

Intégrez vos charges de travail Python à Azure Functions

Le modèle serverless convient parfaitement à de nombreuses charges de travail Python, ce qui vous permet de vous concentrer sur votre logique métier tout en laissant Azure s'occuper du mode d'exécution de votre code. Nous sommes ravis de l'intérêt manifesté par la communauté Python et des solutions productives créées sur Functions à l'aide de Python.

Charges de travail et modèles de conception

Bien que cette liste ne soit pas exhaustive, voici quelques exemples de charges de travail et de modèles de conception faciles à translater en fonctions Azure écrites en Python.

Pipelines simplifiés pour la science des données

Python est un langage qui convient parfaitement à la science des données et au Machine Learning (ML). Vous pouvez tirer parti de la prise en charge de Python dans Azure Functions pour fournir un hébergement serverless à vos applications intelligentes. Voici quelques idées :

  • Utilisez Azure Functions afin de déployer un modèle ML formé ainsi qu'un script de scoring pour créer une application d'inférence.

Application d'inférence Azure Functions

  • Utilisez des déclencheurs et des liaisons de données pour ingérer, déplacer, préparer, transformer et traiter des données à l'aide de Functions.
  • Utilisez Functions pour introduire des déclencheurs basés sur des événements dans les pipelines de recyclage et de mise à jour des modèles lorsque de nouveaux jeux de données sont disponibles.

Gestion automatisée des ressources

Avec l'augmentation du nombre de ressources et de charges de travail qui migrent vers le cloud, des systèmes plus efficaces sont nécessaires pour gérer, gouverner et automatiser les ressources cloud correspondantes. Ces scénarios d'automatisation nécessitent une logique personnalisée dont Python peut faciliter l'expression. Voici quelques scénarios courants :

  • Traitement des alertes Azure Monitor générées par les services Azure.
  • Réaction aux événements Azure capturés par Azure Event Grid et application des exigences opérationnelles aux ressources.

Gestion automatisée des ressources basée sur les événements

  • Utilisation d'Azure Logic Apps pour la connexion aux systèmes externes comme la gestion des services informatiques, DevOps ou les systèmes de surveillance, tout en traitant la charge utile avec une fonction Python.
  • Exécution de tâches opérationnelles planifiées sur des machines virtuelles, SQL Server, des applications web et autres ressources Azure.

Modèle de programmation puissant

Pour un développement Python accéléré, Azure Functions fournit un modèle de programmation productif basé sur des déclencheurs d'événements et des liaisons de données. Le modèle de programmation repose sur une expérience de développement de bout en bout de premier plan qui va de la création et du débogage au niveau local jusqu'au déploiement et à la surveillance dans le cloud.

Le modèle de programmation est conçu pour offrir une expérience homogène aux développeurs Python. Vous pouvez rapidement commencer à écrire des fonctions à l'aide de constructions de code que vous connaissez déjà, ou importer des scripts et des modules .py existants pour créer la fonction. Par exemple, vous pouvez implémenter vos fonctions sous forme de coroutines asynchrones à l'aide du qualificateur async def ou envoyer des traces de surveillance à l'hôte à l'aide du module de journalisation standard. Des dépendances supplémentaires pour l'installation de pip peuvent être configurées à l'aide du fichier Requirements.txt.

Modèle de programmation Azure Functions

Grâce au modèle de programmation basé sur les événements de Functions, qui repose sur des déclencheurs et des liaisons, vous pouvez facilement configurer les événements qui déclencheront l'exécution de la fonction et toutes les sources de données avec lesquelles la fonction doit être orchestrée. Ce modèle contribue à améliorer la productivité lors du développement d'applications qui interagissent avec plusieurs sources de données en réduisant la quantité de code standard ainsi que le nombre de kits de développement logiciel (SDK) et de dépendances à gérer et à prendre en charge. Une fois celui-ci configuré, vous pouvez rapidement récupérer les données à partir des liaisons ou les mettre à jour à l'aide des attributs de méthode de votre fonction de point d'entrée. Le Kit de développement logiciel (SDK) Python pour Azure Functions fournit une couche d'API enrichie pour la liaison aux requêtes HTTP, aux événements d'horloge et à d'autres services Azure, tels qu'Azure Storage, Azure Cosmos DB, Service Bus, Event Hubs ou Event Grid, afin de vous permettre d'utiliser les améliorations de productivité comme la saisie semi-automatique et Intellisense lorsque vous rédigez votre code. Grâce au modèle d'extensibilité d'Azure Functions, vous pouvez également utiliser vos propres liaisons avec votre fonction et vous connecter à d'autres flux de données comme Kafka ou SignalR.

Exemple de déclencheur de file d'attente Azure Functions

Développement plus facile

En tant que développeur Python, vous pouvez utiliser vos outils préférés pour développer vos fonctions. Les outils Azure Functions Core Tools vous permettront de commencer à utiliser des modèles basés sur des déclencheurs, de les exécuter localement pour les tester sur des événements en temps réel provenant de sources du cloud, et de les publier directement dans Azure, tout en appelant automatiquement une dépendance côté serveur au moment du déploiement. Les outils Core Tools peuvent être utilisés en conjonction avec l'environnement de développement intégré ou l'éditeur de texte de votre choix pour une meilleure expérience de création.

Vous pouvez également utiliser l'extension Azure Functions pour Visual Studio Code afin de bénéficier d'une expérience d'édition parfaitement intégrée qui vous permettra de créer une application, d'y ajouter des fonctions et de la déployer en quelques minutes. L'expérience de débogage en un clic vous permet de tester vos fonctions localement, de définir des points d'arrêt dans votre code et d'évaluer la pile des appels d'une simple pression de la touche F5. Combinez cette expérience à l'extension Python pour Visual Studio Code et vous bénéficierez d'une expérience de développement Python améliorée avec saisie semi-automatique, Intellisense, « linting » et débogage.

Azure Functions - Développement Visual Studio Code

Pour une expérience complète de livraison continue, vous pouvez désormais tirer parti de l'intégration à Azure Pipelines, l'un des services d'Azure DevOps, via une tâche optimisée pour Azure Functions afin de créer les dépendances de votre application et de les publier dans le cloud. Le pipeline peut être configuré à l'aide d'un modèle Azure DevOps ou via l'interface de ligne de commande Azure (CLI).

L'observabilité et la surveillance avancées via Azure Application Insights sont également disponibles pour les fonctions écrites en Python, ce qui vous permet de surveiller vos applications à l'aide du flux de métriques en temps réel, de collecter des données, d'interroger les journaux d'exécution et d'afficher les traces réparties sur différents services Azure.

Hébergez vos applications Python avec Azure Functions

Hébergez vos applications Python en utilisant l'un des plans Azure Functions suivants : plan Consommation ou plan Premium sous Linux.

Le plan Consommation est désormais généralement disponible pour l'hébergement Linux et prêt pour les charges de travail de production. Ce plan serverless fournit une échelle dynamique basée sur les événements, et vous ne payez les ressources de calcul que lorsque vos fonctions sont exécutées. Dorénavant, notre plan Linux prend également en charge les identités managées, ce qui permet à votre application de bien fonctionner avec des ressources Azure telles qu'Azure Key Vault, sans nécessiter de secrets supplémentaires.

Azure Functions - Consommation Linux - Identités managées

Le plan Consommation pour hébergement Linux inclut également une préversion des builds distants intégrés afin de simplifier la gestion des dépendances. Cette nouvelle fonctionnalité, disponible en option lors de la publication via Azure Functions Core Tools, vous permet de créer dans le cloud à partir de l'environnement utilisé pour héberger vos applications par opposition à une configuration de votre environnement de build local en conformité avec l'hébergement Azure Functions.

Build distant Python avec Azure Functions

Les charges de travail qui nécessitent des fonctionnalités avancées, comme du matériel plus puissant, la possibilité de garder les instances indéfiniment au chaud et la connectivité réseau virtuelle, peuvent bénéficier du plan Premium avec hébergement Linux désormais disponible en préversion.

Plan Premium Azure Functions - Intégration de réseau virtuel

Avec le plan Premium pour hébergement Linux, vous pouvez choisir d'intégrer uniquement votre code d'application ou d'intégrer une image Docker personnalisée pour encapsuler toutes vos dépendances, y compris le runtime Azure Functions, comme décrit dans la documentation « Créer une fonction sous Linux à l'aide d'une image personnalisée ». Les deux options permettent d'effectuer une mise à l'échelle dynamique basée sur les événements et d'éviter un démarrage à froid.

Hébergement avec plan Premium Azure Functions pour code ou conteneurs

Prochaines étapes

Voici quelques ressources que vous pouvez commencer à utiliser dès aujourd'hui pour créer vos applications Python dans Azure Functions :

L'équipe Azure Functions s'engage à fournir une expérience serverless homogène et productive pour le développement et l'hébergement d'applications Python. Compte tenu du grand nombre de publications actuelles et à venir, nous vous encourageons vivement à nous faire part de vos commentaires et à nous présenter vos scénarios. Vous pouvez rejoindre l’équipe sur Twitter et sur GitHub. En outre, nous sommes très actifs sur StackOverflow et UserVoice. N'hésitez donc pas à poser des questions ou à formuler des suggestions. Nous espérons recevoir bientôt de vos nouvelles.