Split application into functional parts to ensure that only needed code is loaded with all dependencies
Currently we run GitLab in multiple contexts:
- Web API
- Web ActionCable
- Web Controllers
- Sidekiq (and various different jobs)
- Sidekiq Cluster
Probably this kind of split is hard, but it appears that we could provide a better code architecture that would allow to split on this major line:
- Web: API/ActionCable/Controllers
- Sidekiq/Cluster
For example:
- Web: likely would not require Sidekiq Workers and all dependent services
- Sidekiq: likely would not require any API/ActionCable/Controllers/GraphQL and app dependencies to run
Edited by Craig Gomes