Aplicación informática para controlar la ejecución de trabajos en segundo plano sin supervisión
Un programador de trabajos es una aplicación informática para controlar la ejecución de trabajos en segundo plano sin supervisión . [1] Esto se denomina comúnmente programación por lotes , ya que la ejecución de trabajos no interactivos a menudo se denomina procesamiento por lotes , aunque el trabajo tradicional y el lote se distinguen y contrastan; consulte esa página para obtener más detalles. Otros sinónimos incluyen sistema por lotes , sistema de gestión de recursos distribuidos ( DRMS ), administrador de recursos distribuidos ( DRM ) y, comúnmente hoy, automatización de carga de trabajo ( WLA ). La estructura de datos de los trabajos a ejecutar se conoce como cola de trabajos .
Los programadores de tareas modernos suelen proporcionar una interfaz gráfica de usuario y un único punto de control para la definición y el control de las ejecuciones en segundo plano en una red distribuida de ordenadores. Cada vez más, se necesitan programadores de tareas para orquestar la integración de las actividades empresariales en tiempo real con el procesamiento tradicional de TI en segundo plano en diferentes plataformas de sistemas operativos y entornos de aplicaciones empresariales.
La programación de trabajos no debe confundirse con la programación de procesos , que es la asignación de procesos actualmente en ejecución a las CPU por parte del sistema operativo .
Descripción general
Las características básicas esperadas del software de programación de tareas incluyen:
- Interfaces que ayudan a definir flujos de trabajo y/o dependencias de trabajos.
- presentación automática de ejecuciones
- Interfaces para monitorear las ejecuciones
- prioridades y/o colas para controlar el orden de ejecución de trabajos no relacionados
Si un software de un área completamente diferente incluye todas o algunas de esas características, se puede considerar que dicho software tiene capacidades de programación de tareas.
La mayoría de los sistemas operativos , como Unix y Windows , proporcionan capacidades básicas de programación de tareas, en particular mediante at y batch , cron y el Programador de tareas de Windows . Los servicios de alojamiento web proporcionan capacidades de programación de tareas a través de un panel de control o una solución webcron . Muchos programas, como DBMS , backup , ERP y BPM , también incluyen capacidades de programación de tareas relevantes. La programación de tareas proporcionada por el sistema operativo ("OS") o el programa puntual normalmente no proporcionará la capacidad de programar más allá de una única instancia del SO o fuera del alcance del programa específico. Las organizaciones que necesitan automatizar la carga de trabajo de TI no relacionada también pueden aprovechar otras funciones avanzadas de un programador de tareas, como:
- Programación en tiempo real basada en eventos externos impredecibles
- Reinicio automático y recuperación en caso de fallos.
- Alerta y notificación al personal de operaciones
- Generación de informes de incidentes
- registros de auditoría para fines de cumplimiento normativo
Estas capacidades avanzadas pueden ser escritas por desarrolladores internos, pero más a menudo son proporcionadas por proveedores que se especializan en software de gestión de sistemas .
Conceptos principales
Hay muchos conceptos que son fundamentales para casi todas las implementaciones de programadores de trabajos y que son ampliamente reconocidos con variaciones mínimas: trabajos, dependencias, flujos de trabajos y usuarios.
Más allá de las herramientas básicas de programación de instancias de sistema operativo único, existen dos arquitecturas principales para el software de programación de trabajos.
- Arquitectura maestro/agente: la arquitectura histórica del software de programación de tareas. El software de programación de tareas se instala en una sola máquina (maestra), mientras que en las máquinas de producción solo se instala un componente muy pequeño (agente) que espera los comandos de la maestra, los ejecuta y luego devuelve el código de salida a la maestra.
- Arquitectura cooperativa: un modelo descentralizado en el que cada máquina puede ayudar con la programación y puede transferir tareas programadas localmente a otras máquinas que cooperan. Esto permite un equilibrio dinámico de la carga de trabajo para maximizar la utilización de los recursos de hardware y una alta disponibilidad para garantizar la prestación del servicio.
Historia
La programación de tareas tiene una larga historia. Los programadores de tareas han sido uno de los principales componentes de la infraestructura de TI desde los primeros sistemas mainframe. Al principio, se procesaban pilas de tarjetas perforadas una tras otra, de ahí el término " procesamiento por lotes ".
Desde un punto de vista histórico, podemos distinguir dos épocas principales en lo que respecta a los Programadores de Trabajo:
- La era del mainframe
- Lenguaje de control de trabajos (JCL) en mainframes de IBM . Inicialmente basado en la funcionalidad JCL para manejar dependencias, esta era se caracteriza por el desarrollo de soluciones de programación sofisticadas (como Job Entry Subsystem 2/3 ) que forman parte del conjunto de herramientas de automatización y administración de sistemas en el mainframe.
- La era de los sistemas abiertos
- Programadores modernos en una variedad de arquitecturas y sistemas operativos. Con herramientas de programación estándar limitadas a comandos como at y batch , la necesidad de programadores de tareas estándar para mainframes ha crecido con la creciente adopción de entornos informáticos distribuidos.
En cuanto al tipo de programación también hay épocas diferenciadas:
- Procesamiento por lotes : la ejecución tradicional de tareas en segundo plano, basada en fecha y hora, en un período definido durante el cual los recursos estaban disponibles para el procesamiento por lotes (la ventana de lotes ). En efecto, el enfoque original del mainframe se transpuso al entorno de sistemas abiertos.
- Automatización de procesos basada en eventos: donde los procesos en segundo plano no se pueden ejecutar simplemente en un momento definido, ya sea porque la naturaleza del negocio exige que la carga de trabajo se base en la ocurrencia de eventos externos (como la llegada de un pedido de un cliente o una actualización de stock de una sucursal de la tienda), o porque no hay una ventana de lote o esta es insuficiente.
- Programación de trabajos orientada a servicios: los desarrollos recientes en la arquitectura orientada a servicios (SOA) han visto un movimiento hacia la implementación de la programación de trabajos como un servicio de infraestructura de TI reutilizable que puede desempeñar un papel en la integración de la carga de trabajo de aplicaciones comerciales existentes con nuevas aplicaciones en tiempo real basadas en servicios web .
Programación
Se utilizan varios esquemas para decidir qué trabajo en particular se debe ejecutar. Los parámetros que se pueden considerar incluyen:
- Prioridad laboral
- Disponibilidad de recursos computacionales
- Clave de licencia si el trabajo utiliza software con licencia
- Tiempo de ejecución asignado al usuario
- Número de trabajos simultáneos permitidos para un usuario
- Tiempo estimado de ejecución
- Tiempo de ejecución transcurrido
- Disponibilidad de dispositivos periféricos
- Ocurrencia de eventos prescritos
- Dependencia laboral
- Dependencia de archivos
- Dependencia del mensaje del operador
Véase también
Referencias
- ^ Efecto de las características del tamaño del trabajo en el desempeño de la programación de tareas