This page contains information related to upcoming products, features, and functionality.
It is important to note that the information presented is for informational purposes only.
Please do not rely on this information for purchasing or planning purposes.
The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the
sole discretion of GitLab Inc.
Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed | devops data stores | - |
Cells ADR 001: Cloudflare Workers를 사용한 라우팅 기술
맥락
우리는 처음에 여러 옵션에 대해 아이디어를 내고 2가지 최상위 기술, Cloudflare Worker & Istio를 조사했습니다.
우리는 Cloudflare Worker PoC를 선호하고 Cell 1.0 제안을 통해 여러 라우팅 규칙을 추가로 확장했습니다. 이러한 PoC는 라우팅 서비스 청사진을 검증하는 데 도움이 되었고, 이 청사진은 https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142397에서 승인되었으며, 요청 버퍼링 및 라우트 학습은 거부되었습니다.
결정
JavaScript/TypeScript로 작성된 Cloudflare Workers를 사용하여 요청을 올바른 셀로 라우팅하기로 결정했습니다. 이는 승인된 라우팅 서비스 청사진을 따릅니다.
Cloudflare Workers는 Self-Managed
를 제외한 모든 요구 사항을 충족합니다. 이는 우선 순위가 낮은 요구 사항입니다.
Cloudflare workers에 대한 자세한 분석은 https://gitlab.com/gitlab-org/gitlab/-/issues/433471#results에서 확인할 수 있습니다.
결과
- 모든 Self-Managed형 고객을 지원하지 않을 것으로 알고 기술 스택을 선택합니다.
- Cloudflare와의 더 많은 벤더 락링이 발생하지만 이미 그들에게 많은 의존성을 가지고 있습니다.
- GCP 외부의 새로운 플랫폼에서 컴퓨팅을 실행하나, 이미 Cloudflare를 사용하고 있습니다.
- 결정이 변경된다면 라우팅 서비스를 다시 작성해야 할 수 있다는 점에 대비합니다. 라우팅 서비스는 매우 작고 간단할 것으로 예상되므로(최대 1000줄의 코드까지) 이것이 큰 리스크가 될 것으로 기대하지 않습니다.
대안
- Istio를 고려했지만 적합하지 않다고 결론 내렸습니다.
- 요청 버퍼링을 고려했습니다.
- 라우트 학습을 고려했습니다.
- Cloudflare workers에 대한 WASM 사용을 고려했지만 잘못된 선택입니다: https://blog.cloudflare.com/webassembly-on-cloudflare-workers#whentousewebassembly