PoC Cell Routing Technology
Description
The routing layer is meant to offer a consistent user experience where all Cells are presented under a single domain (for example, gitlab.com), instead of navigating to separate domains.
We need to decide what technology the routing service is written in. The choice depends on the best-performing language and the routing layer's expected way and place of deployment. If it is required to make the service multi-cloud, it might be necessary to deploy it to the CDN provider. Then, the service needs to be written using a technology compatible with the CDN provider.
We also have a PoC from @andrewn https://gitlab.com/andrewn/stateless-router, see #408507 (comment 1379811355) from more context.
As an outcome of this issue, we expect:
- Decide the technology to implement the routing layer
- Document decisions in the Cells blueprint
- Create a plan with concrete issues to continue the development of the routing layer: discovery, single domain interaction, endpoints classification, GraphQL, etc.
Related to #408507.
Reference:
- Cells blueprint Routing layer
- Proposal: Stateless Router with buffering requests
- Proposal: Stateless Router with learning routes
Requirements:
See https://docs.gitlab.com/ee/architecture/blueprints/cells/routing-service.html#requirements
Action Items
-
Evaluate requirements -
Evaluate Cloud Connector 👉 https://docs.gitlab.com/ee/architecture/blueprints/cloud_connector/ -
Draft up application side (#429257) that can interact with Routing layer -
Brainstorm/Evaluate technology options -
Quick evaluation of OpenResty #428195 (comment 1673033008) -
Create end-to-end PoC for 1-2 options (opened separate issues)