Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Fichiers de processus sur Oracle Cloud Infrastructure Object Storage avec un flux natif cloud évolutif
Introduction
Dans nos applications, nous avons souvent besoin de traiter de grandes quantités de fichiers. Dans le passé, cela a été fait par lots, mais avec les nouvelles technologies et l'avènement du cloud, nous sommes maintenant en mesure de transformer de nombreux processus en série en processus parallèles. L'utilisation de files d'attente de messages, de clusters Kubernetes et d'architectures orientées événements font partie des technologies et architectures largement utilisées pour tirer le meilleur parti du traitement de gros volumes.
Oracle Cloud Infrastructure (OCI) dispose de ressources pour permettre l'évolutivité et la réduction des coûts. Explorons les services natifs du cloud.
-
OCI Object Storage permet aux clients de stocker en toute sécurité tout type de données dans son format natif. Grâce à la redondance intégrée, OCI Object Storage est idéal pour créer des applications modernes qui nécessitent évolutivité et flexibilité, car elles peuvent être utilisées pour consolider plusieurs sources de données à des fins d'analyse, de sauvegarde ou d'archivage.
-
Le service OCI Streaming est une plate-forme de diffusion d'événements en temps réel, sans serveur et compatible avec Apache Kafka pour les développeurs et les data scientists. Streaming est entièrement intégré à OCI, Database, GoldenGate et Integration Cloud. Le service propose également des intégrations prédéfinies pour des centaines de produits tiers dans des catégories telles que DevOps, bases de données, Big Data et applications SaaS.
-
OCI Events Service suit les modifications apportées aux ressources à l'aide d'événements conformes à la norme d'événements cloud de la CNCF. Les développeurs peuvent répondre aux modifications apportées en temps réel en déclenchant du code avec OCI Functions, en enregistrant sur OCI Streaming ou en envoyant des alertes à l'aide d'OCI Notifications.
-
OCI Functions est un service de calcul sans serveur qui permet aux développeurs de créer, d'exécuter et de faire évoluer des applications sans gérer d'infrastructure. OCI Functions dispose d'intégrations natives avec d'autres services OCI et applications SaaS. OCI Functions est basé sur le projet open source Fn. Par conséquent, les développeurs peuvent créer des applications qui peuvent être facilement portées vers d'autres environnements cloud et sur site. Le code basé sur des fonctions s'exécute généralement pendant de courtes périodes, est sans conservation de statut et s'exécute dans un seul but logique. Les clients ne paient que pour les ressources qu'ils utilisent.
-
Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) est un service Kubernetes géré qui simplifie les opérations Kubernetes à grande échelle au niveau de l'entreprise. Elle réduit le temps, les coûts et les efforts requis pour gérer une infrastructure Kubernetes complexe. OKE vous permet de déployer des clusters Kubernetes pour garantir des opérations fiables sur le plan de contrôle et les noeuds de processus actif grâce au redimensionnement automatique, aux mises à jour et aux patches de sécurité. En outre, OKE offre une expérience Kubernetes entièrement sans serveur avec des noeuds virtuels.
Dans ce tutoriel, nous verrons un moyen très courant de traiter de grandes quantités de fichiers, où les applications peuvent déposer leurs fichiers dans un bucket dans OCI Object Storage et quand ces fichiers sont déposés, un événement est généré permettant à une fonction d'écrire l'URL de ce fichier dans OCI Streaming.
Remarque : nous pouvons imaginer cette solution simplement avec une application source qui enregistre le contenu des fichiers dans OCI Streaming alors que notre application lit simplement ce contenu, mais il n'est pas recommandé de transférer de grands volumes de données dans une file d'attente Kakfa. Pour ce faire, notre approche utilisera un modèle appelé Claim-Check, qui fonctionnera exactement comme notre proposition, au lieu d'envoyer le fichier via la file d'attente de messages, nous enverrons la référence à ce fichier. Nous déléguerons la lecture du dossier à la demande qui sera en charge de son traitement.
Ce tutoriel comprend les composants suivants : OCI Object Storage, Events Service, Functions et Streaming.
A la fin de cette chaîne, l'application consommera la file d'attente de transmission en continu, mais nous ne discuterons pas de la façon dont le fichier sera traité.
Objectifs
- Implémentez une architecture d'événement évolutive qui permettra de traiter un grand nombre de fichiers à l'aide d'OCI Object Storage, du service Events, de Functions et de Streaming.
Prérequis
-
VNC, sous-réseaux et tous les paramètres de sécurité configurés pour le bucket, la fonction et la transmission en continu.
-
Utilisateur Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) configuré pour gérer les buckets, le service d'événements, la fonction et la diffusion en continu.
Tâche 1 : créer l'instance OCI Streaming
OCI Streaming est un service de diffusion en continu géré de type Kafka. Nous pouvons développer des applications à l'aide des API Kafka et des SDK courants sur le marché. Dans cette tâche, nous allons créer une instance d'OCI Streaming et la configurer de sorte qu'elle s'exécute dans les deux applications afin de publier et d'utiliser un volume élevé de données.
-
Connectez-vous à la console OCI, cliquez sur Analytics et IA et Flux de données.
-
Sélectionnez Compartiment et cliquez sur Créer un flux de données.
-
Entrez le nom de flux de données de l'instance de flux de données et conservez les autres paramètres avec les valeurs par défaut. Cliquez sur Créer pour initialiser l'instance et attendre le statut Actif.
Remarque :
-
Dans le processus de création de la transmission en continu, nous pouvons sélectionner Créer automatiquement un pool de flux de données par défaut. Le pool par défaut sera donc créé automatiquement.
-
Vous pouvez créer votre instance de flux de données dans un sous-réseau privé. Dans ce cas, attention pour la fonction dans la tâche 4, elle doit se trouver sur le même sous-réseau privé ou dans un sous-réseau qui a accès à l'instance de flux de sous-réseau privé. Vérifiez votre VCN, vos sous-réseaux, vos listes de sécurité, votre passerelle de service ou d'autres composants de sécurité. Assurez-vous que votre fonction peut accéder à l'instance OCI Streaming.
-
-
Cliquez sur le lien DefaultPool.
-
Cliquez sur Kafka Connection Settings et affichez les paramètres de la connexion. Notez les informations telles qu'elles sont requises dans les tâches suivantes.
Tâche 2 : création d'un bucket OCI Object Storage
Nous devons créer un bucket. Les buckets sont des conteneurs logiques destinés au stockage d'objets. Par conséquent, tous les fichiers utilisés pour cette démonstration seront stockés dans ce bucket.
-
Ouvrez la console OCI et accédez à Stockage, Buckets. Dans la section Buckets, sélectionnez Compartiment. Le compartiment sera identique à l'instance OCI Streaming créée dans la tâche 1.
-
Cliquez sur Créer un bucket et entrez un nom de bucket. Conservez les autres paramètres avec les valeurs par défaut et cliquez sur Créer.
Nous pouvons voir le bucket créé.
Remarque : consultez les stratégies OCI IAM pour le bucket. Vous devez configurer les stratégies si vous souhaitez utiliser ces buckets dans vos applications de démonstration. Pour plus d'informations, reportez-vous à Présentation d'Object Storage et à Stratégies OCI IAM.
Tâche 3 : activation du bucket OCI Object Storage pour les services d'événements OCI
Nous devons activer le bucket pour émettre des événements. Cliquez donc sur les détails de votre bucket, recherchez le lien Emettre la modification des événements d'objet et activez-le.
Tâche 4 : créer des fonctions OCI
Pour exécuter la tâche suivante, téléchargez le code à partir d'ici : OCI_Streaming_Claim_Check.zip.
-
Comprendre le code
Il existe deux fichiers de code, le code principal
HelloFunction.java
et le code de fournisseur de portlets OCI StreamingProducer.java
.-
HelloFunction.java
.Dans cette partie du code, nous devons capturer les données provenant des services d'événements OCI. Il existe donc 3 sources.
- Contexte : cette propriété correspond à RuntimeContext et nous utilisons la variable
REGION
. - Données d'événement : les services d'événements OCI produisent des données en tant que
resourceName
. - Données de détails d'événement supplémentaires : les services d'événements OCI pour OCI Object Storage produisent des données en tant que
namespace
etbucketName
.
Nous pouvons monter l'URL de fichier OCI Object Storage.
De plus, le code principal peut transmettre l'URL au producteur OCI Streaming.
- Contexte : cette propriété correspond à RuntimeContext et nous utilisons la variable
-
Producer.java
.Structure de classe
Message
permettant de produire les informations Kafka pour le modèle Claim-check. Seulementkey
etvalue
.Et c'est le code de base à produire pour le streaming.
-
-
Créer et déployer la fonction OCI
Cette étape consiste à utiliser l'interface de ligne de commande OCI pour créer les fonctions OCI et déployer du code dans votre location OCI. Pour créer une fonction OCI, reportez-vous à Fonctions : démarrage à l'aide de l'interface de ligne de commande, suivez les étapes et recherchez l'option Java. Vous devez créer votre fonction avec les informations suivantes.
Application: ocistreaming-app (follow the link Functions: Get Started using CLI) fn create app ocistreaming-app --annotation oracle.com/oci/subnetIds='["<the same OCID of your streaming subnet>"]' Context Variable: REGION=<your streaming region name, ex: us-ashburn-1> fn config app ocistreaming-app REGION=us-ashburn-1
N'oubliez pas le compartiment dans lequel vous avez déployé la fonction. Vous aurez besoin de ces informations pour configurer le service OCI Events.
Tâche 5 : configurer les événements OCI
Configurez une règle d'événement pour déclencher la fonction afin d'obtenir les informations de bucket et de les envoyer à OCI Streaming.
-
Sélectionnez le même compartiment pour la règle et cliquez sur Créer une règle.
-
Saisissez les informations suivantes .
-
Dans la section Condition de règles.
- Configuration :
Event Type
. - Nom de service :
Object Storage
- Type d'événement :
Object-Create, Object-Delete, Object-Update
.
- Configuration :
-
Dans la section Action.
- Type d'action :
Functions
. - Compartiment de fonction :
<your function compartment name>
. - Application de fonction :
<your function app, in this example ocistreaming-app>
. - Fonction :
fn_stream
.
- Type d'action :
-
Tâche 6 : Testez votre circuit d'événements
Remarque : pour les réseaux privés, le code de test doit être exécuté dans un bastion connecté au même sous-réseau privé de votre instance OCI Streaming.
Dans le package de code source OCI_Streaming_Claim_Check.zip, nous pouvons trouver un dossier nommé monitoring
et un fichier nommé consume.py
. Nous pouvons utiliser ce code pour surveiller et tester si la solution fonctionne correctement.
Nous devons configurer le code.
Une fois les paramètres de flux configurés, vous pouvez exécuter le code et vérifier le circuit, à savoir le bucket, l'événement, la fonction et la transmission en continu.
Liens connexes
-
Déployer une application sans serveur déclenchée par un événement
-
Functions : démarrage à l'aide de l'interface de ligne de commande
Remerciements
- Auteur - Cristiano Hoshikawa (ingénieur solutions Oracle LAD A-Team)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Process Files on Oracle Cloud Infrastructure Object Storage with a Scalable Cloud Native Flow
F94111-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.