Optimice los flujos de trabajo asíncronos integrando la cola de OCI con funciones de OCI
El servicio de cola de Oracle Cloud Infrastructure (OCI) permite enviar mensajes entre sistemas de forma asíncrona, lo que le permite disociar sus sistemas y mejorar su rendimiento. Está diseñado para manejar grandes volúmenes de datos transaccionales y garantiza que los mensajes se procesen sin pérdida ni duplicación.
El servicio de cola de OCI se gestiona por completo y se amplía automáticamente en función del rendimiento de los productores y consumidores, mediante estándares abiertos para permitir la comunicación con cualquier cliente o productor con un mínimo esfuerzo. Las aplicaciones sin servidor suelen depender de una combinación de varios servicios (gateway de API, funciones, etc.) para funcionar correctamente. Sin embargo, para que estos componentes distribuidos se comuniquen entre sí, el servicio Queue es crucial. También permite a la aplicación ampliar la comunicación a otros componentes de OCI o incluso fuera de OCI.
Arquitectura
Esta arquitectura de referencia despliega una aplicación Python de ejemplo en Oracle Container Engine for Kubernetes (OKE), que sondea regularmente la cola configurada para recuperar nuevos mensajes, llama a una función configurada mediante mensajes recuperados y, si se ejecuta correctamente, elimina los mensajes de la cola.
La aplicación se autentica como instance_principal cuando interactúa con los servicios de OCI. La cola y las funciones pueden estar en cualquier región, y los OCID de cola y función se deben especificar durante la creación de la pila. Si es necesario actualizar los OCID de cola y función después del despliegue de Terraform, puede editar el artefacto de despliegue de Kubernetes (parte del proyecto DevOps de OCI creado).
El despliegue de Terraform incluye la creación de los pipelines y repositorios necesarios en un servicio DevOps de OCI para automatizar los pasos necesarios para llevar el código fuente de la aplicación a la producción. El código fuente de la aplicación se aloja en un repositorio de código DevOps. A continuación, el usuario puede confirmar el código en el repositorio, que dispara el inicio de un pipeline de compilación.
En el siguiente diagrama se ilustra esta arquitectura de referencia.
Queue-fn-automation-arch: 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).
- Proyecto de DevOps
Agrupación lógica de recursos de DevOps necesarios para implantar un flujo de trabajo de integración y despliegue continuos. Los recursos de DevOps pueden ser artefactos, pipelines de compilación, pipelines de despliegue, conexiones externas, disparadores y entornos. Los proyectos DevOps facilitan el registro, la supervisión y las notificaciones de todos los recursos DevOps.
- Pipeline de compilación
Un pipeline de compilación toma un ID de confirmación de los repositorios de código fuente y utiliza ese código fuente para ejecutar las instrucciones de compilación. Los pipelines de creación definen un juego de etapas para el proceso de creación: crear, probar y compilar artefactos de software, entregar artefactos a repositorios de OCI y, opcionalmente, disparar un despliegue. Puede definir el flujo y las instrucciones de la ejecución de compilación en el archivo de especificaciones de compilación.
- Repositorio de código
Repositorios de Git privados alojados por el servicio DevOps. Puede almacenar, gestionar y desarrollar código fuente con repositorios de código DevOps de OCI.
- Pipeline de despliegue
Secuencia de pasos para entregar y desplegar un juego de artefactos en un entorno de destino. El flujo y la lógica de su versión de software se pueden controlar mediante la definición de etapas que se pueden ejecutar en serie o en paralelo.
- Etapas de despliegueLas etapas son acciones individuales que se realizan durante una ejecución de un pipeline. El pipeline de despliegue DevOps incluye los siguientes tipos de etapa predefinidos que puede utilizar en el proceso de versiones:
- Despliegue sucesivo: una versión incremental para OKE, Functions o grupos de instancias.
- Espera: Espere N segundos.
- Aprobación manual: continúe si se proporciona la aprobación; deténgase si se rechaza la aprobación.
- Llamar a función: realice tareas o integraciones personalizadas llamando a una función y transfiriendo un artefacto de parámetros de solicitud.
- Artefacto DevOps
Un artefacto DevOps es una referencia o puntero a cualquier archivo, binario, paquete, manifiesto o imagen que compone la aplicación. Al crear un artefacto, informe a Oracle DevOps de la ubicación de origen del artefacto real. DevOps soporta repositorios de OCI Container Image Registry y OCI Artifact Registry.
- Servicios de registro y notificación de OCI
El servicio OCI Logging almacena logs relacionados con el despliegue. La salida de tiempo de ejecución de despliegue y los resultados finales del despliegue se muestran como entradas de log. El servicio de notificaciones de OCI proporciona visibilidad del último estado del proyecto de despliegue y sus recursos, y toma las medidas necesarias. Por ejemplo, se le notifica cuando se produce un evento importante, como una etapa de un pipeline de despliegue en espera de aprobación. Cuando reciba el mensaje de notificación, puede ir al pipeline de despliegue DevOps y aprobar la etapa.
- Entornos de despliegue
Un entorno es una recopilación de recursos informáticos de un cliente en la que se despliegan artefactos. Los entornos pueden ser una función, una máquina virtual informática (VM) o una instancia con hardware dedicado, o un cluster de OKE.
- Cluster de OKE: OCI Container Engine for Kubernetes es un servicio totalmente gestionado, escalable y de alta disponibilidad que puede utilizar para desplegar sus aplicaciones en contenedores en la nube.
- Instancias informáticas: el servicio OCI Compute permite aprovisionar y gestionar hosts informáticos en la nube. Puede desplegar instancias informáticas con unidades que cumplan los requisitos de recursos de CPU, memoria, ancho de banda de red y almacenamiento.
- Funciones: Oracle Functions es una plataforma de funciones como servicio totalmente gestionada, multi-inquilino, altamente escalable y bajo demanda. El servicio se basa en Oracle Cloud Infrastructure para empresas y cuenta con la tecnología del motor de código abierto Fn Project.
Los entornos pueden estar en diferentes regiones de OCI de la región del pipeline de despliegue. Esta separación permite a los desarrolladores desplegar en varias regiones de OCI utilizando el mismo pipeline de despliegue.
- Políticas y grupos dinámicos de IAM
Un grupo dinámico es un tipo especial de grupo que contiene recursos (como instancias informáticas) que coinciden con las reglas que defina (por lo tanto, los miembros pueden cambiar dinámicamente a medida que se crean o suprimen recursos coincidentes). Estas instancias actúan como actores "principales" y pueden realizar llamadas de API a servicios según las políticas que escriba para el grupo dinámico.
Una política es un documento que especifica quién puede acceder a qué recursos y cómo. El acceso se otorga en el nivel de grupo y el nivel de compartimento, lo que significa que puede escribir una política que proporcione a un grupo un tipo específico de acceso dentro de un compartimento específico o al propio arrendamiento.
Recomendaciones
- Despliegue
Al desplegar la arquitectura mediante Resource Manager, mantenga los valores por defecto tanto como sea posible si no se requiere ningún cambio explícito.
Consideraciones
Al desplegar la solución y utilizar la aplicación, tenga en cuenta los siguientes aspectos:
- Despliegue de la solución
Se necesitan privilegios administrativos para configurar los grupos dinámicos necesarios y las políticas asociadas. El nombre de usuario y el token de autenticación de OCI son necesarios para la autorización en el repositorio de Git DevOps de OCI y la configuración de secretos en OKE.
- Uso de la aplicación
El ajuste de los parámetros de la aplicación Python se puede manejar en el proyecto DevOps creado modificando las variables al principio del programa
queue_automation.pyy configurando el secreto de OCIR en OKE.
Desplegar
El código de Terraform para este despliegue, junto con el código fuente de la aplicación Python, están disponibles en GitHub.
- Haga clic en

Si aún no ha iniciado sesión, introduzca el arrendamiento y las credenciales de usuario.
- Seleccione la región en la que desea desplegar la pila.
- Siga las indicaciones y las instrucciones en pantalla para crear la pila.
- Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
- Espere a que el trabajo se complete y 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.
- 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.
