Перейти к содержимому

Статья

Ring Promoter — контроль качества перед производством

Техническое описание: шлюзы продвижения, auto_promote для каждого кольца, проверка работоспособности/версии, человеческий шлюз acc→prod, откат и политика команды искусственного интеллекта.

  • 7 мин чтения
  • DevOps
  • CI/CD
  • ИИ
  • Kubernetes
  • Автоматизация

Смотрите: контроль качества перед производством

Ring Promoter — контроль качества перед производством (YouTube)

Видео: youtu.be/Vs2Em0HPvoY · Продукт: ringpromoter.com

Ring Promoter — это плоскость управления продвижением TenthMatrix для заказанных колец. int → test → acc → prod. Эта статья посвящена Контроль качества и контроль качества в этом конвейере: где они находятся, как автоматическое продвижение взаимодействует с человеческими шлюзами (особенно перед запуском), проверка работоспособности и версии как первоклассных шлюзов, поведение отката и последствия для команд платформы ИИ. Продукт: ringpromoter.com · источник: github.com/bwalia/ring-promoter. Сопутствующий блог: деловое резюме · обзор: современная статья CI/CD · страница продукта: /кольцо-промоутер.

Крышка Ring Promoter QA Gates перед началом производства

Агентский дайджест.
  • Проблема: Автоматическое продвижение всего в продукте — это YOLO; блокирование каждого прыжка вручную происходит слишком медленно.
  • Модель: Общие кольца; один прыжок за раз; никогда не пропускайте; здоровье (+ дополнительная версия) на каждом прыжке.
  • Политика: Необязательный auto_promote за кольцо для раннего хмеля; держать человеческие ворота открытыми acc → prod.
  • Отказ: Неработоспособная цель или несоответствие версии → автоматический откат + история.
  • Слоган: Не продвигайте продукт автоматически — зарабатывайте на производстве через ворота контроля качества.

1. Процесс продвижения (резюме)

Приложения объявляют целевые объекты развертывания для каждого кольца (пространство имен, развертывание, репозиторий изображений, URL-адрес работоспособности, развертыватель). Сами кольца делятся и заказываются. Операторы, CI или агенты звонят:

  • семя — разместить версию на int (или настроенное входное кольцо).
  • продвигать — переместить версию из from_ring к следующий только кольцо.
  • откат — восстановление предыдущей версии на кольце (также автоматически при сбое работоспособности после развертывания).

Параллелизм: операции для одного и того же приложения сериализуются (рекомендуемая блокировка сеанса Postgres между репликами). Контекст операции отделен от HTTP-запроса и ограничен operation_timeout, поэтому отключение клиента не может прервать текущее повышение или его откат.

Operators / CI / Agents
    → Ring Promoter (UI + REST API)
        → seed / promote / rollback
        → Deployer (kubectl | GitHub Actions | k8sjob)
        → Health (HTTP + optional version verify)  ← quality gate
        → optional auto_promote to next ring       ← policy gate
        → Store (Postgres history + locks)
Rings: int → test → acc → prod

2. Где находятся ворота контроля качества

Диаграмма ворот контроля качества: автоматические переходы раньше, человеческие ворота перед запуском

Прыгать Типичный микс ворот Примечания
int → test Здоровье + версия; часто auto_promote Быстрая обратная связь после посева
test → acc Здоровье + версия; дополнительный автоматический режим после проверки/дыма Укрепите конечные точки работоспособности, прежде чем включать автоматическое
acc → prod Здоровье + версия + человек / контроль качества одобряет Не автоматическое продвижение в продукт по умолчанию

Ворота многоуровневые. Автоматическое продвижение никогда не обходит проверку работоспособности или версии — оно устраняет только ожидание человеческого щелчка между переходами, когда предыдущая площадка работоспособна.

3. Автоматическое продвижение флагов для каждого звонка.

Автопродвижение - это опционально и за кольцо. Когда версия оказывается работоспособной на кольце с включенным автоматическим продвижением, Ring Promoter переходит к следующему кольцу внутри той же заблокированной операции. Пример схемы политики:

# Conceptual ring policy (illustrative)
rings:
  - name: int
    auto_promote: true      # healthy int → continue to test
  - name: test
    auto_promote: true      # healthy test → continue to acc
  - name: acc
    auto_promote: false     # HUMAN GATE — stop before prod
  - name: prod
    auto_promote: false     # terminal ring

Сопоставления колец на уровне приложения по-прежнему содержат сведения о развертывании и работоспособности:

# Per-app ring mapping (illustrative)
apps:
  web-frontend:
    rings:
      acc:
        namespace: acc-apps
        deployment: web-frontend
        health_url: https://acc.example/healthz
        health_version_field: version
      prod:
        namespace: prod-apps
        deployment: web-frontend
        health_url: https://www.example/healthz
        health_version_field: version

Оперативный совет: включайте автоматическое продвижение только после того, как вы доверяете контракту работоспособности для этого приложения. Слабый всегда-200 Конечная точка плюс автоматическое продвижение с радостью приведет плохой двоичный файл к принятию.

4. Проверка работоспособности и версии как контроль качества

Каждое продвижение проверяет источник кольцо исправно перед развертыванием, затем проверяет цель после развертывания с настраиваемыми повторами. Если цель остается нездоровой, Ring Promoter откатывается назад переходит к предыдущей версии и записывает сбои в историю.

Состояние проверенной версии превращает простой URL-адрес активности в ворота качества:

  • health_version_field — Поле JSON в теле здоровья (например. version или build.version).
  • health_version_header — заголовок, например X-App-Version.

Проверка требует от конечной точки сообщить о точная версия только что развернута. Это важно для стеков ИИ: старая вспомогательная машина вывода или двоичный код агента все еще могут ответить 200 OK а новый образ так и не был готов. Несоответствие версий приводит к сбою шлюза и вызывает откат.

На закрепленный ссылкой кольца (ref: release), ожидаемая версия может быть неизвестна заранее — после нормального развертывания плоскость управления может записывать версию, о которой сообщает конечная точка, вместо сравнения с заранее известным тегом.

5. Акк → прод человеческие ворота

Хранение auto_promote: false на acc означает успешный test → acc (или цепной авто из более ранних колец) останавливается на приеме. Производство требует явного продвижения — щелчка по пользовательскому интерфейсу, одобренного вызова API или автоматизации, поддерживаемой билетом на изменение, которая по-прежнему вызывает намеренное продвижение.

  • Используйте это для окон изменений, подтверждения соответствия, демонстрации заинтересованным сторонам на этапе подготовки или «поездов выпуска» нескольких приложений.
  • Сопряжение с проверенной версией Health, чтобы человек одобрял верно сборка, а не несвежий здоровый стручок.
  • Задокументируйте, кто владеет шлюзом (дежурный SRE, владелец продукта, менеджер по выпуску), чтобы переход не превратился в случайную очередь.
Жесткое правило. Не устанавливайте автоматическое продвижение на кольце, которое обеспечивает производство, если у вас нет исключительной, проверенной причины — и даже в этом случае предпочитайте отдельный механизм утверждения вне автоматической цепочки плоскости управления.

6. Откат как часть истории с воротами

  • Сбой работоспособности/версии после развертывания → автоматический откат цель кольцо.
  • Ручной откат API/UI для восстановления под управлением оператора.
  • В истории фиксируются успехи и неудачи начального/продвижения/отката аудита.
  • Сохраненное состояние обновляется сразу после развертывания, поэтому достоверность кластера не теряется в случае сбоя последующей проверки работоспособности.

Ворота без отката – это театр. Ring Promoter рассматривает вышедшие из строя шлюзы как действия, требующие принятия мер: отмените плохой переход, сохраните контрольный журнал, оставьте предыдущие кольца нетронутыми.

7. Эскизы API (CI/агенты)

# Seed int, then promote (auto-promote may chain further)
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"ring":"int","version":"1.4.2"}' \
  $BASE/api/apps/web-frontend/seed

curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"from_ring":"int"}' \
  $BASE/api/apps/web-frontend/promote
# non-2xx = failed promotion (target auto-rolled back)

# Explicit human-gated hop into prod (after QA on acc)
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"from_ring":"acc"}' \
  $BASE/api/apps/web-frontend/promote

CI-сборки и тесты; Ring Promoter перемещает то, что создал CI. Повышение, отличное от 2xx, означает, что ворота не прошли — curl --fail достаточно для интеграции конвейера. Агенты и релиз-боты должны обрабатывать acc → prod как привилегированное действие с явным шагом утверждения в собственном рабочем процессе.

8. Последствия для команд разработчиков платформы искусственного интеллекта

Поместья ИИ продвигают службы вывода, среды выполнения агентов, шлюзы MCP, RAG, API и классические сервисы на разных тактовых частотах и ​​в разных средах развертывания (kubectl, GitHub Actions или k8sjob). Общие кольца дают один язык продвижения; Gates сохраняют этот язык честным:

  • Состояние проверенной версии ловит «старый агент все еще отвечает».
  • Автоматическое продвижение позволяет кольцам eval двигаться, не присматривая за каждым прыжком.
  • Человеческие ворота перед производством защищает модели и инструменты, ориентированные на клиента, от бесшумного каскада.
  • Продвижение нескольких приложений по-прежнему учитывает работоспособность каждого приложения — один неработоспособный сервис не изобретает пропущенный звонок для других.

Позиция TenthMatrix: относиться к доставке ИИ как к производственным услугам — прежде всего, к наблюдаемости и дисциплине продвижения (см. также Узкие места LLM / OTEL), затем скорость.

9. Плюсы, минусы и рекомендуемая политика

Выбор Плюсы Минусы
Автоматические ранние звонки Пропускная способность, меньше труда Распространяет слабые контракты на здравоохранение
Человек до производства Комплаенс, контроль изменений Нужен ясный владелец/SLA
Версия ворот Останавливает развертывание ложных зеленых Требуются инструментированные конечные точки работоспособности.

Рекомендуемое значение по умолчанию: auto_promote включен int и test; человеческие ворота на acc; проверенная версия работоспособности каждого приложения, ориентированного на клиента; никогда не пропускайте кольца; полагаться на автоматический откат при выходе из строя ворот.

10. Начало работы

  1. Смотреть youtu.be/Vs2Em0HPvoY.
  2. Посещать ringpromoter.com и клонировать github.com/bwalia/ring-promoter.
  3. Прочтите бизнес-блог и TenthMatrix страница продукта.
  4. Настройка для каждого звонка auto_promote и поля версии работоспособности; держать подсказку с человеческими воротами.
  5. Поговорите с TenthMatrix через контакт о CI/CD для платформ ИИ.

Опубликовано TenthMatrix. Документация по разработке: README и примечания к проектированию в репозитории Ring Promoter.

Сайт продукта: https://www.ringpromoter.com/