3 votes

Spring est-il compatible avec l'informatique sans serveur ?

J'ai vu ce message ici : https://dzone.com/articles/making-spring-boot-application-run-serverless-with qui donne un exemple de la façon d'utiliser Spring dans un scénario Serverless, mais je pense que cela implique toujours la création du contexte Spring, une chose coûteuse à faire à chaque fois qu'une requête arrive. Et je me demande si Spring, mais aussi les frameworks d'application web traditionnels sont vraiment compatibles avec le modèle sans serveur, car ils ont tous tendance à supposer que le serveur ne va s'initialiser qu'au démarrage, puis plus jusqu'à ce que le serveur soit redémarré, par opposition à être immédiatement prêt à traiter une demande et ne pas avoir besoin d'initialiser un contexte Spring par exemple. Ainsi, ces frameworks ont tendance à faire beaucoup de choses dans la phase de démarrage, ce qui n'est pas bon, je crois, lorsque vous n'avez pas de serveur et que vous devez effectivement démarrer à chaque fois que vous appelez ce qui serait un lambda dans AWS.

Ma question est donc la suivante : ces cadres web traditionnels, tels que Spring, qui effectuent beaucoup de calculs au démarrage, sont-ils encore applicables dans le modèle Serverless, par exemple : AWS lambda.

2voto

Victor Points 1113

Il existe des sous-projets de Spring qui tentent de gérer ce scénario, comme Spring Cloud Function : https://spring.io/blog/2017/07/05/introducing-spring-cloud-function

The deployment profiles even extend into the realm of Serverless (a.k.a. Functions-as-a-Service) providers, such as AWS Lambda and Apache OpenWhisk (as well as Azure Functions and Google Cloud Functions once they provide support for Java)

Cependant, l'initialisation du contexte est toujours nécessaire, donc je suppose qu'il appartient au développeur de la rendre aussi petite que possible pour garantir un démarrage rapide.

EDIT : Aujourd'hui, j'ai assisté à une conférence donnée par Dave Syer à la conférence Spring I/O, et il a présenté quelques solutions pour rendre Spring Boot plus adapté à l'informatique sans serrure :

2voto

matsev Points 6761

Spring peut en effet être utilisé avec le modèle Serverless, mais comme vous le suggérez, il ne convient pas à tous les cas d'utilisation.

Pour les raisons que vous mentionnez (temps de démarrage relativement long pour une Lambda "froide"), je déconseille l'utilisation de Spring lors de la mise en œuvre d'une application Web déployée vers une fonction AWS Lambda derrière une passerelle API, car les temps de réponse en pâtiront.

Cependant, il existe des scénarios dans lesquels le long temps de démarrage de l'implémentation d'un gestionnaire de fonction basé sur la JVM dans une fonction AWS Lambda froide est moins un casse-tête et où vous pouvez envisager cette option. Par exemple, en tant que consommateur d'un flux Kinesis. Le démarrage à froid sera toujours aussi mauvais que dans le cas précédent, mais si vous avez un flux régulier d'événements, le démarrage à froid ne se produira qu'une fois par shard. Une autre différence est que lorsque vous utilisez Kinesis, vous avez déjà choisi un flux d'application asynchrone. En d'autres termes, le producteur d'événements peut poursuivre son travail dès que l'événement a été placé sur le flux sans attendre que l'événement soit traité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X