GitHub GitHub
ReactFrontend monorepo · bun workspaces · Turborepo
Viteapps/client
React

React

TanStack Router · Query

zustand

Bunapps/bff
Hono

Hono

tRPC

tRPC · AppRouter

HTML bootstrap · SEO

turbo run --affected

bun install

lint · typecheck · test

Contract check

vite build

bun build --compile

Build image

DockerDocker Registry
Docker

bff:{sha}

Google Chrome

Client (браузер)

Наша инфраструктура (Selectel)

CDN cdn.cellestial.ru

S3: releases/{sha}/, current.json

KubernetesVPS 1 · k3s
Traefik Proxy

Traefik · Gateway API

Hono

BFF (Hono · bun)

KubernetesVPS 2 · k3s
Go

Go API

Unleash

Правила выкатки

  1. BFF N+1 выкатывается первым, клиент N+1 после Healthy
  2. BFF N+1 обслуживает клиентов N и N+1
  3. Contract check: stable-клиент против новых AppRouter и BootstrapData
  4. Ответ BFF несёт x-release; при ошибке контракта перезагрузка сразу, иначе мягко, не чаще раза в 10 минут
  5. Канарейка липкая по id посетителя из cookie BFF
  6. В S3 последние 5 релизов; откат: выключить канарейку, клиент, потом BFF
  • Наша инфраструктура
  • GitHub
  • Внешние сервисы
  • Пользовательский трафик
  • Пайплайн и внешние системы, пунктир
  • Прочие связи
import type AppRouter, BootstrapData
current.json: stable sha
releases/{sha}/ (main)
https://cellestial.ru: HTML, /api/trpc
static
S2S: сессия, данные, sitemap
index.html, current.json
SDK: флаги, канарейка