Déployer une application sans serveur déclenchée par des événements

Oracle Functions est une plate-forme entièrement gérée, sans serveur et évolutive conçue sur Oracle Cloud Infrastructure et optimisée par le moteur open source du projet Fn. Les développeurs peuvent l’utiliser pour écrire et déployer du code qui apporte une valeur commerciale sans se soucier du provisionnement ou de la gestion de l’infrastructure sous-jacente. Oracle Functions est natif des conteneurs avec des fonctions packagées en tant qu'images de conteneur Docker.

Architecture

Cette architecture de référence appelle Oracle Functions avec le service Oracle Cloud Infrastructure Events, qui répond automatiquement aux modifications apportées à Oracle Cloud Infrastructure Object Storage. Le téléchargement d'une image échantillon vers Object Storage déclenche le service Events, qui à son tour appelle Oracle Functions. Le projet Fn prend en charge la plupart des langages de programmation. Cette architecture utilise Java dans la fonction pour extraire les métadonnées de l'image téléchargée et les stocker dans Oracle Cloud Infrastructure Object Storage.

Le diagramme suivant illustre cette architecture de référence.

Description de l'image serverless-oci.png
Description de l'illustration serverless-oci.png

serverless-oci-oracle.zip

L'architecture Oracle Functions comprend les composants suivants :

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient des centres de données, appelés domaines de disponibilité. Les régions sont indépendantes d'autres régions et de grandes distances peuvent les séparer (entre les pays voire les continents).

  • Domaines de disponibilité

    Les domaines de disponibilité sont des centres de données autonomes et indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui assure la tolérance de pannes. Les domaines de disponibilité ne partagent pas d'infrastructure telle que l'alimentation ou le refroidissement ou le réseau interne du domaine de disponibilité. Par conséquent, il est improbable qu'un problème affecte les autres domaines de disponibilité de la région.

  • Réseau cloud virtuel (VCN) et sous-réseaux

    Un VCN est un réseau personnalisable et défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux cloud virtuels traditionnels, vous bénéficiez d'un contrôle total sur votre environnement réseau. Un VCN peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, qui peuvent être ciblés vers une région ou un domaine de disponibilité. Chaque sous-réseau se compose d'une plage contiguë d'adresses qui ne chevauchent pas les autres sous-réseaux du VCN. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.

    La fonction de cette architecture de référence est déployée dans un sous-réseau public régional.

  • Oracle Functions

    Oracle Functions vous permet de déployer votre code, de l'appeler directement ou de le déclencher en réponse à des événements. Oracle Functions est déclenché lorsque le service d'événements l'appelle, traite l'image et stocke les métadonnées dans Object Storage. Oracle Functions utilise des conteneurs Docker hébergés sur Oracle Cloud Infrastructure Registry.

  • Evénements

    Les services Oracle Cloud Infrastructure émettent des événements, qui sont des messages structurés indiquant des modifications dans les ressources. Les événements incluent les opérations de création, de lecture, de mise à jour ou de suppression (CRUD), les modifications de l'état du cycle de vie des ressources et les événements système ayant un impact sur une ressource. Il est possible d'émettre un événement au terme ou à l'échec d'une sauvegarde, ou lors de l'ajout, de la mise à jour ou de la suppression d'un fichier dans un bucket Object Storage.

  • Stockage d'objet

    Oracle Cloud Infrastructure Object Storage est une plate-forme de stockage hautes performances, basée sur Internet, qui offre une durabilité fiable et rentable en matière de données. Object Storage peut stocker une quantité illimitée de données non structurées de tout type de contenu, y compris des données analytiques et du contenu enrichi, comme des images et des vidéos. Deux niveaux de stockage distincts répondent au besoin d'un stockage (Standard) fréquemment utilisé et d'un stockage (Archive) moins fréquemment utilisé. Le stockage d'objets standard est destiné aux données auxquelles vous devez accéder rapidement, immédiatement et fréquemment. Archive Storage est destiné aux données que vous devez rarement accéder, mais qui doivent être conservées pendant longtemps.

Recommandations

Vos besoins peuvent être différents de ceux de l'architecture décrite ici. Utilisez les recommandations suivantes comme point de départ.

  • VCN

    Lorsque vous créez un VCN, déterminez le nombre de blocs CIDR requis et la taille de chaque bloc en fonction du nombre de ressources que vous prévoyez d'attacher aux sous-réseaux du VCN. Utilisez des blocs CIDR compris dans l'espace d'adresse IP privée standard.

    Une fois que vous avez créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.

    Cette architecture utilise un VCN public pour déployer la fonction. La fonction est hébergée sur un sous-réseau public régional dans le VCN. Vous pouvez également utiliser un VCN privé. Dans ce cas, vous devez utiliser une passerelle NAT pour accéder à Internet.

  • Oracle Functions

    Dans cette architecture, la programmation Java a été utilisée pour développer les fonctions. Comme le projet Fn prend en charge plusieurs langages de programmation, vous pouvez utiliser le langage de votre choix pour développer les fonctions et les déployer.

  • Stockage d'objet

    Cette architecture utilise Standard Object Storage pour télécharger une image et la stocker, afin que le service Events puisse la récupérer lors de la création de l'objet. Object Storage stocke les métadonnées relatives à l'objet après les processus Functions.

  • Evénements

    Dans cette architecture, le service Oracle Cloud Infrastructure Events est configuré pour écouter les modifications apportées à la création d'Object Storage. Le service est appelé une fois l'objet téléchargé vers Object Storage et appelle la fonction pour traitement.

Remarques

  • Disponibilité

    Le service Evénements n'est pas disponible dans les régions du domaine Government Cloud.

  • Gestion

    Cette architecture utilise un exemple d'application Java pour écrire les fonctions. Toutefois, vous pouvez utiliser le langage de programmation de votre choix.

  • Sécurité

    Utilisez des stratégies pour limiter les personnes autorisées à accéder aux ressources Oracle Cloud Infrastructure de votre entreprise et leur mode d'accès.

    Pour Object Storage, le cryptage est activé par défaut et ne peut pas être désactivé.

    Tous les accès aux fonctions déployées dans Oracle Functions sont contrôlés via Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM permet d'affecter des privilèges de gestion des fonctions et d'appel de fonction à des utilisateurs et groupes d'utilisateurs spécifiques.

  • Coût

    Vous payez uniquement les ressources utilisées pendant l'exécution d'une fonction.

déploiement

Le code Terraform de cette architecture de référence est disponible dans GitHub. Vous pouvez extraire le code dans Oracle Cloud Infrastructure Resource Manager en un seul clic, créer la pile et la déployer. Vous pouvez également télécharger le code de GitHub sur votre ordinateur, le personnaliser et déployer l'architecture à l'aide de l'interface de ligne de commande (CLI) de Terraform.

  • Déployer à l'aide d'Oracle Cloud Infrastructure Resource Manager :
    1. Cliquez sur Déploiement sur Oracle Cloud.

      Si vous n'êtes pas déjà connecté, entrez les informations d'identification de la location et de l'utilisateur.

    2. Consulter et accepter les conditions générales.
    3. Sélectionnez la région de déploiement de la pile.
    4. Suivez les invites affichées à l'écran et les instructions pour créer la pile.
    5. Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Plan.
    6. Attendez la fin du travail, puis passez en revue le plan.

      Pour apporter des modifications, revenez à la page Détails de la pile, cliquez sur Modifier la pile et apportez les modifications requises. Exécutez ensuite à nouveau l'action Plan.

    7. Si aucune autre modification n'est nécessaire, revenez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
  • Effectuez un déploiement en utilisant le code Terraform dans GitHub :
    1. Accédez à GitHub.
    2. Clonez ou téléchargez le référentiel sur votre ordinateur local.
    3. Suivez les instructions du document README.

Journal des modifications

Ce journal répertorie uniquement les modifications importantes :