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
-
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
backend
process 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,mcq
ordocker-cpp
). The steps are stored as an array in the job in DB.steps
any value that it can handle (any of itsGrading Units
)Grading Unit
, that does its specific jobGrading Units
can 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