Guy Dumais

Anatomie d'une fonction Google Cloud [Infographie]

Guy Dumais
Guy Dumais
 •  • 
Cover Image for Anatomie d'une fonction Google Cloud [Infographie]

Une infographie sur le squelette d'une fonction Google Cloud, l'un des nombreux sous-produits de la famille Google Cloud Platform.

J'ai d'abord créé cette infographie pour mon apprentissage et ma compréhension personnels, mais j'ai pensé qu'elle pourrait être utile pour quiconque souhaite comprendre rapidement les fonctions Google Cloud.

En outre, les développeurs trouveront des exemples de code de base en Javascript pour créer une fonction Google Cloud Function (GCF) alimentée par Node.js et Express.js.

Anatomy of a Google Cloud function infographic

Qu'est-ce qu'une fonction cloud?

En bref, les fonctions Cloud, également appelées Function-as-a-Service (FAAS), sont des fonctions Web qui peuvent être appelées via des requêtes HTTP. Elles sont principalement utilisées pour automatiser les processus Internet. Par exemple, une fonction peut envoyer un message à un autre serveur ou système pour démarrer une tâche suite à une action d'un nouveau client sur le Web. Un autre cas d'utilisation pourrait être de créer une fonction de serveur d'authentification pour un site Web sans tête.

Bien sûr, nous pouvons accomplir le même type de tâches en utilisant les fonctions REST / API exécutées dans une application Web sur son propre serveur Web, mais la principale différence ici est qu'il n'y a pas de serveur Web à gérer puisque les fonctions sont alimentées par des instances de serveur App Engine ou Compute Engine. Cela en fait un service plus économique facturé à l'utilisation. Pour ma part, Compute Engine est plus économique qu'App Engine.

Les possibilités ne sont limitées que par l'imagination humaine. Dans mon cas, j'ai créé une fonction cloud pour permettre à Analytics d'enregistrer les visiteurs qui utilisent des bloqueurs de publicités dans leurs navigateurs. Je ne manque donc aucune visite à moins que l'utilisateur ne désactive complètement le Javascript qui est obligatoire de nos jours.

Une fonction Google Cloud peut être une fonction HTTP ou une fonction d'arrière-plan, ce qui sera expliqué un peu plus en détail plus bas.

V8

Les fonctions Google Cloud reposent sur une solide infrastructure logicielle propulsée par le moteur Google V8. Bref, V8 permet d'interpréter du code JavaScript (ECMAScript) sur n'importe quel serveur (Windows, Mac, Linux, etc.). Google a développé ce moteur en 2008 en même temps que Google Chrome pour permettre à Chrome de fonctionner sur différentes plateformes (Android, Windows, Mac).

Le moteur d'exécution V8 fournit des règles sur l'accès à la mémoire, la façon dont le programme peut interagir avec le système d'exploitation de l'ordinateur et la syntaxe du programme qui est légitime. Chaque navigateur Web dispose d'un environnement d'exécution JavaScript.

Node.js

Le deuxième composant logiciel d'une fonction Google Cloud est Node.js, un logiciel serveur asynchrone qui traite les requêtes HTTP en parallèle plutôt que de manière synchrone ou séquentielle comme un serveur Apache. C'est ce qui lui permet de traiter des milliers de requêtes HTTP en même temps et d'absorber facilement les pics de trafic Web sans surcharger le serveur. Pour réaliser cet exploit, Node.js utilise un principe de traitement des requêtes appelé Non-blocking I/O qui, en bref, permet au serveur de traiter d'autres requêtes web tout en étant occupé à effectuer des opérations lentes qui monopolisent le processeur. dans le cas d'une architecture synchrone.

Une fonction Google Cloud utilise la version 10 de Node.js qui est basée sur le langage ES6 et prend en charge certains éléments d'ES7, ESNext. Par exemple, voici le code ES6 pour Node.js pour exécuter un serveur Web qui répond aux requêtes HTTP sur le port 3000 d'un ordinateur local:

Loading...

Express

Le troisième composant logiciel d'une fonction Google Cloud est Express qui simplifie le codage des applications Web sous Node.js tout en respectant les bonnes pratiques de codage asynchrone. Pour créer le même serveur HTTP que dans l'exemple précédent sous Express, il vous suffit d'utiliser le code suivant:

Loading...

HTTP function

Avec une fonction Google Cloud, vous n'avez pas besoin de créer un serveur pour écouter les demandes. À la place, vous créez une fonction HTTP, le point d'entrée de la fonction cloud, écrite en Javascript avec la signature suivante:

Loading...

Ce code provient de ma fonction Google Analytics pour contourner les bloqueurs de publicités. Comme vous pouvez le voir, il n'y a pas de code pour exécuter un serveur mais à la place juste une signature de fonction exportée avec des paramètres Request et Response.

Cela signifie que la fonction est toujours prête et attend que les demandes arrivent et que tout ce que vous avez à faire est de les valider et de les traiter de la même manière que vous le feriez avec un serveur Node.js normal.

Fonction d'arrière-plan

Vous pouvez également utiliser des fonctions d'arrière-plan lorsque vous souhaitez que votre fonction Cloud soit invoquée indirectement en réponse à un événement, tel qu'un message sur un sujet Pub / Sub, une modification dans un bucket Cloud Storage ou un événement Firebase.

Dépendences

Vous pouvez également ajouter les mêmes modules externes disponibles sur NPM que vous utiliseriez dans une application Web Javascript en créant un fichier package.json. Par exemple, voici le fichier package.json que j'utilise pour ma fonction Google Analytics Cloud:

Loading...

Dans le code ci-dessus, j'ai ajouté le module node-fetch qui est installé automatiquement par Google à partir de NPM.

Conclusion

En espérant que cet article a été utile pour mieux comprendre ce que sont les fonctions Google Cloud et surtout qu'il vous a permis de mieux voir les possibilités d'élargir vos applications Web.

Je publierai un tutoriel complet sur la création d'une fonction Google Analytics pour enregistrer les visites de navigateurs utilisant des bloqueurs de publicité et un autre tutoriel sur un système d'authentification complet utilisant OAUTH 2 et MongoDB.

À bientôt !


Commentaires:

    Partagez:


    Autres articles