Aplicación informática para controlar la ejecución desatendida de trabajos en segundo plano
Un programador de trabajos es una aplicación informática para controlar la ejecución desatendida de trabajos en segundo plano . [1] Esto comúnmente se denomina 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 en día, automatización de cargas de trabajo ( WLA ). La estructura de datos de los trabajos a ejecutar se conoce como cola de trabajos .
Los programadores de trabajos modernos suelen proporcionar una interfaz gráfica de usuario y un único punto de control para la definición y supervisión de ejecuciones en segundo plano en una red distribuida de computadoras. Cada vez más, se requiere que los programadores de trabajos orquesten la integración de actividades comerciales en tiempo real con el procesamiento de TI tradicional en segundo plano en diferentes plataformas de sistemas operativos y entornos de aplicaciones comerciales.
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 que se esperan del software de programación de trabajos incluyen:
- Interfaces que ayudan a definir flujos de trabajo y/o dependencias de trabajo.
- envío automático de ejecuciones
- Interfaces para monitorear las ejecuciones.
- Prioridades y/o colas para controlar el orden de ejecución de trabajos no relacionados.
Si el software de un área completamente diferente incluye todas o algunas de esas características, se puede considerar que este software tiene capacidades de programación de trabajos.
La mayoría de los sistemas operativos , como Unix y Windows , proporcionan capacidades básicas de programación de trabajos, en particular mediante at y por lotes , cron y el Programador de tareas de Windows . Los servicios de alojamiento web brindan capacidades de programación de trabajos a través de un panel de control o una solución webcron . Muchos programas como DBMS , respaldo , ERP y BPM también incluyen capacidades relevantes de programación de trabajos. La programación de trabajos proporcionada por el sistema operativo ("SO") o el programa puntual generalmente no brindará la capacidad de programar más allá de una sola instancia del sistema operativo o fuera del alcance del programa específico. Las organizaciones que necesitan automatizar cargas de trabajo de TI no relacionadas también pueden aprovechar funciones avanzadas de un programador de trabajos, como:
- Programación en tiempo real basada en eventos externos e impredecibles.
- reinicio automático y recuperación en caso de fallas
- Alertar y notificar al personal de operaciones.
- generación de informes de incidentes
- pistas de auditoría para fines de cumplimiento normativo
Estas capacidades avanzadas pueden ser desarrolladas por desarrolladores internos, pero con mayor frecuencia las proporcionan proveedores que se especializan en software de administració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 un único sistema operativo, 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 trabajos. El software de programación de trabajos se instala en una sola máquina (Maestro), mientras que en las máquinas de producción solo se instala un componente muy pequeño (Agente) que espera comandos del Maestro, los ejecuta y luego devuelve el código de salida al Maestro.
- Arquitectura cooperativa: un modelo descentralizado en el que cada máquina es capaz de ayudar con la programación y puede descargar trabajos programados localmente a otras máquinas que cooperan. Esto permite el equilibrio dinámico de la carga de trabajo para maximizar la utilización de los recursos de hardware y la alta disponibilidad para garantizar la prestación del servicio.
Historia
La programación de trabajos tiene una larga historia. Los programadores de trabajos 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 sobre los Job Schedulers:
- La era de la computadora central
- Lenguaje de control de trabajos (JCL) en mainframes IBM . Inicialmente basada en la funcionalidad JCL para manejar dependencias, esta era se caracteriza por el desarrollo de sofisticadas soluciones de programación (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 lote , la necesidad de programadores de trabajos estándar de mainframe ha aumentado con la mayor adopción de entornos informáticos distribuidos.
En cuanto al tipo de programación también se distinguen épocas:
- Procesamiento por lotes : la ejecución tradicional basada en fecha y hora de tareas en segundo plano según un período definido durante el cual los recursos estuvieron disponibles para el procesamiento por lotes (la ventana por lotes ). De hecho, el enfoque original de mainframe se transpuso al entorno de sistemas abiertos.
- Automatización de procesos impulsada por 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 un stock). actualización desde una sucursal de la tienda), o porque no hay ventana de lote o 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. .
Planificación
Se utilizan varios esquemas para decidir qué trabajo en particular ejecutar. Los parámetros que podrían considerarse incluyen:
- Prioridad laboral
- Calcular la disponibilidad de recursos
- 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
Ver también
Referencias
- ^ Efecto de las características del tamaño del trabajo en el rendimiento de la programación del trabajo