Смотрите: контроль качества перед производством
Видео: youtu.be/Vs2Em0HPvoY · Продукт: ringpromoter.com
Ring Promoter — это плоскость управления продвижением Workstation для заказанных колец. int → test → acc → prod. Эта статья посвящена Контроль качества и контроль качества в этом конвейере: где они находятся, как автоматическое продвижение взаимодействует с человеческими шлюзами (особенно перед запуском), проверка работоспособности и версии как первоклассных шлюзов, поведение отката и последствия для команд платформы ИИ. Продукт: ringpromoter.com · источник: github.com/bwalia/ring-promoter. Сопутствующий блог: деловое резюме · обзор: современная статья CI/CD · страница продукта: /кольцо-промоутер.
- Проблема: Автоматическое продвижение всего в продукте — это 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 двигаться, не присматривая за каждым прыжком.
- Человеческие ворота перед производством защищает модели и инструменты, ориентированные на клиента, от бесшумного каскада.
- Продвижение нескольких приложений по-прежнему учитывает работоспособность каждого приложения — один неработоспособный сервис не изобретает пропущенный звонок для других.
Позиция Workstation: относиться к доставке ИИ как к производственным услугам — прежде всего, к наблюдаемости и дисциплине продвижения (см. также Узкие места LLM / OTEL), затем скорость.
9. Плюсы, минусы и рекомендуемая политика
| Выбор | Плюсы | Минусы |
|---|---|---|
| Автоматические ранние звонки | Пропускная способность, меньше труда | Распространяет слабые контракты на здравоохранение |
| Человек до производства | Комплаенс, контроль изменений | Нужен ясный владелец/SLA |
| Версия ворот | Останавливает развертывание ложных зеленых | Требуются инструментированные конечные точки работоспособности. |
Рекомендуемое значение по умолчанию: auto_promote включен int и test; человеческие ворота на acc; проверенная версия работоспособности каждого приложения, ориентированного на клиента; никогда не пропускайте кольца; полагаться на автоматический откат при выходе из строя ворот.
10. Начало работы
- Смотреть youtu.be/Vs2Em0HPvoY.
- Посещать ringpromoter.com и клонировать github.com/bwalia/ring-promoter.
- Прочтите бизнес-блог и Workstation страница продукта.
- Настройка для каждого звонка
auto_promoteи поля версии работоспособности; держать подсказку с человеческими воротами. - Поговорите с Workstation через контакт о CI/CD для платформ ИИ.
Опубликовано Workstation. Документация по разработке: README и примечания к проектированию в репозитории Ring Promoter.
Сайт продукта: https://www.ringpromoter.com/