Flux de données IoT vers Autonomous Database à l'aide de fonctions sans serveur

Les charges de travail qui tirent parti de l'Internet of Things (IoT) doivent évoluer efficacement en temps réel. Lorsque vous déployez davantage d'appareils et de capteurs, le volume et la variété des données transmises en continu doivent croître. Utilisez des fonctions sans serveur et une base de données autonome dans Oracle Cloud pour automatiser et adapter le traitement des données IoT en continu.

Architecture

Dans cette architecture, les données des périphériques IoT transitent par une passerelle API vers des fonctions sans serveur, qui utilisent le service Streaming pour télécharger les données vers une base de données autonome dans Oracle Cloud. Les utilisateurs en dehors du cloud peuvent accéder aux données via un serveur Web basé sur Flasks exécuté sur une instance Oracle Cloud Infrastructure Compute.

Le diagramme suivant illustre cette architecture.



oci-arch-iot-streaming-oracle.zip

L'architecture comporte les composants suivants :

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes des autres régions et de vastes distances peuvent les séparer (d'un pays à l'autre ou même d'un continent à l'autre).

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

    Un VCN est un réseau personnalisé et défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux traditionnels de centres de données, les VCN vous donnent un contrôle complet sur votre environnement réseau. Un VCN peut avoir plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé VCN. Vous pouvez segmenter un VCN en sous-réseaux, qui peuvent être étendus à 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 de VCN. Vous pouvez modifier la taille d'un sous-réseau après la création. Un sous-réseau peut être public ou privé.

    Dans cette architecture, la base de données autonome et une fonction de configuration de la base de données sont attachées à un sous-réseau privé. Instance de calcul hébergeant le serveur Web et les fonctions qui traitent les flux sont déployées dans un sous-réseau public.

  • Groupes de sécurité réseau (NSG)

    Les NSG servent de pare-feu virtuel pour vos ressources cloud. Avec le modèle de sécurité sans confiance d'Oracle Cloud Infrastructure, tout le trafic est refusé et vous pouvez contrôler le trafic réseau au sein d'un VCN. Un NSG consiste en un ensemble de règles de sécurité entrantes et sortantes qui ne s'appliquent qu'à un ensemble de VNIC spécifié dans un seul VCN.

    L'accès à la base de données et au serveur Web dans cette architecture est contrôlé par des NSG distincts.

  • API Gateway

    Oracle API Gateway vous permet de publier des API avec des adresses privées accessibles à partir de votre réseau, et que vous pouvez rendre visibles sur le réseau Internet public si nécessaire. Les adresses prennent en charge la validation d'API, la transformation des demandes et des réponses, la spécification CORS, l'authentification et l'autorisation, ainsi que la limitation des demandes.

  • Transmission en continu

    Oracle Cloud Infrastructure Streaming fournit une solution de stockage entièrement gérée, évolutive et durable pour ingérer des flux de données continus et volumineux que vous pouvez consommer et traiter en temps réel. Vous pouvez utiliser Streaming pour ingérer des données à volume élevé, telles que les journaux d'applications, la télémétrie opérationnelle, les données de flux de clics Web, ou pour d'autres cas d'utilisation où les données sont produites et traitées de façon continue et séquentielle dans un modèle de messagerie d'abonnement à la publication.

  • Fonctions

    Oracle 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 permettent de déployer votre code, et d'appeler directement ou de le déclencher en réponse à des événements. Oracle Functions utilise des conteneurs Docker hébergés dans Oracle Cloud Infrastructure Registry.

  • Base de données autonome

    Cette architecture utilise une base de données autonome (Oracle Autonomous Data Warehouse ou Oracle Autonomous Transaction Processing) avec une adresse privée.

    Oracle Autonomous Data Warehouse est un service de base de données autonome, auto-sécurisé et auto-réparateur optimisé pour les charges globales d'entreposage de données. Vous n'avez pas besoin de configurer ou de gérer un matériel, ni d'installer un logiciel. Oracle Cloud Infrastructure gère la création de la base de données ainsi que la sauvegarde, l'application de patches, la mise à niveau et le réglage de la base de données.

    Oracle Autonomous Transaction Processing est un service de base de données autonome, auto-sécurisé et auto-réparateur optimisé pour les charges globales de traitement des transactions. Vous n'avez pas besoin de configurer ou de gérer un matériel, ni d'installer un logiciel. Oracle Cloud Infrastructure gère la création de la base de données ainsi que la sauvegarde, l'application de patches, la mise à niveau et le réglage de la base de données.

  • Serveur Web

    Dans cette architecture, une adresse de microframework Flask est déployée sur une instance de calcul. L'application Flask-based peut exposer les données dans la base de données autonome en tant que contenu Web dynamique.

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences peuvent différer.

  • Taille de 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 à des sous-réseaux dans VCN. Utilisez les blocs CIDR qui se trouvent dans l'espace d'adresse IP privé 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) auquel vous avez l'intention de configurer des connexions privées.

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

  • Formes de calcul

    Dans cette architecture, une image Oracle Linux 7.8 et la forme VM.Standard2.1 sont utilisées pour le serveur Web Flash. Choisissez une forme adaptée aux besoins en ressources de votre application.

  • Fonctionnalités de passerelle API

    Les adresses API Gateway prennent en charge la validation de l'API, la transformation des demandes et des réponses, CORS, l'authentification et l'autorisation, et la limitation des demandes. Choisissez les fonctionnalités qui conviennent à vos besoins en matière d'affaires et d'informatique.

  • Partitionnement de flux

    Le service Streaming vous donne un journal de messages partitionné en annexe uniquement : un flux. Une partition est une section d'un flux. Les partitions vous permettent de distribuer un flux en divisant les messages sur plusieurs noeuds. Vous pouvez placer chaque partition sur une machine distincte pour permettre à plusieurs consommateurs de lire à partir d'un flux en parallèle. Pour les charges de travail volumineuses et à forte intensité de calcul, envisagez d'augmenter le nombre de partitions.

  • Version autonome de la base de données

    Utilisez la dernière version disponible pour la base de données autonome.

Remarques

Lors de l'implémentation de cette architecture, tenez compte de vos exigences pour les paramètres suivants :

  • Demander l'accélération

    Après avoir créé la passerelle d'API et déployé une ou plusieurs API, vous pouvez limiter le taux auquel les clients frontaux peuvent envoyer des demandes aux services back-end. Décider de la limite de taux de demande en fonction de votre exigence de maintenir une disponibilité élevée et une utilisation équitable en protégeant les ressources back-end contre un trop grand nombre de demandes. Vous devrez peut-être également empêcher les attaques de déni de service (DoS) ou contrôler et limiter la consommation de ressources. En fin de compte, vous appliquez une limite de taux globalement à toutes les routes d'une spécification de déploiement d'API.

  • Limites de service

    Lors de la conception de l'architecture, tenez compte des limites de service pour les services Streaming et Functions. Reportez-vous à la documentation relative aux limites de service répertoriée dans la section Explorer d'autres éléments.

  • Evolutivité
    • Base de données

      Vous pouvez redimensionner manuellement le nombre de coeurs d'UC de la base de données vers le haut ou vers le bas à tout moment. La fonction de redimensionnement automatique des bases de données autonomes permet à votre base de données d'utiliser jusqu'à trois fois le nombre de base actuel des coeurs CPU à tout moment. À mesure que la demande augmente, le redimensionnement automatique augmente automatiquement le nombre de noyaux utilisés. Les bases de données autonomes vous permettent d'étendre la capacité de stockage à tout moment sans affecter la disponibilité ou les performances.

    • Application

      Vous pouvez mettre à l'échelle votre application Flask à l'aide du pool d'instances et des fonctionnalités de redimensionnement automatique.

      Les pools d'instances vous permettent de provisionner et de créer plusieurs instances de calcul basées sur la même configuration dans la même région.

      Utilisez la mise à l'échelle automatique pour ajuster automatiquement le nombre d'instances de calcul dans un pool d'instances en fonction des mesures de performance, telles que l'utilisation de l'UC. Le redimensionnement automatique vous aide à fournir des performances cohérentes pour les utilisateurs pendant les périodes de forte demande et à réduire vos coûts lorsque la demande est faible.

    • Fonctions

      Oracle Functions crée et supprime automatiquement les conteneurs de fonctions en fonction du chargement de la demande. Vous payez uniquement lorsque les fonctions sont appelées et pour la durée de leur exécution.

  • Disponibilité de l'application

    Les domaines de pannes offrent la meilleure résilience au sein d'un domaine de disponibilité. Si vous avez besoin d'une disponibilité plus élevée, envisagez d'utiliser plusieurs domaines de disponibilité ou plusieurs régions lorsque cela est possible.

  • Sauvegardes
    • Base de données

      Oracle Cloud Infrastructure sauvegarde automatiquement les bases de données autonomes et conserve les sauvegardes pendant 60 jours. Vous pouvez restaurer et récupérer votre base de données à tout moment pendant la période de conservation. Vous pouvez également créer des sauvegardes manuelles pour compléter les sauvegardes automatiques. Les sauvegardes manuelles sont stockées dans un bucket Oracle Cloud Infrastructure Object Storage que vous créez et conservées pendant 60 jours.

    • Application

      Le service Oracle Cloud Infrastructure Block Volumes permet de créer des sauvegardes à un point dans le temps des données sur un volume de blocs. Vous pouvez restaurer ces sauvegardes sur de nouveaux volumes à tout moment.

      Vous pouvez également utiliser le service pour effectuer une sauvegarde à un point dans le temps et cohérente avec les pannes d'un volume d'initialisation sans interruption d'application ou arrêt. Les volumes d'initialisation et de blocs ont les mêmes capacités de sauvegarde.

  • Sécurité
    • Contrôle d'accès

      Utilisez des stratégies pour restreindre l'accès à vos ressources dans le cloud et aux actions qu'elles peuvent effectuer.

    • Sécurité du réseau

      Le service Networking propose deux fonctionnalités de pare-feu virtuel qui utilisent des règles de sécurité pour contrôler le trafic au niveau des paquets : les listes de sécurité et les groupes de sécurité réseau (NSG). Un NSG consiste en un ensemble de règles de sécurité entrantes et sortantes qui ne s'appliquent qu'à un ensemble de VNIC de votre choix dans un seul VCN. Par exemple, vous pouvez choisir toutes les instances de calcul qui agissent en tant que serveurs Web dans le niveau Web d'une application à plusieurs niveaux dans VCN.

      Les règles de sécurité NSG fonctionnent de la même manière que les règles de liste de sécurité. Toutefois, pour la source ou la destination d'une règle de sécurité NSG, vous pouvez spécifier un NSG au lieu d'un bloc CIDR. Ainsi, vous pouvez facilement écrire des règles de sécurité pour contrôler le trafic entre deux NSG dans le même VCN ou le trafic dans un seul NSG. Lorsque vous créez un système de base de données, vous pouvez spécifier un ou plusieurs NSG. Vous pouvez également mettre à jour un système de base de données existant pour utiliser un ou plusieurs NSG.

Déployer

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 le déployer. Vous pouvez également télécharger le code à partir de GitHub vers votre ordinateur, personnaliser le code et déployer l'architecture à l'aide de la CLI Terraform.

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

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

    2. Vérifiez et acceptez les conditions générales.
    3. Sélectionnez la région dans laquelle déployer la pile.
    4. Suivez les invites et instructions à l'écran pour créer la pile.
    5. Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Plan.
    6. Attendez que le travail soit terminé et vérifiez 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.
  • Déployer à l'aide de la CLI Terraform :
    1. Accédez à GitHub.
    2. Téléchargez ou clonez le code sur votre ordinateur local.
    3. Suivez les instructions du README.

Explorer plus

En savoir plus sur l'utilisation de fonctions sans serveur pour vos charges de travail dans le cloud.

Journal des modifications

Ce journal répertorie uniquement les modifications importantes :