Charges de travail de fonction

Une fonction est un extrait de code sans état qui exécute des tâches lorsqu'elle est appelée par des requêtes « HTTP ». Grâce aux fonctions « IBM » Code Engine, vous pouvez exécuter votre logique métier de manière évolutive et sans serveur. IBM Code Engine Ces fonctions offrent un environnement d'exécution optimisé pour prendre en charge les scénarios nécessitant une faible latence et une évolutivité horizontale rapide. Le code de votre fonction peut être écrit dans un environnement d'exécution géré qui inclut des versions spécifiques d' Node.js ou d' Python.

Un bundle de code est une collection de fichiers qui représente votre code de fonction. Ce bundle de code est injecté dans le conteneur d'exécution. Votre bundle de code est créé par Code Engine et est stocké dans le registre de conteneur ou en ligne avec la fonction. Un bundle de code n'est pas une image de conteneur standard OCI (Open Container Initiative).

Cycle de vie d'une instance de fonction

Lorsqu'une fonction est appelée (démarrée), l'instance de fonction correspondante est initialisée avec les paramètres de conteneur Runtime et de ressource configurés. Le processus de la première initialisation est appelé démarrage à froid.

Pour réduire le temps d'attente de démarrage à froid, Code Engine optimise l'appel en préchauffant certains environnements d'exécution avec des configurations d'UC et de mémoire spécifiques. Les combinaisons préchauffées pour les fonctions comprennent les durées d'exécution Node.js et Python ainsi que la combinaison par défaut de CPU et de mémoire pour les fonctions, à savoir 0.25 vCPU x 1 Go de mémoire. En outre, le système est conçu pour améliorer la réutilisation des instances de fonction qui sont déjà initialisées. Par conséquent, une instance de fonction est maintenue active une fois l'appel terminé pour permettre les appels suivants en réutilisant la même instance et en réutilisant l'état de l'instance à la fin du dernier appel. La réutilisation d'une instance de fonction n'est pas garantie.

Quelles sont les principales caractéristiques de l'utilisation des fonctions?

Consultez les rubriques suivantes pour en savoir plus sur l'utilisation des fonctions IBM Code Engine.

Isolement

Code Engine est un service régional à service partagé dans lequel les titulaires partagent le même réseau et la même infrastructure de calcul. Le réseau et l'infrastructure de calcul sont des ressources partagées et certains composants de gestion sont utilisés conjointement par tous les titulaires. Toutefois, les locataires et leurs charges de travail sont isolés les uns des autres à l'aide de projets Code Engine. Code Engine empêche la communication entre les projets, en fournissant un isolement à vos applications dans un environnement à service partagé, qui peut inclure des applications, des travaux par lots et des fonctions. En outre, des contrôles d'accès sont effectués au niveau d'une ressource pour permettre uniquement aux utilisateurs autorisés d'effectuer certaines opérations sur des ressources de projet, telles que des fonctions ou d'autres charges de travail Code Engine.

Pour plus d'informations sur l'isolement des charges de travail, voir Isolement des charges de travailCode Engine.

Journalisation

Le code d'une fonction peut écrire des journaux 'stdout et 'stderr qui sont capturés et transmis à une instance IBM Cloud Logs. IBM Cloud Logs est une instance de journalisation Platform que vous pouvez configurer pour indexer vos journaux. Pour plus d'informations, voir Affichage des journaux.

Environnements d'exécution

Code Engine inclut des environnements d'exécution gérés que vous pouvez utiliser pour vos fonctions.

Les environnements d'exécution gérés incluent les versions Node.js et Python et des combinaisons d'UC et de mémoire spécifiques. Ces environnements d'exécution sont optimisés pour un démarrage rapide. Ces environnements d'exécution sont préchauffés, ce qui évite la surcharge liée à l'extraction d'images de conteneur et au démarrage de conteneurs et de processus. Votre code est injecté dans un conteneur déjà en cours d'exécution.

Pour plus d'informations, voir Environnements d'exécution.

Exécution de fonctions

Que votre code se présente sous forme de code source dans un fichier local ou dans un référentiel Git, ou qu'il s'agisse d'une image de conteneur hébergée dans un registre public ou privé, Code Engine vous offre un moyen simplifié d'exécuter votre code en tant que fonction.

Vous pouvez créer et appeler votre fonction dans Code Engine de l'une des manières suivantes:

  • Exécuter à partir d'un bundle de code existant.

  • Exécuter à partir d'un code source existant. Si vous commencez avec le code source qui se trouve dans un référentiel Git ou sur votre poste de travail local, vous pouvez pointer vers l'emplacement de votre source et Code Engine s'occupe de la génération de l'image pour vous.

Pour plus d'informations sur la création et l'appel de fonctions, voir Utilisation de fonctions dans Code Engine.

Sécurité

Code Engine offre une protection DDOS immédiate pour votre fonction. La protection DDOS de Code Engine est assurée par Cloud Internet Services (CIS), sans frais supplémentaires pour vous. DDoS La protection couvre les attaques protocolaires visant les couches 3 et 4 du modèle OSI ( TCP/IP ), mais pas celles visant la couche 7 ( HTTP ). Voir « Protection contre l' DDoS ».

Code Engine fournit également un service mesh permettant d'utiliser sa couche réseau, ce qui facilite le trafic mutuel sécurisé via le protocole Transport Layer Security ( TLS ) entre les fonctions, garantissant ainsi la sécurité des communications de service à service et d'utilisateur à service.

Pour plus d'informations sur la sécurité, voir Code Engine et la sécurité.

Accès concurrent aux appels et mise à l'échelle des instances de fonction

Lorsque plusieurs fonctions sont appelées en même temps, Code Engine initialise de nouvelles instances de fonction pour chaque appel, mais tente en même temps d'optimiser la réutilisation. Un seul appel de fonction est géré par une instance de fonction à un moment donné. Pour Node.js, la fonction peut être configurée avec concurrency > 0 pour permettre le traitement de plusieurs appels dans une seule instance de fonction.

Conditionnement de votre code source pour une fonction

Les fonctions peuvent être conditionnées de trois manières différentes.

  • en tant que fichier unique
  • en tant que fichiers multiples (avec une structure de dossiers et des modules dépendants)
  • en tant qu'image de conteneur

Comment puis-je commencer à utiliser des fonctions?

Pour déployer une application Code Engine simple avec un exemple d'image hello-world, voir le tutoriel Exécution d' IBM Code Engine Functions.

Pour plus d'informations sur l'utilisation des fonctions, voir Utilisation des fonctions dans Code Engine.