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 (closed).

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/
    • #429818 (closed)
  • Draft up application side (#429257 (closed)) that can interact with Routing layer
    • => Draft: POC app routing (!137360 - closed)
  • Brainstorm/Evaluate technology options
  • Quick evaluation of OpenResty #428195 (comment 1673033008)
  • Create end-to-end PoC for 1-2 options (opened separate issues)
    • Cell: Routing PoC: Istio (#433472 - closed)
    • Cell: Routing PoC: Cloudflare Worker (#433471 - closed)
Edited Dec 04, 2023 by Thong Kuah
Assignee Loading
Time tracking Loading