Integrar OCI Functions y los servicios de eventos de OCI para publicar mensajes en flujos de OSS privados

La arquitectura nativa en la nube basada en eventos aprovecha los recursos y eventos en la nube como el principal mecanismo de comunicación entre servicios. Permite sistemas escalables, resilientes y ágiles desacoplando componentes y permitiendo reacciones en tiempo real a eventos. Utiliza la transmisión de eventos y la computación sin servidor para la comunicación y el procesamiento distribuidos por eventos.

Oracle Cloud Infrastructure Events es una potente herramienta para crear automatización basada en cambios de estado en varios recursos en la nube. Nos permite crear reglas que entreguen eventos a recursos de OCI específicos, como Oracle Cloud Infrastructure Streaming, OCI Functions y Oracle Cloud Infrastructure Notifications.

En ciertos escenarios, es necesario publicar mensajes en flujos privados. Aunque OCI Events puede entregar eventos directamente a puntos finales de transmisión pública, actualmente no soporta la entrega de mensajes directamente a puntos finales de transmisión privados, ya que los puntos finales privados solo se pueden resolver en la misma VCN y los OCI Events no tienen acceso para enviar mensajes a un flujo privado. Sin embargo, esto se puede lograr utilizando OCI Functions como tipo de acción en la regla de eventos.

Esta arquitectura de referencia proporciona una visión general completa de cómo aprovechar OCI Functions con OCI Events para entregar mensajes a puntos finales de transmisión privados.

Arquitectura

En esta arquitectura de referencia se muestra cómo utilizar OCI Functions y OCI Events para publicar mensajes en un punto final de flujo de OSS privado cada vez que se crea o actualiza un archivo en Oracle Cloud Infrastructure Object Storage.

El diagrama de arquitectura ilustra el flujo de datos, que comienza con la carga de un archivo en un cubo específico de OCI Object Storage. Los eventos de OCI se disparan según las condiciones de regla de evento definidas. A continuación, el evento emitido llama a una función que extrae datos de los archivos cargados y publica tanto los datos como los mensajes de evento en un punto final de flujo privado configurado en OCI Functions. Es importante tener en cuenta que el servicio y la función de transmisión se deben crear en la misma red virtual en la nube (VCN) y subred privada para garantizar que la función OCI pueda acceder al punto final del mensaje de transmisión privado.

En el siguiente diagrama se ilustra esta arquitectura de referencia.



oci-functions-events-integration-diagram-oracle.zip

Antes de empezar

  1. Configure la aplicación de OCI Functions y el servicio de OCI Streaming (grupo de flujos y flujo).
  2. Recopile la siguiente información. Estos valores son necesarios para configurar las variables de entorno para OCI Functions.
    • Identificador de Usuario

      OCID del usuario con el que se va a autenticar.

    • ID de arrendamiento

      OCID de arrendamiento. Se puede encontrar en el perfil de usuario.

    • Huella

      Se utilizará para autenticarse en la API de OCI.

    • Región

      Identificador de la región en la que se van a crear las solicitudes.

    • Clave privada de API

      Ubicación de archivo de clave privada de API.

    • OCID de flujo

      OCID de flujo de OSS.

    • Token de autenticación

      Token de autenticación de la configuración del usuario.

    • Punto final de flujo

      Punto final de flujo de OSS (obtenido de "Punto final de mensajes" en la pantalla de información de flujo).

La arquitectura tiene los siguientes componentes:

  • arrendamiento

    Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un solo arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una sola suscripción, y una única suscripción suele tener un solo arrendamiento.

  • Región

    Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones, y las grandes distancias pueden separarlas (entre países e incluso continentes).

  • Compartimento

    Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.

  • dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, es improbable que un fallo en un dominio de disponibilidad afecte a los otros dominios de la región.

  • Dominios de errores

    Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad tiene tres dominios de errores con energía y hardware independientes. Al distribuir recursos entre varios dominios de errores, sus aplicaciones pueden tolerar fallos en el servidor físico, el mantenimiento del sistema y los fallos de energía dentro de un dominio de errores.

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red definida por software y personalizable que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan un control completo de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • Lista de Seguridad

    Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.

  • Gateway de servicio

    El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico desde la VCN al servicio Oracle recorre el tejido de red de Oracle y no Internet.

  • Object Storage

    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 base de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura y, a continuación, recuperarlos directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin problemas sin experimentar ninguna degradación del rendimiento ni de la fiabilidad del servicio. Utilice el almacenamiento estándar para el almacenamiento de acceso rápido al que debe acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivo para el almacenamiento en frío que conserva durante largos períodos de tiempo y a los que rara vez accede.

  • Eventos

    Los servicios de Oracle Cloud Infrastructure generan eventos, que son mensajes estructurados que describen los cambios en los recursos. Los eventos se emiten para operaciones de creación, lectura, actualización o supresión (CRUD), cambios de estado del ciclo de vida de los recursos y eventos del sistema que afectan a los recursos en la nube.

  • Flujo

    Oracle Cloud Infrastructure Streaming proporciona una solución duradera, escalable y totalmente gestionada para la ingesta de flujos de datos continuos y de elevado volumen que puede utilizar y procesar en tiempo real. Puede utilizar Streaming para la ingestión de datos de gran volumen, como logs de aplicación, telemetría operativa, datos de flujo de clics en la web o para otros casos de uso en los que se producen y procesan datos de forma continua y secuencial en un modelo de mensajería de publicación/ suscripción.

  • Funciones

    Oracle Cloud Infrastructure Functions es una plataforma de funciones como servicio (FaaS) totalmente gestionada, multicliente, altamente escalable y bajo demanda. Se basa en el motor de código abierto de Fn Project. Las funciones le permiten desplegar el código y o bien llamarlo directamente o dispararlo en respuesta a eventos. Oracle Functions utiliza contenedores de Docker alojados en Oracle Cloud Infrastructure Registry.

  • Registro
    Logging es un servicio altamente escalable y totalmente gestionado que proporciona acceso a los siguientes tipos de logs de sus recursos en la nube:
    • Logs de auditoría: logs relacionados con eventos emitidos por el servicio Audit.
    • Logs de servicios: logs emitidos por servicios individuales como API Gateway, Events, Functions, Load Balancing, Object Storage y logs de flujo de VCN.
    • Logs personalizados: logs que contienen información de diagnóstico de aplicaciones personalizadas, otros proveedores de nube o un entorno local.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida para implantar esta arquitectura de referencia mediante OCI Functions y OCI Events. Sus requisitos pueden ser diferentes de la arquitectura descrita aquí.
  • VCN

    Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque en función del número de recursos que planea asociar a las subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.

    Seleccione bloques CIDR que no se superpongan con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor de nube) a la que desea configurar conexiones privadas.

    Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.

    Al diseñar las subredes, tenga en cuenta el flujo de tráfico y los requisitos de seguridad. Asocie todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.

  • Cloud Guard

    Clone y personalice las recetas por defecto que proporciona Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas le permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de almacenamiento de objetos con visibilidad definida como públicos.

    Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa que supone el mantenimiento de varias configuraciones.

    También puede utilizar la función Lista gestionada para aplicar determinadas configuraciones a los detectores.

  • Funciones de OCI

    La función OCI en esta arquitectura se desarrolló con Python. Tenga en cuenta que OCI Functions soporta varios lenguajes de programación y puede utilizar el lenguaje que desee para desarrollar las funciones y desplegarlas.

  • OCI Streaming

    El pool de flujos se crea mediante una subred privada en una VCN. Y el flujo se crea mediante este pool de flujos. Asegúrese de crear la función en la misma VCN que el flujo de OSS privado y de tener todo el acceso necesario.

    Streaming también aprovecha el ecosistema de Kafka Connect para interactuar directamente con productos propios y de terceros mediante conectores de receptor y de origen Kafka listos para usar. Consulte Explorar más para obtener más información sobre el uso de Kafka Connect.

  • Almacenamiento de objetos de OCI

    Esta arquitectura utiliza el almacenamiento de objetos estándar para cargar un archivo. Asegúrese de activar "Emitir eventos de objeto" para que se pueda disparar incluso el servicio. También se recomienda utilizar bloques privados para datos confidenciales.

  • Eventos de OCI

    En esta arquitectura, los eventos de OCI están configurados para recibir cambios en OCI Object Storage para los eventos "Creación de objetos" y "Actualización de objetos". El servicio se llama después de cargar el objeto en OCI Object Storage y llama a la función para su procesamiento.

Consideraciones

Al implementar esta arquitectura de referencia, es importante tener en cuenta los siguientes aspectos.

  • Rendimiento

    OCI Events, OCI Functions y OCI Streaming son altamente escalables. Considere ajustar el número de particiones y flujos en función del tamaño y el número de archivos que espera.

  • Seguridad

    Utilice políticas para restringir quién puede acceder a los recursos de OCI.

    Para OCI Object Storage, el cifrado está activado por defecto y no se puede desactivar.

    Todo el acceso a las funciones desplegadas en OCI Functions se controla mediante Oracle Cloud Infrastructure Identity and Access Management (IAM), lo que permite asignar privilegios de gestión de funciones y llamada a funciones a usuarios y grupos de usuarios específicos.

    Se recomienda almacenar secretos y datos confidenciales en OCI Vault. Considere el uso de OCI Vault para almacenar claves de API y token de autenticación utilizados para la autorización con los servicios de OCI.

  • Disponibilidad

    Oracle garantiza una alta disponibilidad de OCI Functions, OCI Events, OCI Streaming y OCI Logging, que son nativas de la nube y están completamente gestionadas. OCI Streaming incluye las siguientes capacidades de alta disponibilidad:

    • Flujo constante de datos de log
    • Servicio escalable horizontal y multithread
    • Ingesta casi en tiempo real
    • Resiliencia frente a interrupciones a corto plazo
    • Optimizado para un uso eficiente de los datos
  • Costo

    Pague solo por los recursos utilizados mientras se ejecuta una función.

Despliegue

El repositorio GitHub contiene el código de OCI Functions que implementa esta arquitectura de referencia.

  1. Vaya a GitHub.
  2. Clone o descargue el repositorio en la computadora local.
  3. Siga las instrucciones del documento README.

Explorar más

Obtenga más información sobre OCI Functions, OCI Events y OCI Streaming.

Revise estos recursos adicionales:

Acuses de recibo

Authors: Shan Duraipandian

Contributors: John Sulyok