Flujo de datos de IoT a Autonomous Database mediante funciones sin servidor
Las cargas de trabajo que aprovechan los dispositivos de Internet of Things (IoT) necesitan escalarse de manera eficiente en tiempo real. A medida que se despliegan más dispositivos y sensores, el volumen y la variedad de datos transmitidos crecerán. Utilice funciones sin servidor y una base de datos autónoma en Oracle Cloud para automatizar y ampliar el procesamiento de datos de IoT transmitidos.
Arquitectura
En esta arquitectura, los datos de dispositivos IoT entran a través de un gateway de API a funciones sin servidor, que utilizan el servicio Streaming para cargar los datos en una base de datos autónoma en Oracle Cloud. Los usuarios fuera de la nube pueden acceder a los datos mediante un servidor web basado en Flasks que se ejecuta en una instancia de Oracle Cloud Infrastructure Compute.
El siguiente diagrama ilustra esta arquitectura.
oci-arch-iot-streaming-oracle.zip
La arquitectura 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 grandes distancias pueden separarlas (entre países o incluso continentes).
- Red virtual en la nube (VCN) y subredes
VCN es una red personalizable definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes tradicionales de centros de datos, las VCN le proporcionan un control completo sobre su entorno de red. VCN puede tener varios bloques CIDR no superpuestos que puede cambiar después de crear VCN. Puede segmentar VCN en subredes, que se pueden asignar a una región o a un dominio de disponibilidad. Cada subred consta de un rango contiguo de direcciones que no se superponen 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.
En esta arquitectura, la base de datos autónoma y una función para configurar la base de datos están conectadas a una subred privada. La instancia de cálculo que aloja el servidor web y las funciones que procesan los flujos se despliegan en una subred pública.
- Grupos de seguridad de red (NSG)
Los NSG actúan como firewalls virtuales para sus recursos en la nube. Con el modelo de seguridad de confianza cero de Oracle Cloud Infrastructure, se niega todo el tráfico y puede controlar el tráfico de red dentro de VCN. Un NSG consta de un juego de reglas de seguridad de entrada y salida que se aplican solo a un juego especificado de VNIC en una única VCN.
El acceso a la base de datos y al servidor web de esta arquitectura se controla mediante NSG independientes.
- Gateway de API
Oracle API Gateway permite publicar API con puntos finales privados accesibles desde la red y que se pueden exponer en la red pública de Internet si es necesario. Los puntos finales soportan la validación de API, la transformación de solicitud y respuesta, CORS, la autenticación y autorización, y la limitación de solicitudes.
- Flujo
Oracle Cloud Infrastructure Streaming proporciona una solución de almacenamiento totalmente gestionada, escalable y duradera para ingerir flujos de datos continuos y de gran volumen que puede consumir y procesar en tiempo real. Puede utilizar Streaming para ingerir datos de gran volumen, como registros de aplicaciones, telemetría operativa, datos de flujo de clics web o para otros casos de uso en los que los datos se producen y procesan de forma continua y secuencial en un modelo de mensajería de suscripción de publicación.
- Funciones
Oracle Functions es una plataforma de funciones como servicio (FaaS) totalmente gestionada, multi-inquilino, altamente escalable y bajo demanda. Se basa en el motor de origen abierto Fn Project. Las funciones permiten desplegar el código y llamarlo directamente o dispararlo en respuesta a eventos. Oracle Functions utiliza los contenedores de Docker alojados en Oracle Cloud Infrastructure Registry.
- Base de datos autónoma
Esta arquitectura utiliza una base de datos autónoma (Oracle Autonomous Data Warehouse u Oracle Autonomous Transaction Processing) con un punto final privado.
Oracle Autonomous Data Warehouse es un servicio de base de datos autogestionable, autoseguro y autoreparador optimizado para cargas de trabajo de almacenamiento de datos. No necesita configurar ni administrar ningún hardware, ni instalar ningún software. Oracle Cloud Infrastructure maneja la creación de la base de datos, así como la copia de seguridad, aplicación de parches, actualización y ajuste de la base de datos.
Oracle Autonomous Transaction Processing es un servicio de base de datos autogestionable, autoseguro y autoreparador que se optimiza para procesar cargas de trabajo de transacciones. No necesita configurar ni administrar ningún hardware, ni instalar ningún software. Oracle Cloud Infrastructure maneja la creación de la base de datos, así como la copia de seguridad, aplicación de parches, actualización y ajuste de la base de datos.
- Servidor web
En esta arquitectura, se despliega un punto final de micromarco de Flask en una instancia informática. La aplicación basada en Flask puede exponer los datos de la base de datos autónoma como contenido web dinámico.
Recomendaciones
Utilice las siguientes recomendaciones como punto de partida. Sus requisitos pueden diferir.
- Tamaño de VCN
Al crear un 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 tiene previsto asociar a subredes en VCN. Utilice bloques CIDR que estén dentro del espacio de direcciones IP privadas estándar.
Seleccione bloques CIDR que no se superpongan con ninguna otra red (en Oracle Cloud Infrastructure, el centro de datos local u otro proveedor de nube) a la que desea configurar conexiones privadas.
Después de crear un VCN, puede cambiar, agregar y eliminar sus bloques CIDR.
- Unidades de computación
En esta arquitectura, se utiliza una imagen Oracle Linux 7.8 y la unidad VM.Standard2.1 para el servidor web basado en flash. Seleccione una forma adecuada para las necesidades de recursos de la aplicación.
- Funciones de gateway de API
Los puntos finales de gateway de API admiten validación de API, transformación de solicitudes y respuestas, CORS, autenticación y autorización y limitación de solicitudes. Elija las características que se adapten a sus necesidades de negocio y TI.
- Partición de flujo
El servicio Streaming le proporciona un registro de mensajes particionados y de sólo agregación: un flujo. Una partición es una sección de un flujo. Las particiones permiten distribuir un flujo dividiendo mensajes en varios nodos. Puede colocar cada partición en una máquina diferente para permitir que varios consumidores lean de un flujo en paralelo. Para cargas de trabajo grandes e intensivas en informática, considere aumentar el número de particiones.
- Versión de base de datos autónoma
Utilice la última versión disponible para la base de datos autónoma.
Consideraciones
Al implementar esta arquitectura, tenga en cuenta los requisitos para los siguientes parámetros:
- Reducción de solicitudes
Después de crear el gateway de API y desplegar una o varias API, puede que desee limitar el ratio al que los clientes front-end pueden enviar solicitudes a servicios backend. Decida el límite de tasa de solicitud en función de su requisito para mantener una alta disponibilidad y un uso justo protegiendo los recursos de backend de ser abrumados por demasiadas solicitudes. También puede que necesite evitar ataques de denegación de servicio (DoS) o controlar y limitar el consumo de recursos. En última instancia, aplica un límite de tarifa global a todas las rutas de una especificación de despliegue de API.
- Límites de servicio
Al diseñar la arquitectura, tenga en cuenta los límites de servicio para los servicios Streaming y Functions. Consulte la documentación de Límites de servicio que se muestra en la sección Explorar más.
- Escalabilidad
- Base de Datos
Puede escalar manualmente el número de núcleos de CPU de la base de datos hacia arriba o hacia abajo en cualquier momento. La función de calibración automática de bases de datos autónomas permite a la base de datos utilizar hasta tres veces el número base actual de núcleos de CPU en cualquier momento. A medida que aumenta la demanda, el ajuste automático aumenta automáticamente el número de núcleos en uso. Las bases de datos autónomas le permiten escalar la capacidad de almacenamiento en cualquier momento sin afectar la disponibilidad ni el rendimiento.
- Aplicación
Puede escalar la aplicación Flask mediante el pool de instancias y las funciones de ajuste automático.
Los pools de instancias permiten aprovisionar y crear varias instancias de cálculo basadas en la misma configuración dentro de la misma región.
Utilice la escala automática para ajustar automáticamente el número de instancias de Compue en un grupo de instancias en función de las métricas de rendimiento, como la utilización de la CPU. La escala automática le ayuda a proporcionar un rendimiento constante para los usuarios durante períodos de alta demanda y a reducir sus costos cuando la demanda es baja.
- Funciones
Oracle Functions crea y elimina contenedores de funciones automáticamente en función de la carga de la solicitud. Solo paga cuando se invocan las funciones y durante la duración de su ejecución.
- Base de Datos
- Disponibilidad de la aplicación
Los dominios de fallos proporcionan la mejor resiliencia en un dominio de disponibilidad. Si necesita una mayor disponibilidad, considere la posibilidad de utilizar varios dominios de disponibilidad o varias regiones cuando sea posible.
- Copias de Seguridad
- Base de Datos
Oracle Cloud Infrastructure realiza copias de seguridad automáticamente de las bases de datos autónomas y conserva las copias de seguridad durante 60 días. Puede restaurar y recuperar la base de datos en cualquier momento durante el período de retención. También puede crear copias de seguridad manuales para complementar las copias de seguridad automáticas. Las copias de seguridad manuales se almacenan en un cubo de Oracle Cloud Infrastructure Object Storage que se crea y se conservan durante 60 días.
- Aplicación
El servicio Oracle Cloud Infrastructure Block Volumes permite crear copias de seguridad puntuales de datos en un volumen en bloque. Puede restaurar estas copias de seguridad en nuevos volúmenes en cualquier momento.
También puede utilizar el servicio para realizar una copia de seguridad puntual y resistente a fallos de un volumen de inicio sin interrupción ni tiempo de inactividad de la aplicación. Los volúmenes de inicio y de bloque tienen las mismas capacidades de copia de seguridad.
- Base de Datos
- Seguridad
- Control de acceso
Utilice políticas para restringir quién puede acceder a sus recursos en la nube y las acciones que pueden realizar.
- Seguridad de red
El servicio de Networking ofrece dos funciones de firewall virtual que utilizan reglas de seguridad para controlar el tráfico en el nivel de paquetes: listas de seguridad y grupos de seguridad de red (NSG). Un NSG está formado por un conjunto de reglas de seguridad de entrada y salida que se aplican sólo a un conjunto de VNIC que se pueden elegir en una única VCN. Por ejemplo, puede elegir todas las instancias de cálculo que actúan como servidores web en la capa web de una aplicación de varios niveles en VCN.
Las reglas de seguridad NSG funcionan igual que las reglas de lista de seguridad. Sin embargo, para el origen o destino de una regla de seguridad NSG, puede especificar un NSG en lugar de un bloque CIDR. Por lo tanto, puede escribir fácilmente reglas de seguridad para controlar el tráfico entre dos NSG en la misma VCN o el tráfico dentro de un único NSG. Al crear un sistema de base de datos, puede especificar uno o más NSG. También puede actualizar un sistema de base de datos existente para utilizar uno o más NSG.
- Control de acceso
Desplegar
El código Terraform para esta arquitectura de referencia está disponible en GitHub. Puede extraer el código a Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarlo. También puede descargar el código de GitHub en el equipo, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.
- Desplegar mediante Oracle Cloud Infrastructure Resource Manager:
- Haga clic en
Si aún no está conectado, introduzca las credenciales de arrendamiento y usuario.
- Revise y acepte los términos y condiciones.
- Seleccione la región en la que desea desplegar la pila.
- Siga las instrucciones y peticiones de datos en pantalla para crear la pila.
- Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
- Espere a que se complete el trabajo y revise el plan.
Para realizar cualquier cambio, 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.
- Si no son necesarios otros cambios, vuelva a la página Detalles de Pila, haga clic en Acciones de Terraform y seleccione Aplicar.
- Haga clic en
- Despliegue mediante la CLI de Terraform:
- Vaya a GitHub.
- Descargue o clone el código en su computadora local.
- Siga las instrucciones de README.
Explorar más
Obtenga más información sobre el uso de funciones sin servidor para sus cargas de trabajo en la nube.
Log de cambios
Este log muestra solo los cambios significativos:
2 de agosto de 2022 | Se han agregado recursos adicionales a la sección Explorar más. |
19 de noviembre de 2021 | Se ha agregado la opción para descargar versiones editables (.SVG y .E/S) del diagrama de arquitectura. |
4 de febrero de 2021 | Se agregó información sobre las funciones de escalado en la sección Consideraciones. |
24 de noviembre de 2020 |
|