web-dev-qa-db-fra.com

Quel est l'équivalent Azure d'AWS Lambda?

Pour le moment, nous exécutons notre application sur un AWS Beanstalk, mais essayons de déterminer la pertinence d'Azure.

Notre plus gros problème est la quantité de temps processeur perdu que nous payons mais n'utilisons pas. Nous fonctionnons sur des instances t2.small car celles-ci ont la quantité minimale de RAM dont nous avons besoin mais nous n'utilisons jamais même la quantité de base de temps CPU allouée. (20% pour un t2.small) Nous avons besoin de beaucoup de puissance CPU pendant les courtes rafales de la journée et mettre en ligne plus d'instances à l'avance est le seul moyen de le gérer. AWS Lambda semble être une bonne solution pour nous, mais nous avons des dépendances sur les composants Windows comme SAPI, nous devons donc exécuter à l'intérieur des machines virtuelles Windows.

En regardant les services cloud Azure, nous pensions que l'utilisation d'un rôle Web conviendrait le mieux à notre application, mais il semble qu'un rôle Web ne soit rien de plus qu'un Win 2012 VM avec IIS activé. Donc, à mesure que l'application évolue, elle apporte simplement plus de ces machines virtuelles, ce qui est exactement ce que nous avons en ce moment. Azure a-t-il un service similaire à Lambda où vous ne payez que le temps de traitement CPU que vous utilisez? La raison de notre utilisation inefficace des ressources CPU est que notre application de génération de parole utilise la perte de voix tierces mais ne peut s'exécuter qu'en mode thread unique lors de l'appel dans SAPI car le moteur vocal est susceptible de se bloquer lors du multithreading. Nous n'avons aucun contrôle sur ce moteur vocal. Il doit avoir accès à un registre système et à Windows SAPI, la solution idéale consiste donc à envelopper toutes les dépendances est un package et à le déployer sur Azure, puis à lancer plusieurs instances de celui-ci. Qu'est-ce que "c'est", je n'ai aucune idée

20
MayoMan

Microsoft vient d'annoncer un nouveau service de calcul sans serveur comme alternative à AWS Lambda, appelé Azure Functions: https://Azure.Microsoft.com/en-us/services/functions/

http://www.zdnet.com/article/Microsoft-releases-preview-of-new-Azure-serverless-compute-service-to-take-on-aws-lambda/

Avec Azure Functions, vous ne payez que ce que vous utilisez avec un calcul mesuré à 100 ms près au prix par Go en fonction du temps d'exécution de votre fonction et de la taille de la mémoire de l'espace de fonction que vous choisissez. La taille de l'espace de fonction peut varier de 128 Mo à 1536 Mo. Avec le premier 400k Go/sec gratuit.

Les demandes de fonction Azure sont facturées par million de demandes, le premier million de demandes étant gratuit.

33
Erik Oppedijk

Sur la base de la documentation sur le site Web Azure ici: https://Azure.Microsoft.com/en-in/campaigns/Azure-vs-aws/mapping/ , les services équivalents à AWS Lambda sont - Web Jobs et Logic Apps .

5
Gaurav Mantri

L'équivalent le plus direct de Lambda sur Azure est Azure Automation qui fait beaucoup de ce que fait Lambda sauf qu'il exécute Powershell au lieu de Node etc. Ce n'est pas aussi étroitement intégré à d'autres services comme Lambda, mais il a le même modèle, c'est-à-dire que vous écrivez un script et qu'il est exécuté à la demande.

Je suppose que SAPI fait référence à l'API vocale? Si c'est le cas, vous pouvez créer des modules Powershell pour Azure et ils peuvent inclure des fichiers dll. Dans ce cas, vous pouvez créer un module pour envelopper la DLL SAPI, et qui devrait faire ce que vous recherchez.

Si vous voulez un environnement de calcul complet, sans la complexité de plusieurs machines lorsque vous exécutez. Vous pouvez utiliser Azure Batch qui serait la méthode recommandée par Azure pour exécuter ce que vous recherchez.

L'avantage de coût que vous devez évaluer serait la rapidité d'exécution de votre solution par rapport à une pile .net native (en lot) et si les performances sont considérablement dégradées lors de l'exécution à partir de Powershell.

Personnellement, je voudrais essayer l'automatisation, c'est étonnamment puissant.

2
Michael B