01/04/2022, 11:41 AM
It is, although some of them are more "macroservices" because python dependencies can get a little heavyweight with data science and math packages (numpy and scipy are bad enough, but if a developer tries to include torch you're looking at gigabyte-plus packages). So we have an API gateway that drops tasks into a distributed task queue (celery) and a "dispatcher" that handles some serialization and dispatching tasks to hand them off to the right workers, and then some heavyweight workers to actually handle the tasks. Then there is a scheduler which just injects periodic cleanup tasks into the system, a "janitor" which handles some of the cleanup tasks when they're requested, a web service front-end, an admin front-end, a little websocket dingus that handles small bits of plumbing... and by far most of the changes are in the 2-3 heavyweight workers, so our deployment system has been working too hard...