Cloudflare запустила self-managed OAuth для всех клиентов. Раньше сторонний OAuth был доступен только через небольшое количество вручную одобренных интеграций — вроде Wrangler или PlanetScale. Разработчикам приходилось использовать API-токены, которыми сложнее управлять и которые плохо подходят для делегированного доступа. Сейчас любой клиент может создать собственное OAuth-приложение, разрешить прямой доступ с ограниченными правами и упростить создание SaaS-интеграций или инструментов для агентов.
Чтобы открыть OAuth для всех, Cloudflare пришлось полностью переработать движок. Под капотом у них стоял Hydra — open-source OAuth-сервер. Со временем стало ясно, что старая версия не тянет нагрузку. Обновление решили делать в два этапа: сначала перейти на последний релиз 1.X, затем — на 2.X.
Первый этап оказался проблемным: стандартные SQL-миграции Hydra блокировали таблицы, что парализовало бы работу пользователей. Инженеры переписали миграции (использовали CREATE INDEX CONCURRENTLY), а также собрали кастомную версию Hydra, которая не дёргает SELECT *, а выбирает явные колонки. Это сработало без единого сбоя.
Второй этап — переход на 2.X — был ещё сложнее. In-place апгрейд отпал из-за массы изменений схемы. Выбрали blue-green стратегию, но просто переключить трафик нельзя — миграция занимала бы часы. Придумали хитрый план: увеличили время жизни токенов до нескольких часов (чтобы снизить количество новых записей), а для отзывов доступа построили очередь на Cloudflare Queues. После переключения на новую базу все пропущенные отзывы "отреплеили" из очереди.
Во время самого перехода возникла пара неприятных багов. Сначала вылезли ошибки refresh-токенов: новая Hydra строже реагировала на повторное использование токена и убивала всю цепочку. Для Wrangler и MCP-клиентов это было катастрофой — пришлось добавить кэширование retry-запросов в Worker. Затем внутренний сервис авторизации начал получать 403-е ошибки из-за того, что одна из миграций Hydra повредила данные о валидных OAuth-сессиях. Помогла откатка данных и чистка зависимостей от статической политики.
Итог впечатляет: после обновления P95 latency упал на 45% (со 185 до 101 мс), потребление RSS-памяти — на 14%, heap в Go — на 40%, а нагрузка на CPU сократилась на 37%. Трафик стабилен, система работает быстрее. Теперь каждый клиент Cloudflare может зайти в дашборд и создать своё первое OAuth-приложение.