¿Qué es la carga de trabajo?
En informática, una carga de trabajo se refiere a las tareas, procesos o trabajos que ejecuta un sistema, servicio o aplicación. Las cargas de trabajo no se refieren únicamente a las aplicaciones, sino que representan la actividad o la demanda de la infraestructura subyacente.
En el resto de este recurso, exploraremos la diferencia entre cargas de trabajo y aplicaciones, tipos comunes de cargas de trabajo y cómo gestionar, automatizar y proteger las cargas de trabajo en entornos de TI modernos. También destacaremos ejemplos del mundo real para concretar estos conceptos. Continúe leyendo para obtener más información.
.
- Cargas de trabajo frente a aplicaciones
- Tipos de cargas de trabajo
- Ejemplos de cargas de trabajo
- Gestión de la carga de trabajo
- Protección de la carga de trabajo
- Principales conclusiones y recursos adicionales
Cargas de trabajo frente a aplicaciones
A primera vista, las cargas de trabajo y las aplicaciones pueden parecer intercambiables, pero tienen propósitos distintos en el diseño de sistemas. Una aplicación se refiere al software en sí, ya sea una aplicación web, una aplicación móvil o un software de escritorio. La carga de trabajo, sin embargo, es lo que la aplicación exige del sistema subyacente, como unidades centrales de procesamiento (CPU), memoria o espacio en disco.
Piensa en un aplicación de comercio electrónico. La carga de trabajo de la aplicación viene determinada por el número de transacciones (o pedidos) procesados por minuto, los usuarios concurrentes y los procesos backend que gestionan las actualizaciones de inventario, sesiones de usuarioo motores de recomendación. El concepto de la aplicación es estático, pero su carga de trabajo fluctúa en función de la demanda.
Comprender esta diferencia es fundamental a la hora de diseñar sistemas, especialmente para escalabilidad y rendimiento. Aunque la aplicación se haya creado con un número determinado de funciones, su carga de trabajo cambiará a medida que aumente la actividad de los usuarios, se desplieguen nuevas funciones y evolucione la infraestructura.
Tipos de cargas de trabajo
He aquí algunos tipos comunes:
1. Cargas de trabajo transaccionales: Se refiere a sistemas que procesan grandes volúmenes de transaccionescomo bases de datos o plataformas de pago en línea. Estas cargas de trabajo se caracterizan por sus requisitos de baja latencia y alta fiabilidad.
2. Cargas de trabajo por lotes: Estas cargas de trabajo ejecutan una serie de trabajos que pueden ser procesado por lotes. Los pipelines de análisis de datos, los informes nocturnos y los trabajos de extracción, transformación y carga (ETL) son buenos ejemplos de cargas de trabajo por lotes.
3. Cargas de trabajo interactivas: Estas cargas de trabajo implican actividad en tiempo real, como la interacción con los usuarios finales, tanto en aplicaciones web como móviles. Exigen tiempos de respuesta rápidos a las entradas de los usuarios.
4. Cargas de trabajo informáticas intensivas: Se refiere a aplicaciones que requieren una potencia de procesamiento significativa, como el entrenamiento de modelos de aprendizaje automático, el renderizado de vídeo o las simulaciones.
5. Cargas de trabajo intensivas en datos: Los sistemas que deben procesar, almacenar y recuperar cantidades masivas de datos, como las bases de datos a gran escala o los plataformas de big data.
Ejemplos de cargas de trabajo
- Sitios web de comercio electrónico: Esta carga de trabajo implica solicitudes de productos por parte de los usuarios, consultas a la base de datos para obtener detalles de inventario, procesamiento de transacciones de pago y actualizaciones de envío.
- Formación de modelos de aprendizaje automático: Requiere recursos intensivos de CPU o unidad de procesamiento gráfico (GPU) para entrenar modelos en grandes conjuntos de datos. Esto se suele clasificar como carga de trabajo de cálculo intensivo.
- Servicios de streaming: Plataformas como Netflix gestionan cargas de trabajo interactivas en las que el vídeo se transmite a la carta a los usuarios. Se trata de un backend con un uso intensivo de datos que almacena grandes archivos multimedia.
- Detección del fraude en tiempo real: Un caso de uso común para una aplicación financiera implica analizar las transacciones en tiempo real para detectar posibles fraudes - esta carga de trabajo de streaming procesa miles de transacciones por segundo en horas punta.
Gestión de la carga de trabajo
La gestión de la carga de trabajo implica la distribución de tareas dentro de un sistema de recursos disponible, como una CPU, memoria y almacenamiento, para garantizar un rendimiento eficiente. Una gestión adecuada de la carga de trabajo es crucial para que las aplicaciones funcionen con eficiencia y eficacia.
Herramientas como OpenPBS y Slurm permiten gestionar la carga de trabajo en un entorno de clúster, ya que programan tareas y asignan recursos de forma dinámica en los distintos nodos. Estas herramientas optimizan los recursos de hardware programando las cargas de trabajo de modo que los trabajos de alta prioridad reciban recursos y las tareas menos importantes puedan retrasarse o ponerse en cola hasta que los recursos estén disponibles.
Automatización de la carga de trabajo
La gestión escalable de la carga de trabajo requiere automatización. La automatización de la carga de trabajo se refiere al proceso de programar, ejecutar y gestionar automáticamente tareas dentro de una aplicación o sistema. Gracias a su escalabilidad, favorece la optimización de recursos, minimiza el esfuerzo manual y ofrece un rendimiento constante, especialmente en entornos dinámicos.
Conceptos clave de la automatización de la carga de trabajo
- Programación de tareas: La automatización a nivel de sistema operativo suele implicar la programación de tareas. Una vez configurado con reglas, como horas específicas, eventos o umbrales del sistema, puede invocar tareas automáticamente. Ejemplos de automatización sencilla a nivel de sistema operativo son las tareas cron en Linux o un programador de tareas en Windows.
- Escalado de recursos: Las plataformas de automatización como Kubernetes escalan los recursos de forma dinámica en función de la demanda en tiempo real. Por ejemplo, si se produce un pico de usuarios en una aplicación web, Kubernetes desplegará automáticamente nuevas instancias (contenedores) para equilibrar la carga y distribuirla uniformemente.
- Tratamiento de errores: Los sistemas automatizados pueden gestionar los fallos de las tareas. Cuando falla una tarea, las herramientas de automatización pueden reintentarla, registrar un error o provocar una alerta para que se introduzcan datos manualmente. De este modo, el tiempo de inactividad se minimiza y continúa sin interrupciones mientras el sistema hace lo que debe.
- Gestión de la dependencia: Dado que la automatización de la carga de trabajo permite especificar qué tareas dependen de qué, puede asegurarse de que los procesos se ejecutan en la secuencia adecuada. Piense en una cadena de procesamiento de datos en la que los trabajos ETL deben ejecutarse en orden: la extracción debe preceder a la transformación y la carga.
Herramientas para la automatización de la carga de trabajo
1. Kubernetes: Kubernetes, la plataforma líder para la gestión de cargas de trabajo en contenedores, automatiza el despliegue, el escalado y la gestión de aplicaciones en contenedores. Utiliza controladores para supervisar el estado del sistema y ajusta los recursos a la demanda.
2. AWS (Amazon Web Services) Lambda: Plataformas sin servidor como AWS Lambda le permiten ejecutar código en respuesta a eventos sin aprovisionar ni administrar servidores. Este modelo de automatización permite escalar las cargas de trabajo de forma automática y eficiente en respuesta a las interacciones de los usuarios, las tareas programadas u otros desencadenantes.
3. Apache Airflow: Airflow es una popular plataforma de código abierto para la creación programática, la programación y la supervisión de flujos de trabajo. Es especialmente útil para cargas de trabajo por lotes en las que las tareas deben ejecutarse en secuencia o en momentos específicos (por ejemplo, canalizaciones de datos y trabajos ETL).
4. Terraformar: Terraform puede automatizar las cargas de trabajo mediante el aprovisionamiento y la gestión de la infraestructura como código (IaC). Puede integrarse con plataformas como AWS y Google Cloud para automatizar políticas de escalado, aprovisionar servidores y gestionar flujos de trabajo de infraestructura complejos.
Protección de la carga de trabajo
Con la creciente complejidad, las cargas de trabajo son cada vez más vulnerables a las amenazas de seguridad, lo que hace que la protección de las cargas de trabajo sea vital. La protección de las cargas de trabajo implica proteger las aplicaciones, sus datos y la infraestructura que las soporta.
Una estrategia habitual consiste en utilizar modelos de seguridad de confianza cero, en los que cada entidad que interactúa con una carga de trabajo (ya sea usuario o aplicación) se autentica y autoriza antes de acceder a los recursos. Herramientas como Escudo AWS pueden ayudar a proteger las cargas de trabajo frente a ataques de denegación de servicio distribuidos (DDoS), mientras que las soluciones de seguridad de contenedores como Falcon supervisan las cargas de trabajo de Kubernetes en busca de anomalías.
La protección de las cargas de trabajo en la nube (CWP) consiste en supervisar y eliminar continuamente las amenazas de las cargas de trabajo y los contenedores en la nube. Una plataforma CWP (CWPP) es una solución de seguridad que protege cargas de trabajo de todo tipo en cualquier ubicación, ofreciendo una protección unificada de las cargas de trabajo en la nube a través de múltiples proveedores. Los proveedores de nube suelen ofrecer servicios nativos de protección de cargas de trabajo, como cifrado de datos en reposo y en tránsito, gestión de identidades y accesos (IAM) y aislamiento de redes mediante nubes privadas virtuales (VPC).
Principales conclusiones y recursos adicionales
- Carga de trabajo: Se refiere a la demanda de un sistema, mientras que una aplicación es un software.
- Tipos de cargas de trabajo: Varían desde transaccionales e interactivas hasta por lotes, de cálculo intensivo y de datos intensivos. Cada carga de trabajo debe gestionarse en función de las exigencias que se le impongan.
- Gestión de la carga de trabajo: La gestión eficaz de las cargas de trabajo suele estar automatizada. El objetivo es utilizar los recursos en función de las demandas del sistema.
- Proteger la carga de trabajo: La protección frente a las amenazas a la carga de trabajo es importante, y las herramientas nativas de la nube y los modelos de seguridad contribuyen a ello.
También le dejamos algunos recursos adyacentes para ayudar a su empresa a crear y gestionar aplicaciones a escala.
- Arquitectura de alta disponibilidad: Requisitos y mejores prácticas
- ¿Qué es una aplicación distribuida? Definición y ejemplos
Puede visitar nuestro blog y centro de conceptos para obtener más información sobre conceptos relacionados con la carga de trabajo de Couchbase.