Commit a85cc7ac authored by Marc Saleiko's avatar Marc Saleiko
Browse files

Adds cells design documents and notes partitioning

parent 563703dc
Loading
Loading
Loading
Loading
+346 −0

File added.

Preview size limit exceeded, changes collapsed.

+31 −0
Original line number Diff line number Diff line
---
stage: systems
group: Geo
title: 'Unified Backups: Glossary'
---

## archive

- The directory or archive file that is produced by a backup creation command. It will always contain a backup metadata file, and it may or may not contain actual captured data from the application, depending on the software environment

## archive metadata

- The record of a backup creation session stored in a JSON file inside every archive created by the `gitlab-backup-cli` command

## backup home

- The base directory that a user has configured as the default location to store archives produced by backup creation commands. This should always be treated as distinct from any actual archive directory or other significant path on the system.

## backup context

- When you execute a backup creation or restoration operation, you are running a backup session. It encompasses the operation, command line arguments, and the parameters of the operation as derived from the system configuration, command line arguments, environment variable, application context data, and archive metadata.

## data type

- One of the five abstract categories of data used by the GitLab application – Git repositories, databases, blobs, secrets/configurations, and transient data.

- This is distinct from the individual feature data backups contained in an archive. For example, “artifacts” or “packages” are two types of blob-based file backups in an archive, but they are not data families. “Blob” is the general data family to which these feature backups belong.

## installation types

- An installation type is the result of using one of [the installation methods](https://docs.gitlab.com/ee/install/install_methods.html).
+408 −0

File added.

Preview size limit exceeded, changes collapsed.

+38 −0
Original line number Diff line number Diff line
---
owning-stage: "~devops::data stores"
title: 'Cells ADR 001: Routing Technology using Cloudflare Workers'
---

## Context

In <https://gitlab.com/groups/gitlab-org/-/epics/11002> we first brainstormed [multiple options](https://gitlab.com/gitlab-org/gitlab/-/issues/428195#note_1664622245) and investigated our 2 top technologies,
[Cloudflare Worker](https://gitlab.com/gitlab-org/gitlab/-/issues/433471) & [Istio](https://gitlab.com/gitlab-org/gitlab/-/issues/433472).

We favored the Cloudflare Worker PoC and extended the PoC with the [Cell 1.0 proposal](https://gitlab.com/gitlab-org/gitlab/-/issues/437818) to have multiple routing rules.
These PoCs help validate the [routing service blueprint](../http_routing_service.md),
that got accepted in <https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142397>,
and rejected the [request buffering](../rejected/proposal-stateless-router-with-buffering-requests.md),
and [routes learning](../rejected/proposal-stateless-router-with-routes-learning.md)

## Decision

Use [Cloudflare Workers](https://workers.cloudflare.com/) written in JavaScript/TypeScript to route the request to the right cell, following the accepted [routing service blueprint](../http_routing_service.md).

Cloudflare Workers meets all our [requirements](../http_routing_service.md#requirements) apart from the `self-managed`, which is a low priority requirement.

You can read a detailed analysis of Cloudflare workers in <https://gitlab.com/gitlab-org/gitlab/-/issues/433471#results>

## Consequences

- We will be choosing a technology stack knowing that it will not support all self-managed customers.
- More vendor locking with Cloudflare, but are already heavily dependent on them.
- Run compute in a new platform, outside of GCP, however we already use Cloudflare.
- We anticipate that we might to rewrite Routing Service if the decision changes.
  We don't expect this to be big risk, since we expect Routing Service to be very small and simple (up to 1000 lines of code).

## Alternatives

- We considered [Istio](https://gitlab.com/gitlab-org/gitlab/-/issues/433472) but concluded that it's not the right fit.
- We considered [Request Buffering](../rejected/proposal-stateless-router-with-buffering-requests.md)
- We considered [Routes Learning](../rejected/proposal-stateless-router-with-routes-learning.md)
- Use WASM for Cloudflare workers which is the wrong choice: <https://blog.cloudflare.com/webassembly-on-cloudflare-workers#whentousewebassembly>
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading