Despliegue de una aplicación Serverless activada por eventos

Oracle Functions es una plataforma totalmente gestionada, ampliable y sin servidor basada en Oracle Cloud Infrastructure y basada en el motor de código abierto Fn Project. Los desarrolladores pueden usarlo para escribir y desplegar código que proporcione valor empresarial sin preocuparse por el aprovisionamiento o la gestión de la infraestructura subyacente. Oracle Functions es un contenedor nativo con funciones empaquetadas como imágenes de contenedor de Docker.

Arquitectura

Esta arquitectura de referencia llama a Oracle Functions con el servicio Oracle Cloud Infrastructure Events, que responde automáticamente a los cambios realizados en Oracle Cloud Infrastructure Object Storage. Al cargar una imagen de ejemplo en Object Storage, se dispara el servicio Events, que a su vez llama a Oracle Functions. Fn Project soporta la mayoría de los lenguajes de programación. Esta arquitectura utiliza Java en la función para extraer los metadatos de la imagen cargada y almacenarla en Oracle Cloud Infrastructure Object Storage.

El siguiente diagrama ilustra esta arquitectura de referencia.

A continuación, se muestra la descripción de serverless-oci.png
Descripción de la ilustración serverless-oci.png

serverless-oci-oracle.zip

La arquitectura de Oracle Functions tiene los siguientes componentes:

  • 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).

  • Dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes e 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 alimentación o refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, un fallo en un dominio de disponibilidad es poco probable que afecte a los otros dominios de disponibilidad de la región.

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red personalizable y definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes del centro de datos tradicionales, las VCN le proporcionan un control total de su entorno de red. Una VCN puede tener varios bloques CIDR no solapados que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, que se pueden acotar a una región o a un dominio de disponibilidad. Cada subred consta de un rango de direcciones contiguas que no se solapan con las otras subredes de VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

    La función de esta arquitectura de referencia se despliega en una subred regional pública.

  • Oracle Functions

    Oracle Functions permite desplegar el código, llamarlo directamente o dispararlo en respuesta a eventos. Oracle Functions se dispara cuando el servicio Events lo llama, procesa la imagen y almacena los metadatos de nuevo en Object Storage. Oracle Functions utiliza contenedores de Docker alojados en Oracle Cloud Infrastructure Registry.

  • Eventos

    Los servicios de Oracle Cloud Infrastructure generan eventos estructurados que indican cambios en los recursos. Los eventos incluyen operaciones de creación, lectura, actualización o supresión (CRUD), cambios del estado del ciclo de vida de los recursos y eventos del sistema que afectan a un recurso. Se puede emitir un evento cuando termina o falla una copia de seguridad, o cuando se agrega, actualiza o suprime un archivo de un cubo de Object Storage.

  • Object Storage

    Oracle Cloud Infrastructure Object Storage es una plataforma de almacenamiento en Internet de alto rendimiento que ofrece durabilidad de datos fiable y rentable. Object Storage puede almacenar una cantidad ilimitada de datos no estructurados de cualquier tipo de contenido, incluidos los datos analíticos y el contenido enriquecido, como imágenes y vídeos. Dos niveles de almacenamiento distintos abordan la necesidad de un almacenamiento "en caliente" de acceso frecuente (estándar) y un almacenamiento "en frío" de acceso menos frecuente (archivo). El almacenamiento de objetos estándar es para datos a los que necesita acceder de forma rápida, inmediata y frecuente. Archive Storage es para los datos a los que necesite acceder en raras ocasiones, pero que deben mantenerse y conservarse durante mucho tiempo.

Recomendaciones

Los requisitos pueden ser diferentes de la arquitectura que se describe aquí. Utilice las siguientes recomendaciones como punto de partida.

  • VCN

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

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

    Esta arquitectura utiliza una VCN pública para desplegar la función. La función se aloja en una subred regional pública de la VCN. También puede utilizar una VCN privada. En ese caso, debe utilizar un gateway de NAT para tener acceso a Internet.

  • Oracle Functions

    En esta arquitectura, se utilizó la programación Java para desarrollar las funciones. Debido a que Fn Project admite varios lenguajes de programación, puede utilizar el lenguaje de su elección para desarrollar las funciones y desplegarlas.

  • Object Storage

    Esta arquitectura utiliza el almacenamiento de objetos estándar para cargar una imagen y almacenarla, de modo que el servicio de eventos pueda recogerla cuando se cree el objeto. Object Storage almacena los metadatos sobre el objeto después de los procesos de Functions.

  • Eventos

    En esta arquitectura, el servicio Oracle Cloud Infrastructure Events está configurado para recibir los cambios en la creación de Object Storage. El servicio se llama después de cargar el objeto en Object Storage y llama a la función para su procesamiento.

Consideraciones

  • Disponibilidad

    El servicio Events no está disponible en las regiones del dominio de Government Cloud.

  • Gestión

    Esta arquitectura utiliza una aplicación Java de ejemplo para escribir las funciones. Sin embargo, puede utilizar el lenguaje de programación que desee.

  • Seguridad

    Utilice políticas para restringir quién puede acceder a los recursos de Oracle Cloud Infrastructure que tiene la compañía y cómo.

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

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

  • Costo

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

Desplegar

El código de Terraform para esta arquitectura de referencia está disponible en GitHub. Puede obtener el código en Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarla. También puede descargar el código de GitHub en su computadora, personalizar el código y desplegar la arquitectura mediante la interfaz de línea de comandos (CLI) de Terraform.

  • Realice el despliegue con Oracle Cloud Infrastructure Resource Manager:
    1. Haga clic en Despliegue en Oracle Cloud.

      Si aún no ha iniciado sesión, introduzca las credenciales de arrendamiento y usuario.

    2. Revise y acepte las condiciones.
    3. Seleccione la región en la que desea desplegar la pila.
    4. Siga las indicaciones de la pantalla y las instrucciones para crear la pila.
    5. Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
    6. Espere hasta que se termine el trabajo y, a continuación, revise el plan.

      Para realizar cambios, vuelva a la página Detalles de pila, haga clic en Editar pila y realice los cambios necesarios. A continuación, vuelva a ejecutar la acción Plan.

    7. Si no es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
  • Realice el despliegue con el código de Terraform en GitHub:
    1. Vaya a GitHub.
    2. Clone o descargue el repositorio en su equipo local.
    3. Siga las instrucciones del documento README.

Log de Cambios

Este log sólo muestra los cambios significativos: