Despliegue microservicios con una base de datos convergente y Helidon
Arquitectura
Esta arquitectura muestra los recursos y la topología necesarios para utilizar microservicios con Cloud Infrastructure, Oracle Database convergente y Helidon.
Oracle Database convergente es una base de datos optimizada que ofrece soporte nativo para tipos de datos modernos, componentes clave del centro de datos y los paradigmas de desarrollo más recientes. Por ejemplo, una base de datos convergente soporta datos espaciales para el conocimiento de la ubicación, JSON para almacenes de documentos, IoT para integración de dispositivos, tecnologías en memoria para análisis en tiempo real y datos relacionales tradicionales. Al proporcionar soporte para todos estos tipos de datos, una base de datos convergente puede ejecutar todo tipo de cargas de trabajo de IoT a Blockchain a Analytics y Machine Learning. También puede manejar cualquier paradigma de desarrollo, incluidos los microservicios.
La arquitectura de microservicios tiene tres niveles principales (el nivel de mensajería, el nivel de aplicación y el nivel de base de datos) para ofrecer agilidad, escala horizontal y robustez a las aplicaciones empresariales. Esta arquitectura de referencia establece componentes basados en estándares disponibles en la nube de Oracle Gen 2 para crear microservicios sólidos con Oracle Database como capa de persistencia.
El nivel de mensajes es un mensaje transaccional de Java Message Service (JMS) integrado en la base de datos, las colas de eventos transaccionales (TEQ) o un mecanismo de transporte basado en Kafka como el servicio de flujo de Oracle Cloud Infrastructure.
- Control y alertas de eventos: Grafana y Prometheus
- Observación y rastreo: Kiali y Jaeger
- Aplicaciones tradicionales: Java Enterprise Edition y Oracle Weblogic
- Microservicios de Java: Java, helidon.io y Oracle GraalVM Enterprise
- Microservicios políglotas: node.js y python
- Malla de servicio con Oracle Container Engine for Kubernetes: Istio, Kubernetes y Docker
El nivel de base de datos consta de dos instancias de Autonomous Transaction Processing (ATP-1 y ATP-2). La arquitectura utiliza datos relacionales, datos espaciales, documentos, texto y datos JSON en la base de datos convergente y mensajes transaccionales incorporados en la base de datos para microservicios con el fin de simplificar los flujos de trabajo.
El siguiente diagrama es un ejemplo de una arquitectura de microservicios para una aplicación móvil de entrega de alimentos en línea.

Descripción de la ilustración helidon_microservices_db_architecture.png
La arquitectura tiene los siguientes componentes:
- Equilibrador de carga
El servicio Oracle Cloud Infrastructure Load Balancing proporciona una distribución automatizada de tráfico desde un único punto de entrada a varios servidores del backend.
- Container Engine para Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes es un servicio totalmente gestionado, escalable y con alta disponibilidad que puede utilizar para desplegar las aplicaciones contenedorizadas en la nube. Especifique los recursos informáticos que necesitan sus aplicaciones y Container Engine for Kubernetes los aprovisionará en Oracle Cloud Infrastructure en un arrendamiento existente. Container Engine for Kubernetes utiliza Kubernetes para automatizar el despliegue, el ajuste y la gestión de aplicaciones en contenedores en clusters de hosts.
- Conector de servicio para Kubernetes
Conecte la base de datos de Oracle Autonomous Transaction Processing a Oracle Container Engine for Kubernetes con OCI Service Broker para Kubernetes.
OCI Service Broker para Kubernetes es una implantación de la API de Open Service Broker. OCI Service Broker para Kubernetes se utiliza específicamente para interactuar con los servicios de Oracle Cloud Infrastructure desde clusters de Kubernetes. Incluye tres adaptadores de agente de servicios para enlazar con los siguientes servicios de Oracle Cloud Infrastructure: Object Storage, Autonomous Transaction Processing, Autonomous Data Warehouse y Oracle Streaming Service.
Puede agregar el agente de servicios de OCI para Kubernetes a clusters que ha creado con Oracle Cloud Infrastructure Container Engine for Kubernetes para interactuar con los servicios de Oracle Cloud Infrastructure mostrados anteriormente. Al agregar el agente de servicios de OCI para Kubernetes a un cluster, no tiene que aprovisionar ni anular el aprovisionamiento manualmente de los servicios de Oracle Cloud Infrastructure cada vez que despliegue o anule el despliegue de una aplicación en el cluster. En su lugar, interactúe con los servicios de Oracle Cloud Infrastructure mediantekubectl
para llamar a las API de agente de servicios abiertos implantadas por el agente de servicios de OCI para Kubernetes. - Registro
Oracle Cloud Infrastructure Registry es un registro gestionado por Oracle que permite simplificar el flujo de trabajo de desarrollo a producción. El registro facilita el almacenamiento, el uso compartido y la gestión de artefactos de desarrollo, como imágenes de Docker. La arquitectura altamente disponible y escalable de Oracle Cloud Infrastructure garantiza que pueda desplegar y gestionar sus aplicaciones de forma fiable.
- Almacenamiento de objetos
El almacenamiento de objetos proporciona acceso rápido a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de bases de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Utilice el almacenamiento estándar para el almacenamiento "caliente" al que necesita acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivos para el almacenamiento "en frío" que conserva durante largos períodos de tiempo y que rara vez tiene acceso.
- microservicios
Utilice Istio Service Mesh para conectar los microservicios con un proxy a fin de proporcionar información de rastreo visualizada en Kiali.
Utilizar Jaeger para rastreo y Kiali para la observabilidad de la malla Istio.
- Helidon
Utilice las anotaciones Helidon MicroProfile para supervisar el estado y la vida de los microservicios.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing es un servicio de base de datos que se optimiza para las cargas de trabajo de procesamiento de transacciones con capacidades de autogestión, autoseguridad y autorreparación. No es necesario configurar ni gestionar ningún hardware, o instalar ningún software. Oracle Cloud Infrastructure gestiona la creación de la base de datos, así como la copia de seguridad, la aplicación de parches, la actualización y el ajuste de la base de datos.
El siguiente diagrama es un ejemplo del flujo de trabajo de una arquitectura de microservicios para una aplicación móvil en línea de entrega de alimentos.

Descripción de la ilustración microservices_converged_db.png
En esta arquitectura aparecen los siguientes pasos:
- El cliente busca reseñas en línea y realiza un pedido. El microservicio Order Service tiene una función Buscar revisiones. Las solicitudes y los pedidos de revisión de búsqueda se envían a través de un equilibrador de carga al microservicio del servicio de pedidos. El servicio de pedidos se comunica con la base de datos.
- La búsqueda de texto y datos JSON y el análisis de sentimiento se envían a la función Buscar revisiones.
- Los microservicios Order Service y Check Inventory Service se comunican entre sí mediante mensajes transaccionales.
- El servicio de pedidos envía un pedido de posición para la solicitud de entrega al microservicio del servicio de entrega.
- El cálculo espacial para entregas únicas o múltiples se envía desde la base de datos a la función de asignación de rutas del servicio de entrega.
- Los análisis operativos con poco código se envían desde la base de datos al panel de control de análisis.
Recomendaciones
Los requisitos pueden ser diferentes de la arquitectura que se describe aquí. Utilice las siguientes recomendaciones como punto de partida:
- Simplicidad
La arquitectura amplía la necesidad de simplicidad a la hora de diseñar la capa de persistencia para microservicios con una base de datos convergente de Oracle. Los modelos de seguridad de bases de datos son un buen punto de partida para obtener seguridad de autenticación y autorización. Además, el uso de la copia de seguridad y la alta disponibilidad de la base de datos simplifican el desarrollo de microservicios.
Un buen conocimiento de la aplicación impulsa el acceso a los datos de cada microservicio con el diseño en contextos delimitados y el acoplamiento suelto dentro de la multitud de estos servicios. Comience con el aislamiento a nivel de esquema.
Es importante ajustar el tamaño del microservicio para que las dependencias de datos sean más manejables.
La mensajería transaccional basada en eventos integrada en la base de datos convergente permite el acoplamiento flexible entre microservicios al tiempo que se preservan exactamente una vez los mensajes, lo que proporciona una implantación eficiente de transacciones finalmente coherentes en microservicios (llamadas sagas).
- Capacidad de observación y gestión
La capacidad de observación y gestión con las anotaciones de Helidon y el uso de herramientas de rastreo permiten la automatización en el funcionamiento de una aplicación basada en microservicios a escala. Se trata de un área que se debe diseñar bien, tanto en el nivel de aplicación como en el de base de datos, especialmente a medida que aumenta la carga en los microservicios y se requieren ajustes para el rendimiento y la disponibilidad a escala.
- Extensibilidad
La contenedorización de microservicios gestionados por Oracle Cloud Infrastructure Container Engine for Kubernetes permite la ampliación del nivel de aplicación. Aunque no siempre se recomienda que cada microservicio tenga su propia base de datos, sin duda es posible con la arquitectura de la base de datos convergente. A menudo, el aislamiento a nivel de esquema entre microservicios proporciona un buen aislamiento de dependencias de datos innecesarias.
- Seguridad
Una base de datos convergente proporciona un alto nivel de seguridad que una aplicación puede utilizar para proporcionar roles de nivel de usuario, autenticación, autorización y cifrado de datos. Helidon también proporciona acceso seguro a los microservicios junto con la seguridad en la capa de persistencia.
- Escala
Esta arquitectura agrega instancias de microservicios mediante Oracle Container Engine for Kubernetes para gestionarlas, y un equilibrador de carga para permitir el uso de varias instancias para cada servicio sin problemas. La disponibilidad y las posibilidades de ampliación se abordan mediante este paradigma para los microservicios. La base de datos proporciona una ampliación autónoma simple a un determinado nivel (de 2 a 48 unidades de computación de Oracle (OCPU) por sistema de base de datos), que puede funcionar para la mayoría de las aplicaciones.
Consideraciones
Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.
- Rendimiento
Amplíe el rendimiento de las aplicaciones de forma horizontal agregando instancias adicionales para el microservicio y gestión con Kubernetes.
Amplíe el rendimiento de la base de datos observando la carga de la base de datos en la consola de rendimiento de Oracle Autonomous Transaction Processing y aumentando el número de OCPU (hasta 48 en ATP-Shared).
- Seguridad
La seguridad para microservicios sigue la seguridad proporcionada por Helidon Microservices y el modelo de seguridad de Oracle Database: autenticación, autorización y control de acceso a los recursos. Oracle recomienda que las aplicaciones utilicen los mecanismos de aplicación de la seguridad de la base de datos en la medida de lo posible.
- Disponibilidad
La alta disponibilidad consta de dos partes, la capa de aplicación y la capa de datos.
La disponibilidad de la aplicación se logra teniendo contenedores sin estado, siendo rediseñados por Kubernetes y recuperando cualquier estado de los metadatos de la capa media o de la base de datos.
Se recomienda el uso de bases de datos físicas en espera para PDB en los dominios de disponibilidad de Oracle Cloud o en todas las regiones para arquitecturas de alta disponibilidad. Revisar los parámetros de alta disponibilidad de Oracle Database para otras recomendaciones.
- Costo
La economía de la nube se aplica a esta arquitectura de referencia de microservicios. Todos los componentes están disponibles en Oracle Cloud Infrastructure como servicio gestionado, y usted paga por lo que utiliza, en lugar de pagar por el aprovisionamiento de hardware.
Desplegar
El código de Terraform para esta arquitectura de referencia está disponible en GitHub. Puede descargar el código de GitHub en su computadora, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.
- Realice el despliegue con el código de Terraform en GitHub:
- Vaya a GitHub.
- Clone o descargue el repositorio en su equipo local.
- Siga las instrucciones del documento
README
.
- Despliegue con Oracle LiveLabs Creación de microservicios con el taller de base de datos convergente de Oracle.
Más información
Para obtener más información, consulte los siguientes recursos:
- Creación de microservicios con el taller de base de datos convergente de Oracle
- Documento técnico sobre introducción a los microservicios
- Helidon Microservicios
- Jaeger Tracing
- Istio Service Mesh and Service Management
- Kiali Service Mesh Management for Istio
- Colas de eventos transaccionales y guía de usuario de Advanced Queuing
- Visión General de Oracle Database High Availability
- Oracle Database Security Guide
Log de Cambios
Este log sólo muestra los cambios significativos:
14 de junio de 2021 |
|