About a new backend infrastructure... #598
GuillaumeDerval
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Introduction
This issue is actually not one, it's rather a requirement list for a new "backend infrastructure".
The current infrastructure currently suffers from a few problems/limitations. The most problematic ones:
inginious-backend, which is mostly a queue that can handle the various requirements and specifities of our agents) is a SPOFRequirements of a new infra
Mandatory
(what about fairness and starvation? from an agent perspective, that's not too worrying).
Nice to have
An example of possible infrastructure
A proposal I explored 2 years is to remove the
backendprocess and replace it by MongoDB, that would handle the queue. The frontend and the agent would connect to MongoDB and push/pull information about jobs to do/done directly.The work I did is here: https://github.com/UCL-INGI/INGInious/tree/backend_free_arch/inginious/new_agent
The idea is a follows:
Grading Units(that we currently call "environments")steps. A step is the name of aGrading Unit(for example,mcqordocker-cpp). The steps are stored as an array in the job in DB.stepsany value that it can handle (any of itsGrading Units)Grading Unit, that does its specific jobGrading Unitscan send messages to frontends using that same collection.This infrastructure has multiple advantages. It is elegant: agents are highly decorelated from
Grading Units, and thus the creation of specific new grading units is super easy (creating a peer-review grading unit would take something like 5 lines of code once the user-facing interface is done). It respects most of the requirements, but two:Another possibility
Our friends at Domjudge actually have the agents (the "judges") pull periodically by HTTP(S) on the frontend to ask for work. It complicates a bit real-time communication between frontends and agents, but it may work well too.
Beta Was this translation helpful? Give feedback.
All reactions