Fonctionnement d'OCI Functions

Découvrez le fonctionnement d'OCI Functions lors du déploiement et de l'appel d'une fonction.

Que se passe-t-il lors du déploiement d'une fonction vers OCI Functions ?

Une fois que vous avez écrit le code pour une fonction et qu'elle est prête à être déployée, vous pouvez utiliser une commande unique de l'interface de ligne de commande du projet Fn pour exécuter toutes les opérations de déploiement dans l'ordre suivant :

  • Création d'une image Docker à partir de la fonction
  • Définition de la fonction dans un fichier func.yaml comprenant :
    • durée maximale d'exécution de la fonction,
    • quantité maximale de mémoire que la fonction est autorisée à utiliser.
  • Propagation de l'image vers le registre Docker indiqué
  • Téléchargement des métadonnées de la fonction (notamment les restrictions de mémoire et de durée, ainsi qu'un lien vers l'image dans le registre Docker) vers le serveur Fn
  • Ajout de la fonction à la liste des fonctions affichées dans la console

Ce processus de déploiement d'une fonction vers OCI Functions est présenté dans le diagramme suivant.

Cette image montre le processus : création d'une image Docker à partir d'une fonction, propagation de l'image vers un registre Docker, création d'un fichier func.yaml, téléchargement de la définition de la fonction vers le serveur Fn et affichage de la fonction dans la console.

Une fois l'image téléchargée vers le registre Docker, vous êtes responsable de la mise à jour de l'image. Par exemple, lorsque de nouvelles versions linguistiques sont prises en charge (pour plus d'informations, reportez-vous à Kits de développement de fonctions (FDK)).

Que se passe-t-il lorsque vous appelez une fonction ?

Vous pouvez appeler une fonction que vous avez déployée vers OCI Functions à partir :

  • de l'interface de ligne de commande du projet Fn,
  • des kits SDK d'Oracle Cloud Infrastructure,
  • des demandes HTTP signées vers l'adresse d'appel de la fonction. Chaque fonction possède une adresse d'appel.
  • Les autres services Oracle Cloud (par exemple, avec déclenchement par un événement dans le service Events) ou des services externes.

Lorsqu'une fonction est appelée pour la première fois, OCI Functions commence par vérifier la demande auprès du service IAM. Si la demande réussit les vérifications d'authentification et d'autorisation, OCI Functions la transmet au serveur Fn, qui utilise la définition de fonction pour :

  • identifier l'image Docker de la fonction à extraire du registre Docker,
  • exécuter la fonction en exécutant l'image de la fonction en tant que conteneur sur une instance d'un sous-réseau associé à l'application à laquelle la fonction appartient.

Lorsque la fonction est exécutée dans le conteneur, elle peut lire et écrire sur les autres ressources et services exécutés dans le même sous-réseau (par exemple, Database-as a-Service). La fonction peut également lire et écrire sur d'autres ressources partagées (par exemple, Object Storage), ainsi que d'autres services Oracle Cloud. Vous pouvez indiquer la durée maximale pendant laquelle la fonction peut être exécutée en définissant un délai d'expiration dans le fichier func.yaml ou dans la console.

OCI Functions stocke les journaux de la fonction dans Oracle Cloud Infrastructure ou dans une destination de journalisation externe.

Lorsque l'exécution de la fonction est terminée et après une période d'inactivité, le conteneur Docker est enlevé. Si OCI Functions reçoit un autre appel vers la même fonction avant la suppression du conteneur, la seconde demande est routée vers le même conteneur en cours d'exécution. Si OCI Functions reçoit un appel vers une fonction en cours d'exécution dans un conteneur en cours d'exécution, OCI Functions est redimensionné de manière horizontale pour répondre aux deux demandes entrantes et un second conteneur Docker est démarré.

OCI Functions affiche les informations des appels de fonction dans des graphiques de mesure.

Ce processus d'appel d'une fonction est présenté dans le diagramme suivant.

Cette image montre comment les fonctions déployées vers le serveur Fn interagissent avec d'autres services Oracle Cloud Infrastructure (IAM, Object Storage, DBaaS), outils (console OCI, interface de ligne de commande du projet Fn) et services externes (IaaS, PaaS, SaaS). Une fonction est présentée comme déployée en tant que conteneur vers une instance dans un sous-réseau au sein d'un réseau cloud virtuel.