1. A method of performing a computing task separated into work units using a set of workers, comprising: receiving the work units into a queue from a plurality of services, wherein each of the services provides interfaces associated with the work units regarding the work units and work unit context expressing dependencies between work units; arranging the work units in the queue into a directed acyclic graph representing execution priorities between the work units based on the interfaces regarding the work units and the work unit context and allowing parallelism between unrelated work units; allowing the workers to independently query the directed acyclic graph for work units including execution dependencies having a work unit on which another work unit depends that are ready for execution based upon the directed acyclic graph, the workers are decentralized so as to be independent of a head node structure; allowing a worker of the plurality of workers to steal and execute a work unit ready for execution such that other workers of the plurality of workers are unaware of the execution of the work unit on the worker; setting a flag to indicate the stolen work unit as taken in the queue; removing the flag and the stolen work unit from the queue after the stolen work unit is acceptably executed; and altering the directed acyclic graph when the work unit on which the another work unit depends is incorrectly executed so that the work unit on which the another work unit depends is rescheduled for execution.