5
votes

Instances de conteneur Azure et fonctions Azure

Quand est-ce que je préférerais Azure Functions aux Azure Container Instances, étant donné qu'ils offrent tous deux la possibilité d'effectuer des tâches à exécution unique et facturent à la consommation?

En outre, lisez ce module Microsoft Learn :

Le calcul sans serveur peut être considéré comme une fonction en tant que service (FaaS), ou un microservice hébergé sur une plate-forme cloud.


0 commentaires

3 Réponses :


3
votes

Azure Functions est une plateforme qui vous permet d'exécuter du code brut (au lieu de conteneurs). La force d'Azure Functions réside dans le riche ensemble de liaisons ( liaisons d' entrée et de sortie) qu'il prend en charge. Si vous souhaitez exécuter un morceau de code lorsque quelque chose se produit (par exemple, un objet blob a été ajouté à un compte de stockage, une minuterie se déclenche, ....) alors j'irais certainement avec Azure Functions.

Si vous souhaitez exécuter une charge de travail basée sur un conteneur pendant une courte période et que vous n'avez pas d'orchestrateur (comme Azure Kubernetes Services) en place, Azure Container Instances est logique.


3 commentaires

Ajout à cela: lorsque vous utilisez AKS, ACI vous permet de faire une rafale élastique à l'aide d'un nœud virtuel


Vous pouvez également utiliser à la fois Azure Functions comme déclencheur et appeler le conteneur ACI pour le traitement


Un autre point que j'ai rencontré pourrait être que Azure Functions a un délai d'expiration par défaut de 5 minutes qui peut atteindre 10 minutes. Pour quelque chose qui dure plus de 10 minutes, les conteneurs peuvent être une alternative?



2
votes

Si vous souhaitez simplifier le modèle de développement d'applications où votre architecture d'application comporte des microservices plus granulaires, de sorte que diverses fonctionnalités sont généralement réduites à une seule fonction, les fonctions Azure peuvent être prises en compte pour l'utilisation.

Dans le cas où la solution nécessite une extension de l'application Azure existante avec des cas d'utilisation basés sur des déclencheurs d'événements, les fonctions azure peuvent être un meilleur choix. Ici, le code spécifique (fonction) doit être invoqué uniquement pour un événement ou un déclencheur spécifique selon l'exigence et les instances de fonction sont créées et détruites à la demande (calcul à la demande - fonction en tant que service (FaaS)).

Le plus souvent, l'architecture basée sur les événements est vue dans l'IoT, où vous pouvez généralement définir un déclencheur spécifique qui provoque l'exécution de la fonction Azure. En conséquence, les fonctions Azure ont également leur place dans l'écosystème IoT.

Si la solution nécessite une mise à l'échelle et une mise à l'échelle rapides, des instances de conteneur peuvent être utilisées, tandis que si l'exigence est une mise à l'échelle prévisible, des machines virtuelles peuvent être utilisées.

La fonction Azure évite l'allocation de ressources supplémentaires (VM) et le coût n'est également pris en compte que lorsque la fonction traite le travail. Ici, nous n'avons pas besoin de nous occuper de l'infrastructure telle que l'endroit où le code va s'exécuter, la configuration du serveur, la mémoire, etc. Pour ACI, le coût est par seconde où il est comptabilisé en fonction du temps d'exécution du conteneur - CaaS (Container As Un service).

ACI permet de générer rapidement un conteneur pour effectuer l'opération et de le supprimer lorsqu'il est effectué lorsque le coût n'est que pour quelques heures d'utilisation plutôt qu'une VM dédiée qui serait d'un coût élevé. ACI permet d'exécuter un conteneur en évitant de dépendre des orchestrateurs comme Kubernetes dans des scénarios où nous n'aurions pas besoin de fonctions d'orchestration telles que la découverte de services, les fonctionnalités de maillage et de coordination.

La principale différence est que, dans le cas de la fonction Azure, la fonction est l'unité de travail tandis que dans l'instance de conteneur, le conteneur entier contient l'unité de travail. Ainsi, les fonctions Azure démarrent et se terminent en fonction des déclencheurs d'événements, tandis que les microservices dans les conteneurs doivent être exécutés tout le temps.

Le temps de traitement / d'exécution joue également un rôle critique où si la fonction de gestionnaire d'événements consomme un temps de traitement de 10 minutes ou plus pour s'exécuter, il est préférable de l'héberger dans la machine virtuelle car le délai maximal configurable pour les fonctions est de 10 minutes.

Il existe des solutions typiques qui utilisent à la fois les fonctionnalités telles que la fonction Azure doit être déclenchée pour un traitement / prise de décision minimal et un retour peut invoquer une instance de conteneur pour un traitement de rafale spécifique / un traitement complet.

En outre, ACI et AKS forment un modèle de déploiement puissant pour les microservices où AKS peut être utilisé pour le déploiement typique de microservices et ACI pour gérer les charges de travail en rafale, réduisant ainsi les défis de gestion de la mise à l'échelle et garantissant une utilisation efficace du modèle de coût d'utilisation par seconde.


0 commentaires