Note:

Procesar archivos en Oracle Cloud Infrastructure Object Storage con un flujo nativo en la nube escalable

Introducción

En nuestras aplicaciones, a menudo necesitamos procesar grandes cantidades de archivos. En el pasado, esto se hacía en forma de lote, pero con las nuevas tecnologías y la llegada de la nube, ahora podemos transformar muchos procesos en serie en procesos paralelos. El uso de colas de mensajes, clusters de Kubernetes y arquitecturas controladas por eventos son algunas de las tecnologías y arquitecturas ampliamente utilizadas para obtener lo mejor del procesamiento de gran volumen.

Oracle Cloud Infrastructure (OCI) tiene recursos para permitir la escalabilidad y la reducción de costos. Vamos a explorar los servicios nativos en la nube.

En este tutorial, veremos una forma muy común de procesar grandes cantidades de archivos, donde las aplicaciones pueden depositar sus archivos en un cubo en OCI Object Storage y cuando se depositan estos archivos, se genera un evento que permite que se dispare una función para escribir la URL de este archivo en OCI Streaming.

Nota: Podemos imaginar esta solución solo con una aplicación de origen que guarde el contenido de los archivos en OCI Streaming mientras nuestra aplicación solo lee este contenido, pero no es una buena práctica transferir grandes volúmenes de datos dentro de una cola Kakfa. Para ello, nuestro enfoque utilizará un patrón denominado Claim-Check, que hará lo mismo que nuestra propuesta, en lugar de enviar el archivo a través de la cola de mensajes, enviaremos la referencia a este archivo. Delegaremos la lectura del archivo a la aplicación que se encargará de tramitarlo.

En este tutorial se mostrarán estos componentes: OCI Object Storage, Events Service, Functions y Streaming.

Al final de esta cadena, tendremos la aplicación consumiendo la cola de transmisión, sin embargo, no analizaremos cómo se procesará el archivo.

img.png

Objetivos

Requisitos

Tarea 1: Creación de la instancia de OCI Streaming

OCI Streaming es un servicio de transmisión gestionado similar a Kafka. Podemos desarrollar aplicaciones mediante las API de Kafka y los SDK comunes del mercado. En esta tarea, crearemos una instancia de OCI Streaming y la configuraremos para que se ejecute en ambas aplicaciones a fin de publicar y consumir un gran volumen de datos.

  1. Conéctese a la consola de OCI, haga clic en Análisis e IA y Flujos.

  2. Seleccione Compartimento y haga clic en Crear flujo.

    crear-stream.png

  3. Introduzca el nombre de flujo de la instancia de flujo y mantenga los demás parámetros con los valores por defecto. Haga clic en Crear para inicializar la instancia y esperar al estado Activo.

    guardar-crear-stream.png

    Nota:

    • En el proceso de creación de flujos, podemos seleccionar Creación automática de un pool de flujos por defecto, por lo que el pool por defecto se creará automáticamente.

    • Puede crear su instancia de flujo en una subred privada. En este caso, la función de la tarea 4 debe estar en la misma subred privada o en una subred que tenga acceso a la instancia de flujo de subred privada. Compruebe la VCN, las subredes, las listas de seguridad, el gateway de servicio u otros componentes de seguridad. Asegúrese de que la función puede acceder a la instancia de OCI Streaming.

  4. Haga clic en el enlace DefaultPool.

    default-pool-option.png (en inglés)

  5. Haga clic en Configuración de conexión de Kafka y vea la configuración de conexión. Anote la información como es necesaria en las siguientes tareas.

    flujo-conn-settings.png

    kafka-conn.png

Tarea 2: Creación de un cubo de OCI Object Storage

Necesitamos crear un cubo. Los cubos son contenedores lógicos para almacenar objetos, por lo que todos los archivos utilizados para esta demostración se almacenarán en este cubo.

  1. Abra la consola de OCI y vaya a Almacenamiento, Cubos. En la sección Cubos, seleccione Compartimento; el compartimento será el mismo que la instancia de OCI Streaming creada en la tarea 1.

    seleccionar-compartment.png

  2. Haga clic en Create Bucket e introduzca un Bucket Name. Mantenga los otros parámetros con los valores por defecto y haga clic en Create.

    crear-bucket.png

    Podemos ver el cubo creado.

    cubos: dataflow.png

    Nota: Revise las políticas de OCI IAM para el cubo. Debe configurar las políticas si desea utilizar estos cubos en las aplicaciones de demostración. Para obtener más información, consulte Visión general de Object Storage y Políticas de OCI IAM.

Tarea 3: Activación del cubo de OCI Object Storage para los servicios OCI Events

Necesitamos activar el cubo para que emita eventos. Por lo tanto, haga clic en los detalles del cubo y busque el enlace Emitir edición de eventos de objeto y actívelo.

img_8.png

Tarea 4: Creación de funciones de OCI

Para ejecutar la siguiente tarea, descargue el código desde aquí: OCI_Streaming_Claim_Check.zip.

Tarea 5: Configuración de OCI Events

Vamos a configurar una regla de evento para disparar la función a fin de obtener la información del cubo y enviarla a OCI Streaming.

  1. Seleccione el mismo compartimento para la regla y haga clic en Crear regla.

    img_10.png

  2. Introduzca la siguiente información.

    1. En la sección Condición de reglas.

      • Condición: Event Type.
      • Nombre de servicio: Object Storage.
      • Tipo de evento: Object-Create, Object-Delete, Object-Update.
    2. En la sección Acción.

      • Tipo de acción: Functions.
      • Compartment: <your function compartment name>.
      • Aplicación de función: <your function app, in this example ocistreaming-app>.
      • Función: fn_stream.

    img_9.png

Tarea 6: Prueba del circuito de eventos

Nota: Para las redes privadas, el código de prueba se debe ejecutar en un bastión conectado a la misma subred privada de OCI Streaming.

En el paquete de código fuente OCI_Streaming_Claim_Check.zip, podemos encontrar una carpeta denominada monitoring y un archivo denominado consume.py. Podemos utilizar este código para monitorear y probar si la solución funciona correctamente.

Necesitamos configurar el código.

img_11.png

Después de configurar los parámetros de flujo, puede ejecutar el código y verificar el circuito, que es el cubo, el evento, la función y el flujo.

img_12.png

Confirmaciones

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.