Déployer des microservices avec une base de données convergée et Helidon
Architecture
Cette architecture présente les ressources et la topologie requises pour utiliser les microservices avec Cloud Infrastructure, Oracle Database convergé et Helidon.
Une base de données convergée Oracle Database est une base de données optimisée avec une prise en charge native des types de données modernes, des composants de centre de données clés et des derniers paradigmes de développement. Par exemple, une base de données convergée prend en charge les données spatiales pour la sensibilisation à l'emplacement, JSON pour les magasins de documents, IoT pour l'intégration d'appareils, les technologies en mémoire pour l'analyse en temps réel et les données relationnelles traditionnelles. En prenant en charge tous ces types de données, une base de données convergée peut exécuter toutes sortes de charges de travail, du IoT à la blockchain en analytique et en apprentissage automatique. Il peut également gérer n’importe quel paradigme de développement, y compris les microservices.
L’architecture de microservices présente trois niveaux principaux : le niveau de messagerie, le niveau d’application et le niveau de base de données, pour apporter agilité, échelle horizontale et robustesse aux applications d’entreprise. Cette architecture de référence présente les composants standardisés disponibles sur le cloud Oracle Gen 2 pour créer des microservices robustes utilisant Oracle Database comme couche de persistance.
Le niveau Messagerie est un mécanisme de messagerie transactionnelle Java Message Service (JMS) intégré à la base de données, à Transactional Event Queues (TEQ) ou à Kafka, tel qu'un service de transmission en continu Oracle Cloud Infrastructure.
- Surveillance des événements et alerte : Grafana et Prometheus
- Observabilité et traçage : Kiali et Jaeger
- Applications traditionnelles : Java Enterprise Edition et Oracle Weblogic
- Microservices Java : Java, helidon.io et Oracle GraalVM Enterprise
- Microservices Polyglot : node.js et python
- Maillage de service avec Oracle Container Engine for Kubernetes : Istio, Kubernetes et Docker
Le niveau de base de données se compose de deux instances Autonomous Transaction Processing (ATP-1 et ATP-2). L'architecture utilise des données relationnelles, des données spatiales, des documents, du texte et des données JSON dans la base de données convergée et des messages transactionnels intégrés dans la base de données pour que les microservices simplifient les workflows.
Le schéma suivant est un exemple d'architecture de microservices pour une application de livraison de nourriture mobile en ligne.

Description de l'image helidon_microservices_db_architecture.png
L'architecture comporte les composants suivants :
- Equilibreur de charge
Le service Oracle Cloud Infrastructure Load Balancing fournit une répartition de trafic automatisée à partir d'un seul point d'entrée vers plusieurs serveurs du back-end.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul dont vos applications ont besoin et Container Engine for Kubernetes les provisionne sur Oracle Cloud Infrastructure dans une location existante. Container Engine for Kubernetes utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur sur des clusters d'hôtes.
- Connecteur de service pour Kubernetes
Connectez la base de données Oracle Autonomous Transaction Processing à Oracle Container Engine for Kubernetes avec OCI Service Broker for Kubernetes.
OCI Service Broker pour Kubernetes est une implémentation de l'API Open Service Broker. OCI Service Broker pour Kubernetes est spécialement conçu pour interagir avec les services Oracle Cloud Infrastructure à partir des clusters Kubernetes. Il comprend trois adaptateurs de broker de service à lier aux services Oracle Cloud Infrastructure suivants : Object Storage, Autonomous Transaction Processing, Autonomous Data Warehouse et Oracle Streaming Service.
Vous pouvez ajouter OCI Service Broker pour Kubernetes aux clusters créés à l'aide d'Oracle Cloud Infrastructure Container Engine for Kubernetes pour interagir avec les services Oracle Cloud Infrastructure répertoriés ci-dessus. Lorsque vous ajoutez OCI Service Broker pour Kubernetes à un cluster, vous n'avez pas besoin de provisionner ou de dé-provisionner manuellement les services Oracle Cloud Infrastructure lors du déploiement ou de l'annulation du déploiement d'une application sur le cluster. Au lieu de cela, vous pouvez interagir avec les services Oracle Cloud Infrastructure en utilisantkubectl
pour appeler les API Open Service Broker implémentées par OCI Service Broker pour Kubernetes. - Registry
Oracle Cloud Infrastructure Registry est un registre géré par Oracle qui permet de simplifier votre workflow du développement à la production. Le registre facilite le stockage, le partage et la gestion des artefacts de développement, comme les images Docker. L'architecture hautement disponible et évolutive d'Oracle Cloud Infrastructure vous garantit un déploiement et une gestion fiables de vos applications.
- Object Storage
Object Storage fournit un accès rapide à de grandes quantités de données structurées et non structurées de tout type de contenu, y compris des sauvegardes de base de données, des données analytiques et du contenu enrichi, comme des images et des vidéos. 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 un stockage "à froid" que vous conservez pendant de longues périodes et rarement ou rarement accès.
- Microservices
Utilisez Istio Service Mesh pour connecter les microservices à un proxy afin de fournir des informations de traçage visualisées dans Kiali.
Utilisez Jaeger pour le traçage et Kiali pour l'observabilité du maillage Istio.
- Helidon
Utilisez les annotations Helidon MicroProfile pour surveiller l'état et la vitalité des microservices.
- Traitement autonome des transactions
Oracle Autonomous Transaction Processing est un service de base de données autonome, auto-sécurisé et auto-réparateur optimisé pour les charges de travail de traitement des transactions. Vous n'avez pas besoin de configurer ou de gérer du 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.
Le schéma suivant est un exemple de workflow d'une architecture de microservices pour une application mobile de livraison de nourriture en ligne.

Description de l'image microservices_converged_db.png
Les étapes suivantes apparaissent dans cette architecture :
- Le client recherche les avis en ligne et passe une commande. Le microservice Service de commande dispose d'une fonction de vérification des recherches. Les demandes et commandes de vérification de recherche sont envoyées via un équilibreur de charge au microservice de service de commande. Le service de commande communique avec la base de données.
- La recherche de données textuelles et JSON et l'analyse des sentiments sont envoyées à la fonction Rechercher des évaluations.
- Les microservices Order Service et Check Inventory Service communiquent entre eux via la messagerie transactionnelle.
- Le service de commande envoie une commande de livraison au microservice Service de livraison.
- Le calcul spatial des livraisons uniques ou multiples est envoyé de la base de données à la fonction de mappage de routage du service de livraison.
- Les analyses opérationnelles avec peu de code sont envoyées de la base de données au tableau de bord d'analyse.
Recommandations
Vos besoins peuvent être différents de ceux de l'architecture décrite ici. Utilisez les recommandations suivantes comme point de départ :
- Simplicité
L'architecture amplifie la simplicité de conception de la couche de persistance pour les microservices avec une base de données convergée Oracle. Les modèles de sécurité de base de données constituent un bon point de départ pour la sécurité d'authentification et d'autorisation. En outre, la sauvegarde et la haute disponibilité de la base de données simplifient le développement de microservices.
Une bonne compréhension de l'application entraîne l'accès aux données pour chaque microservice avec la conception dans les contextes limités et un couplage faible au sein de la multitude de ces services. Commencez par l'isolement au niveau du schéma.
Le dimensionnement correct du microservice est important pour rendre les dépendances de données plus faciles à gérer.
La messagerie transactionnelle orientée événement, construite dans la base de données convergée, permet un couplage faible entre les microservices tout en préservant une messagerie unique, pour une implémentation efficace des transactions cohérentes à terme entre les microservices (appelées sagas).
- Observabilité et facilité de gestion
L’observabilité et la facilité de gestion grâce aux annotations Helidon et à l’utilisation d’outils de traçage permettent l’automatisation de l’exploitation d’une application basée sur les microservices à grande échelle. Il s’agit d’un domaine à concevoir, à la fois au niveau de l’application et au niveau de la base de données, d’autant plus que la charge sur les microservices augmente et que des ajustements sont nécessaires pour améliorer les performances et la disponibilité à grande échelle.
- Extensibilité
La mise en conteneur des microservices gérés par Oracle Cloud Infrastructure Container Engine for Kubernetes permet l'extensibilité du niveau d'application. Bien qu'il ne soit pas toujours recommandé que chaque microservice dispose de sa propre base de données, il est certainement possible d'utiliser l'architecture de la base de données convergée. L'isolement au niveau du schéma entre les microservices permet souvent d'éviter les dépendances de données inutiles.
- Sécurité
Une base de données convergée offre un niveau élevé de sécurité qu'une application peut utiliser pour fournir des rôles au niveau utilisateur, l'authentification, l'autorisation et le cryptage des données. L'accès sécurisé des microservices est également fourni par Helidon en liaison avec la sécurité dans la couche de persistance.
- Echelle
Cette architecture ajoute des instances de microservices à l'aide d'Oracle Container Engine for Kubernetes pour les gérer, et un équilibreur de charge pour permettre l'utilisation transparente de plusieurs instances pour chaque service. La disponibilité et la mise à l’échelle sont traitées à l’aide de ce paradigme pour les microservices. La base de données fournit un redimensionnement autonome simple jusqu'à un certain niveau (2 à 48 unités de calcul Oracle (OCPU) par système de base de données), qui peuvent fonctionner pour la plupart des applications.
Remarques
Tenez compte des points suivants lors du déploiement de cette architecture de référence.
- Performances
Adaptez les performances des applications horizontalement en ajoutant des instances supplémentaires pour le microservice et gérez avec Kubernetes.
Adapter les performances de la base de données en observant la charge de la base de données dans la console de performances Oracle Autonomous Transaction Processing et en augmentant le nombre d'OCPU (jusqu'à 48 dans ATP-Shared).
- Sécurité
La sécurité des microservices respecte la sécurité offerte par Helidon Microservices et le modèle de sécurité Oracle Database : authentification, autorisation et contrôle d’accès des ressources. Oracle recommande aux applications d'utiliser autant que possible les mécanismes d'application de la sécurité de la base de données.
- Disponibilité
La haute disponibilité comporte deux parties : la couche d'application et la couche de données.
La disponibilité de l'application est obtenue en disposant de conteneurs sans conservation de statut, répétés par Kubernetes, et en récupérant tout état à partir des métadonnées de niveau intermédiaire ou de la base de données.
Une base de données de secours physique pour les bases de données pluggables dans les domaines de disponibilité Oracle Cloud ou dans les régions est recommandée pour les architectures haute disponibilité. Vérifiez les paramètres de haute disponibilité d'Oracle Database pour d'autres recommandations.
- Coût
L’économie du cloud s’applique à cette architecture de référence de microservices. Tous les composants sont disponibles sur Oracle Cloud Infrastructure en tant que service géré et vous payez pour ce que vous utilisez plutôt que de payer pour le provisionnement du matériel.
déploiement
Le code Terraform de cette architecture de référence est disponible sur GitHub. Vous pouvez télécharger le code à partir de GitHub sur votre ordinateur, le personnaliser et déployer l'architecture à l'aide de la CLI Terraform.
- Effectuez un déploiement en utilisant le code Terraform dans GitHub :
- Accédez à GitHub.
- Clonez ou téléchargez le référentiel sur votre ordinateur local.
- Suivez les instructions du document
README
.
- Déploiement à l'aide d'Oracle LiveLabs Building Microservices with Oracle Converged Database Workshop.
Informations supplémentaires
Pour plus d'informations, reportez-vous aux ressources suivantes :
- Atelier sur la création de microservices avec Oracle Converged Database
- Livre blanc sur les microservices de démarrage
- Helidon Microservices
- Jaeger Tracing
- Istio Service Mesh et Service Management
- Kiali Service Mesh Management for Istio
- File d'attente des événements transactionnels et guide de l'utilisateur Advanced Queuing
- Présentation de la haute disponibilité Oracle Database
- Guide de sécurité Oracle Database
Journal des modifications
Ce journal répertorie uniquement les modifications importantes :
Juin 14, 2021 |
|