Implémenter des fonctions OCI pour mettre à jour une table Oracle NoSQL lors du téléchargement vers OCI Object Storage

L'architecture cloud native, orientée événements et sans serveur est une approche de la création et du déploiement d'applications qui exploite les ressources et services de cloud computing pour maximiser l'évolutivité, l'efficacité et la flexibilité.

Cette architecture de référence démontre l'intégration transparente d'Oracle Cloud Infrastructure Events et des fonctions OCI pour mettre à jour automatiquement les tables Oracle NoSQL Database Cloud Service (Oracle NoSQL) lorsque des objets sont créés ou modifiés dans des buckets OCI Object Storage. Il traite du scénario commun d'analyse et de mise à jour des données dans une table Oracle NoSQL chaque fois qu'un fichier est ajouté ou modifié dans un bucket OCI Object Storage.

OCI Events offre une solution fiable pour automatiser les tâches en fonction des changements d'état dans diverses ressources cloud. Il permet de créer des règles qui fournissent des événements à des services OCI spécifiques tels que OCI Streaming, OCI Functions (qui servent d'outil précieux pour le traitement des données d'événement et l'intégration à d'autres services OCI afin d'exécuter diverses actions) et OCI Notifications.

En outre, les fonctions OCI peuvent incorporer du code pour gérer les données traitées reçues à partir des événements OCI et adapter la mise à jour de table Oracle NoSQL en fonction des besoins métier spécifiques.

Cette architecture de référence offre une présentation complète de l'utilisation des fonctions OCI avec les événements OCI pour mettre à jour les tables Oracle NoSQL lorsque des objets sont créés ou modifiés dans des buckets OCI Object Storage.

Architecture

Cette architecture de référence explique comment utiliser les fonctions OCI et les événements OCI pour mettre à jour une table Oracle NoSQL chaque fois qu'un fichier est créé ou mis à jour dans OCI Object Storage.

Le diagramme d'architecture présente un flux de données commençant par le téléchargement du fichier vers un bucket OCI Object Storage désigné. Les déclencheurs de service d'événement sont configurés pour être activés en fonction des conditions de règle d'événement spécifiées. L'événement émis appelle à son tour une fonction capable d'extraire des données du fichier téléchargé, d'effectuer des traitements supplémentaires conformément aux exigences métier et, en fin de compte, de mettre à jour la table Oracle NoSQL avec les données traitées. Cette approche offre des avantages significatifs en tirant parti de l'architecture orientée événements et en facilitant le traitement des données en temps réel. Il s'avère inestimable lorsqu'il est nécessaire de prétraiter les données avant de mettre à jour la table cible et d'effectuer les contrôles d'intégrité nécessaires pour garantir l'intégrité des données.

Le cas d'emploi métier, où les données doivent être analysées et mises à jour dans une table Oracle NoSQL chaque fois qu'un fichier est créé ou mis à jour dans un bucket OCI Object Storage, peut être obtenu à l'aide de l'approche suivante :

  1. Configurez une règle d'événement dans OCI Events pour déclencher des fonctions OCI chaque fois qu'un objet est créé ou mis à jour dans le bucket OCI Object Storage.
  2. Créez une fonction qui reçoit l'événement déclenché par la règle d'événement. Cette fonction gère l'analyse et la mise à jour des données dans la table Oracle NoSQL.
  3. Au sein de la fonction, implémentez la logique nécessaire pour analyser les données de l'objet dans le bucket OCI Object Storage.
  4. Utilisez le kit SDK ou l'API OCI approprié pour interagir avec le service Oracle NoSQL et insérer ou mettre à jour des enregistrements dans la table Oracle NoSQL en fonction des données analysées.

En combinant les services OCI Events, OCI Functions et Oracle NoSQL, nous pouvons automatiser le processus d'analyse et de mise à jour des données dans la table Oracle NoSQL chaque fois qu'un fichier est créé ou mis à jour dans le bucket OCI Object Storage. Cette approche permet un traitement et une synchronisation des données efficaces et rationalisés entre OCI Object Storage et Oracle NoSQL.

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



object-storage-function-nosql-diagram-oracle.zip

Avant de commencer

  1. Configurez votre application de fonction et créez une table Oracle NoSQL à l'aide de la console OCI.
  2. Rassemblez ces valeurs requises pour configurer les variables d'environnement pour l'application de fonction.
    • ID utilisateur

      OCID de l'utilisateur avec lequel s'authentifier.

    • ID de location

      OCID de location. Peut être trouvé dans le profil utilisateur.

    • Empreinte

      Sera utilisé pour l'authentification auprès de l'API OCI.

    • Région

      Identificateur de la région dans laquelle créer les demandes.

    • Clé privée d'API

      Emplacement du fichier de clés privées d'API.

    • OCID du compartiment.

      OCID de compartiment dans lequel la table Oracle NoSQL est créée.

    • Table NoSQL

      Exemple de table de personnes. Créez-le avec les attributs suivants.

Clé primaire Nom de colonne Type Clé partagée Non NULL
Oui id INTEGER Oui Oui
Non nom STRING Non Non
Non âge INTEGER Non Non
Non genre STRING Non Non

L'architecture se compose des éléments suivants :

  • Location

    Une location est une partition sécurisée et isolée qu'Oracle configure dans Oracle Cloud lorsque vous êtes inscrit à Oracle Cloud Infrastructure. Vous pouvez créer, organiser et administrer vos ressources dans Oracle Cloud au sein de votre location. Une location est synonyme d'entreprise ou d'organisation. Généralement, une entreprise dispose d'une location unique et reflète sa structure organisationnelle dans cette location. Une location unique est généralement associée à un seul abonnement et un seul abonnement ne comporte généralement qu'une seule location.

  • 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 les unes des autres et de grandes distances peuvent les séparer (dans des pays voire des continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-région au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments pour organiser les ressources dans Oracle Cloud, contrôler l'accès aux ressources et définir des quotas d'utilisation. Pour contrôler l'accès aux ressources d'un compartiment donné, vous définissez des stratégies qui indiquent qui peut accéder aux ressources et les actions réalisables.

  • Domaines de disponibilité

    Les domaines de disponibilité sont des centres de données autonomes indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées de celles des autres, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent ni infrastructure (par exemple, alimentation, système de refroidissement), ni réseau de domaine de disponibilité interne. Ainsi, il est peu probable qu'un problème survenant dans un domaine de disponibilité affecte les autres domaines de disponibilité de la région.

  • Domaine de pannes

    Un domaine de pannes est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines de pannes avec une alimentation et un matériel indépendants. Lorsque vous distribuez des ressources sur plusieurs domaines de pannes, vos applications peuvent tolérer les pannes de serveur physique, de maintenance du système et d'alimentation au sein d'un domaine de pannes.

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

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

  • Liste de sécurité

    Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic qui doivent être autorisés vers et depuis le sous-réseau.

  • Passerelle de service

    La passerelle de service fournit l'accès d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic du VCN vers le service Oracle se déplace sur la structure réseau Oracle et ne traverse jamais Internet.

  • Stockage d'objets

    Object Storage fournit un accès rapide à de grandes quantités de données, structurées ou non, de n'importe quel type de contenu, y compris des sauvegardes de base de données, des données analytiques et du contenu enrichi tel que des images et des vidéos. Vous pouvez stocker les données, puis les extraire directement à partir d'Internet ou de la plate-forme cloud, et ce, en toute sécurité. Vous pouvez redimensionner le stockage de manière transparente sans dégradation des performances ni de la fiabilité des services. Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archive pour le stockage "à froid" que vous conservez pendant longtemps et auquel vous accédez rarement.

  • Evénements

    Les services Oracle Cloud Infrastructure émettent des événements, qui sont des messages structurés décrivant les modifications apportées dans les ressources. Les événements sont émis pour les opérations de création, de lecture, de mise à jour ou de suppression (CRUD), les modifications de l'état de cycle de vie des ressources et les événements système ayant une incidence sur les ressources cloud.

  • Fonctions

    Oracle Cloud Infrastructure Functions est une plate-forme Functions-as-a-Service (FaaS) entièrement gérée, colocative, hautement évolutive et à la demande. Il est optimisé par le moteur open source du projet Fn. Les fonctions vous permettent de déployer votre code, puis de l'appeler directement ou de le déclencher dans le cadre d'événements. Oracle Functions utilise des conteneurs Docker hébergés dans Oracle Cloud Infrastructure Registry.

  • Connexion
    Logging est un service hautement évolutif et entièrement géré qui permet d'accéder aux types de journal suivants à partir des ressources du cloud :
    • Journaux d'audit : journaux liés aux événements émis par le service Audit.
    • Journaux de service : journaux émis par des services individuels tels que API Gateway, Events, Functions, Load Balancing, Object Storage et les journaux de flux VCN.
    • Journaux personnalisés : journaux contenant des informations de diagnostic issues d'applications personnalisées, d'autres fournisseurs de cloud ou d'un environnement sur site.
  • Oracle NoSQL

    Oracle NoSQL Database Cloud Service est un service cloud de base de données entièrement géré et conçu pour les opérations de base de données qui nécessitent des réponses à des requêtes simples avec une latence prévisible à un seul chiffre, de la milliseconde. Une fois votre compte Oracle Cloud authentifié, vous pouvez créer une table Oracle NoSQL, et indiquer les exigences de débit et de stockage de la table. Oracle réserve et gère les ressources afin qu'elles répondent à vos exigences, et provisionnent la capacité pour vous. La capacité est spécifiée à l'aide d'unités de lecture et d'écriture pour le débit et de Go pour les unités de stockage.

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos besoins peuvent différer de l'architecture décrite ici.
  • 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 situés dans l'espace d'adresses IP privées standard.

    Sélectionnez des blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur site ou un autre fournisseur cloud) sur lequel vous souhaitez configurer des connexions privées.

    Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.

    Lorsque vous concevez les sous-réseaux, tenez compte de vos exigences en matière de sécurité et de flux de trafic. Associez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, ce qui peut servir de limite de sécurité.

  • Cloud Guard

    Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondeur personnalisées. Ces recettes vous permettent d'indiquer quel type de violation de sécurité génère un avertissement et quelles actions sont autorisées pour ces violations. Par exemple, vous pouvez détecter les buckets Object Storage dont la visibilité est définie sur Public.

    Appliquez Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire la charge administrative liée à la maintenance de plusieurs configurations.

    Vous pouvez également utiliser la fonctionnalité Liste gérée pour appliquer certaines configurations aux détecteurs.

  • Fonctions

    La fonction OCI dans cette architecture a été développée à l'aide de Python. Notez que OCI Functions prend en charge plusieurs langages de programmation et vous pouvez utiliser le langage de votre choix pour développer les fonctions et les déployer.

  • Oracle NoSQL

    Veillez à créer la table Oracle NoSQL dans le compartiment approprié et à gérer l'accès à l'aide des stratégies OCI Identity and Access Management (IAM). Il est important d'estimer correctement la capacité de lecture et d'écriture avant de créer la table. Reportez-vous à la documentation Oracle et examinez les recommandations pour obtenir des conseils détaillés.

    Dans cette solution, un exemple de table nommé "person" est utilisé. N'oubliez pas de personnaliser la fonction et le nom de la table en fonction de vos besoins spécifiques.

  • OCI Object Storage

    Cette architecture utilise le stockage d'objets standard pour télécharger un fichier. Veillez à activer l'option Emettre des événements d'objet pour que les services d'événement puissent être déclenchés. Il est également recommandé d'utiliser des buckets privés pour les données sensibles.

  • Evénements OCI

    Dans cette architecture, le service OCI Events est configuré pour écouter les modifications apportées dans OCI Object Storage pour les événements "Object Create" et "Object Update". Le service est appelé une fois l'objet téléchargé vers OCI Functions et appelle la fonction pour traitement.

Remarques

Tenez compte des points suivants lors du déploiement de cette architecture de référence.

  • Performances

    Les événements OCI, les fonctions OCI et Oracle NoSQL sont des services gérés hautement évolutifs. Le service Oracle NoSQL fournit un débit à la demande et un provisionnement du stockage.

    Veillez à estimer le débit et les capacités de stockage pour Oracle NoSQL Database Cloud Service avant le provisionnement.

  • Sécurité

    Utilisez des stratégies pour restreindre l'accès aux ressources OCI.

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

    Il est recommandé de stocker les clés secrètes et les données sensibles dans OCI Vault. Envisagez d'utiliser les fonctions OCI pour stocker les clés d'API, les noms utilisateur de base de données, les mots de passe et les jetons d'authentification utilisés pour l'autorisation avec les services OCI.

  • Disponibilité

    Oracle garantit une haute disponibilité des événements OCI, des fonctions OCI, d'Oracle NoSQL et d'OCI Logging, qui sont cloud natifs et entièrement gérés.

  • Coût

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

Déploiement

Le référentiel GitHub contient le code OCI Functions qui implémente cette architecture de référence.

  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.

En savoir plus

Pour en savoir plus sur les événements OCI, les fonctions OCI et les services NoSQL, consultez les ressources suivantes :

Consultez les ressources supplémentaires suivantes :

Remerciements

Authors: Shan Duraipandian

Contributors: John Sulyok