Recomendaciones para desarrollar trabajos en segundo plano
Se aplica a esta recomendación de la lista de verificación de confiabilidad bien diseñada: Power Platform
RE:05 | Fortalezca la resistencia de su carga de trabajo implementando la gestión de errores y de errores transitorios. Incorpore capacidades a la solución para manejar errores de componentes y errores transitorios. |
---|
Esta guía describe las recomendaciones para desarrollar trabajos en segundo plano. Los trabajos en segundo plano se ejecutan automáticamente sin necesidad de interacción del usuario. Muchas aplicaciones requieren trabajos en segundo plano que se ejecuten independientemente de la interfaz de usuario (IU).
Algunos ejemplos de trabajos en segundo plano son los trabajos por lotes, las tareas de procesamiento intensivo y los procesos de larga ejecución, como los flujos de trabajo. La aplicación inicia el trabajo y procesa las solicitudes interactivas de los usuarios.
Por ejemplo, es posible que una aplicación necesite generar un resumen y extraer opiniones y puntos clave de los documentos que cargan los usuarios. Se puede realizar un trabajo en segundo plano para ejecutar las acciones de IA y guardar el resumen y los puntos clave en la base de datos. El usuario no tiene que esperar a que se complete el proceso. Otro ejemplo: un usuario puede enviar una declaración de gastos, lo que inicia un flujo de trabajo en segundo plano que procesa la declaración de gastos y la envía para su aprobación. El usuario puede seguir presentando otra declaración de gastos o abandonar la aplicación mientras se ejecuta el trabajo en segundo plano. Una vez finalizado el trabajo en segundo plano, envía un correo electrónico al usuario para confirmar que la declaración de gastos se ha presentado para su aprobación.
Los trabajos en segundo plano ayudan a minimizar la carga de la interfaz de usuario de la aplicación, lo que mejora la disponibilidad y reduce el tiempo de respuesta interactiva.
Estrategias clave de diseño
Para elegir qué tarea designar como trabajo en segundo plano, tenga en cuenta si la tarea se ejecuta sin interacción del usuario y si la interfaz de usuario necesita esperar a que la tarea finalice. Las tareas que requieren que el usuario o la interfaz de usuario esperen mientras se ejecutan no suelen ser trabajos en segundo plano apropiados.
Tipos de trabajos en segundo plano
Algunos ejemplos de trabajos en segundo plano son:
Trabajos que consumen muchos recursos y tardan mucho tiempo en completarse, como la ejecución de una serie de transacciones.
Trabajos por lotes, como actualizaciones nocturnas de datos o procesamientos programados.
Flujos de trabajo de larga ejecución, como la ejecución de pedidos o los servicios y sistemas de aprovisionamiento.
Flujos de trabajo que requieren una colaboración asincrónica, como las aprobaciones.
Procesamiento de datos confidenciales que transfiere la tarea a un lugar más seguro para su procesamiento. Por ejemplo, es posible que no desee procesar datos confidenciales en una aplicación web. En su lugar, podría usar un patrón como el patrón Gatekeeper para transferir los datos a un proceso aislado en segundo plano que tenga acceso al almacenamiento protegido.
Desencadenadores
Inicie los trabajos en segundo plano con:
Desencadenadores controlados por eventos: un evento, ya sea una acción del usuario en la aplicación o un evento que ocurre contra un origen de datos, desencadena el tarea.
Desencadenadores controlados por programación: una programación que se basa en un temporizador invoca tarea. El trabajo puede programarse de forma periódica o para una sola ejecución.
Desencadenadores basados en eventos personalizados
Una acción desencadena una invocación basada en eventos que inicia la tarea en segundo plano. Algunos ejemplos de desencadenantes basados en eventos incluyen:
La interfaz de usuario o un trabajo diferente desencadena el trabajo en segundo plano y pasa los datos de la acción realizada al trabajo en segundo plano. Por ejemplo, un usuario envía una declaración de gastos a través de un formulario y los detalles del formulario se pasan al trabajo en segundo plano para su procesamiento.
La interfaz de usuario o un trabajo diferente guarda o actualiza un valor que está almacenado. El trabajo en segundo plano supervisa el almacenamiento y detecta cambios, como nuevos valores que se agregan o valores existentes que se modifican, y desencadena el trabajo en segundo plano en función de ese cambio.
La interfaz de usuario o un trabajo diferente realiza una solicitud a un punto de conexión, como un URI HTTPS o una API expuesta como un servicio web. Como parte de la solicitud, la interfaz de usuario o el trabajo transfieren los datos que requiere la tarea en segundo plano. El punto de conexión o servicio web invoca la tarea en segundo plano, que usa los datos como entrada.
Otros ejemplos de activadores controlados por eventos incluyen un formulario que se envía en una aplicación, una nueva fila que se agrega a almacén de datos, un frase desencadenadora en copilot que inicia un tema que llama a un flujo, el valor de un campo que cambia en almacén de datos, un correo electrónico con un asunto específico o de un remitente específico que llega a la bandeja de entrada y un archivo que se carga en una ubicación de almacenamiento de archivos.
Use condiciones de desencadenamiento para agilizar sus flujos de trabajo y reducir el número de ejecuciones innecesarias. Las condiciones de desencadenamiento establecen varias condiciones que deben cumplirse antes de que se desencadene un flujo de trabajo.
Nota
Asegúrese de usar condiciones desencadenantes para evitar bucles sin fin si, como parte del flujo de trabajo, cambia el origen de datos que lo inicia. Por ejemplo, la aplicación podría cambiar los campos de una fila de una tabla de Microsoft Dataverse y el flujo de trabajo realizar consultas adicionales basadas en esos campos cambiados, modificando aún más la misma fila. Use condiciones desencadenantes para iniciar el flujo de trabajo solo cuando se actualicen los campos modificados por la aplicación, pero no cualquier otro campo.
Desencadenadores basados en programación
Un temporizador desencadena una invocación programada que inicia la tarea en segundo plano. Algunos ejemplos de desencadenantes basados en programación incluyen:
Un trabajo en segundo plano se ejecuta diaria o semanalmente y realiza un conjunto de acciones.
Un proceso o aplicación independiente pone en marcha un temporizador que invoca la tarea en segundo plano tras un tiempo de retardo o a una hora determinada.
Otros ejemplos de tareas adecuadas para la invocación basada en la programación son las rutinas de procesamiento por lotes (como la actualización de las listas de productos relacionados para los clientes en función de su comportamiento reciente), las tareas rutinarias de procesamiento de datos (como la generación de resultados acumulados), el análisis de datos para informes diarios, la limpieza de retención de datos y las comprobaciones de coherencia de datos.
Devolver resultados
Los trabajos en segundo plano se ejecutan de forma asincrónica en un proceso independiente de la interfaz de usuario o del proceso que invocó el trabajo en segundo plano. Lo ideal es que los trabajos en segundo plano sean operaciones de activación y olvido. Su progreso en tiempo de ejecución no influye en la interfaz de usuario ni en el proceso de llamada, lo que significa que el proceso de llamada no espera a que se completen las tareas. La interfaz de usuario y el proceso de llamada no pueden detectar cuándo finaliza la tarea.
Si requiere que una tarea en segundo plano se comunique con la tarea de llamada para indicar el progreso o la finalización, debe implementar un mecanismo como:
Escribe un valor indicador de estado en un almacenamiento accesible para la interfaz de usuario o la tarea que llama, que puede supervisar o comprobar este valor. Otros datos que la tarea en segundo plano devuelve al autor de la llamada pueden colocarse en el mismo almacenamiento.
Exponga una API o un punto de conexión de la tarea en segundo plano al que la interfaz de usuario o el autor de la llamada puedan acceder para obtener información sobre el estado. La respuesta puede incluir los datos que la tarea en segundo plano devuelve al autor de la llamada.
Configure la tarea en segundo plano para que responda con el estado o los datos que procesó de vuelta a la interfaz de usuario.
Coordinación
Las tareas en segundo plano pueden ser complejas y requerir la ejecución de varias tareas. En estos escenarios, es habitual dividir la tarea en pasos discretos más pequeños o subtareas que pueden ejecutar varios consumidores. Los trabajos de varios pasos son más eficientes y flexibles porque los pasos individuales suelen ser reutilizables en varios trabajos. También es fácil agregar, quitar o modificar el orden de los pasos.
Puede ser un desafío coordinar múltiples tareas y pasos, pero existen tres patrones comunes que guiarán su solución:
Descomponer un tarea en múltiples pasos reutilizables. Una aplicación puede tener que realizar varias tareas de diferente complejidad sobre la información que procesa. Un enfoque sencillo pero poco flexible para la implementación de una aplicación de este tipo es realizar este procesamiento como un módulo monolítico. Pero es probable que este enfoque reduzca las oportunidades de refactorizar el código, optimizarlo o reutilizarlo si la aplicación requiere partes del mismo procesamiento en otro lugar.
Gestionar la orquestación de los pasos de un tarea. Una aplicación puede realizar tareas que comprenden muchos pasos, algunos de los cuales pueden invocar servicios remotos o acceder a recursos remotos. A veces, los pasos individuales son independientes entre sí, pero están orquestados por la lógica de la aplicación que implementa la tarea.
Administrar la recuperación de los pasos tarea que fallan. Si uno o más de los pasos tienen errores, es posible que una aplicación necesite deshacer el trabajo que realiza una serie de pasos, que en conjunto definen una operación eventualmente coherente.
Consideraciones de resistencia
Cree tareas en segundo plano resistentes para proporcionar servicios fiables para la aplicación. Cuando planifique y diseñe tareas en segundo plano, considere los siguientes puntos:
Las tareas en segundo plano deben manejar los reinicios sin dañar los datos ni introducir incoherencia en la aplicación. Para tareas de larga duración o de varios pasos, considere usar puntos de control. Use puntos de control para guardar el estado de los trabajos en un almacenamiento persistente o como mensajes en una cola y configure la lógica de reintento en caso de errores inesperados de una acción.
Cuando usa colas para comunicarse con tareas en segundo plano, las colas pueden actuar como un búfer para almacenar las solicitudes que se envían a las tareas mientras la aplicación está sometida a una carga superior a la habitual. Las tareas pueden ponerse al día con la interfaz de usuario durante los periodos menos ocupados, y los reinicios no bloquean la interfaz de usuario.
Consideraciones de escalado y rendimiento
Las tareas en segundo plano deben ofrecer un rendimiento suficiente para garantizar que no bloquean la aplicación ni ralentizan el funcionamiento cuando el sistema está bajo carga. Normalmente, el rendimiento mejora cuando se escalan las instancias de proceso que hospedan las tareas en segundo plano. Cuando planifique y diseñe tareas en segundo plano, considere los siguientes puntos relacionados con la escalabilidad y el rendimiento:
Los trabajos en segundo plano pueden afectar a la experiencia del usuario si se le presentan los resultados de las tareas en segundo plano. Por ejemplo, los trabajos en segundo plano pueden requerir que el usuario espere una notificación, actualice la página o compruebe manualmente el estado de la tarea. Estos comportamientos pueden aumentar la complejidad de la interacción con el usuario y afectar negativamente a su experiencia. Considere alternativas para devolver los datos a la interfaz de usuario, como enviar una notificación por correo electrónico o Microsoft Teams, o incluir la posibilidad de consultar las actualizaciones de estado en su interfaz de usuario. En nuestro ejemplo de envío de formularios de gastos, en lugar de devolver el estado a la interfaz de usuario, podría tener una página en la aplicación que enumerara todos los formularios de gastos enviados con su estado y la posibilidad de desencadenar una actualización.
Los trabajos en segundo plano pueden plantear dificultades para la sincronización de datos y la coordinación de procesos, especialmente si las tareas en segundo plano dependen unas de otras o de otros orígenes de datos. Por ejemplo, los trabajos en segundo plano pueden gestionar problemas de coherencia de datos, condiciones de carrera, bloqueos o tiempos de espera agotados.
Para evitar la pérdida de rendimiento bajo carga, podría implementar la lógica de forma que un único punto de la cadena de procesamiento no provoque un cuello de botella. Tenga en cuenta otras limitaciones, como el rendimiento máximo de las acciones del flujo de trabajo, el almacenamiento y otros servicios de los que dependen la aplicación y las tareas en segundo plano.
Compensación: Los trabajos en segundo plano introducen más componentes y dependencias al sistema, lo que puede aumentar la complejidad y los costos de la solución. Por ejemplo, los trabajos en segundo plano podrían requerir un servicio de supervisión y un mecanismo de reintento independientes.
Facilitación de Power Platform
Las siguientes secciones describen los servicios que puede usar para hospedar, ejecutar, configurar y administrar trabajos en segundo plano.
Power Automate
Power Automate Los flujos de nube son flujos de trabajo que se ejecutan en la nube. Pueden ser flujos automatizados desencadenados por un evento, como la llegada de un correo electrónico de una persona concreta. Pueden ser flujos instantáneos que se inician con solo hacer clic en un botón, como un recordatorio a su equipo que envía desde su dispositivo móvil. Pueden ser flujos programados que se ejecutan a una hora determinada, como una carga diaria de datos en SharePoint o en una base de datos. También puede automatizar las tareas repetitivas desde su escritorio o dispositivo móvil.
Familiarícese con los límites de los flujos automatizados, programados e instantáneos con respecto al rendimiento, las solicitudes, la simultaneidad, los bucles y la desfragmentación. Asegúrese de tener en cuenta estos límites al diseñar su flujo de trabajo.
Reduzca el riesgo con la planificación de la gestión de errores.
A continuación se muestran algunos ejemplos de dónde puede utilizar flujos para ejecutar trabajos en segundo plano: Power Automate
Microsoft Dataverse
Microsoft Dataverse columnas calculadas y acumulaciones:
Las columnas de fórmula son columnas que muestran un valor calculado en una Microsoft Dataverse tabla.
Las columnas calculadas automatizan los cálculos manuales usados en el proceso de negocio. Por ejemplo, un comercial puede querer conocer los ingresos ponderados de una oportunidad, que se basan en los ingresos estimados de una oportunidad multiplicados por la probabilidad. O bien, automáticamente desea aplicar un descuento, si un pedido es superior a un determinado importe. Una columna calculada puede contener valores como el resultado de simples operaciones matemáticas u operaciones condicionales, por ejemplo, Mayor que o If-Else.
Las columnas consolidadas ayudan a los usuarios a obtener ideas sobre los datos supervisando indicadores clave de negocio. Una columna consolidada contiene un valor agregado que se calcula a través de las filas que están relacionadas con una fila específica. Esto incluye tablas normales y tablas de actividad, como correos electrónicos y citas. En situaciones más complejos, puede agregar datos a la jerarquía de filas. Como administrador o personalizador, puede definir columnas consolidadas mediante las herramientas de personalización de Power Apps, sin necesidad de escribir código.
Las operaciones en segundo plano pueden enviar solicitudes que Dataverse se procesan de forma asincrónica. Las operaciones en segundo plano son útiles cuando no desea mantener una conexión mientras se ejecuta una solicitud.
Los complementos son controladores de eventos personalizados que se ejecutan en respuesta ante un evento específico generado durante el procesamiento de una operación de datos. Microsoft Dataverse
Microsoft Dataverse también ofrece una solución eficaz para lograr una arquitectura de datos más eficiente y reducir la carga de trabajo del lado del cliente a través de complementos con poco bajo. Estos complementos son flujos de trabajo reutilizables y en tiempo real que ejecutan un conjunto específico de comandos en Dataverse, se ejecutan en el lado del servidor y se activan mediante controladores de eventos personalizados.
Lista de comprobación de fiabilidad
Consulte el conjunto completo de recomendaciones.