Open mhauru opened 7 months ago
The minimal version of this now exists: On the front end you can create a service, give it a JSON payload, and click "Run". One can also see a history of runs and the responses to their HTTP queries.
Missing are:
BaseService
makes doing those calls easy though. Ideally we would have for instance ways of seeing whether a service has finished running, and having the outputs data in the database linked to the service run.BaseService
makes doing those calls easyish though.
We had a chat on 2024-01-11 about what the user experience would be like for configuring models. It also seemed like running ingress, and maybe some other things as well, would benefit from similar user actions being available, so we are more broadly calling these things services, as Pat suggested already months ago.
The simplest version we would go and implement would look like this:
In general, a service is a URL to which the backend sends a request to do a thing, together with arguments. The service then either returns something useful over HTTP, or in turn calls some backend end points to e.g. insert data.
In the first instance all our services will probably be Azure functions, and the scheduling mechanism can start out being bespoke for them.
In the future we might also directly display the output of a service run on the service page. In the first version you'll have to navigate elsewhere on the site to see the outcome, e.g. new data or model results. We might also later add a prettier version to set service arguments, prettier than a pure JSON block.
For the backend side of this, I think each service would need to have in the database at least
I'm a bit unclear still on how the backend will make sure that the services actually get run on time. Do we run something like cron internally? For now might be good enough to set some parameters on Azure function apps.