Orquestando múltiples trabajos concurrentes.
En esta tarea vamos a evaluar de manera general tu habilidad para desarrollar soluciones a problemas no triviales. Es muy importante que utilices todo el tiempo. Cada detalle del que te hagas cargo sumará en tu evaluación.
Al hacer la validación de una empresa en Plutto múltiples procesos (Jobs) son lanzados para obtener información. Cada uno de estos procesos pueden ser consultas a bases de datos, web-scrappers, consultas a apis, etc.
Tu tarea es hacer un sistema que orqueste y ordene la forma en que se corren estos jobs. Se te entregará código con los jobs ya programados y con un endpoint para poder iniciar el proceso de obtención de información.
El endpoint es POST /task_runs
y creará un recurso TaskRun
que por ahora es un modelo que solo tiene dos columnas: started_at
y ended_at
para guardar cuando se inició y terminó un proceso.
Con “un proceso” nos referimos a la ejecución de todos los Jobs en el orden correspondiente y guardando toda la información. Es decir, el flujo es como sigue:
POST
a /task_runs
TaskRun
y se marca a la hora que empezóTaskRun
como terminado (ended_at
) a la hora que el último job termina de correr*