Стратегия и код в одних руках

Вашему бизнесу нужен CTO.
Но не на full-time

Техническое лидерство без найма штатного руководителя. Архитектура, AI, модернизация легаси, построение команд — от стратегии до кода. Не просто советую — делаю.

25+
лет в IT
200+
человек в управлении
25M+
пользователей на продакшене
АльфаСтрахование МегаФон СОГАЗ

Знакомая ситуация?

Большинство растущих компаний сталкиваются с одной из этих проблем. Штатный CTO стоит 10–15 млн/год. Но и без техлидерства — нельзя.

Нужен CTO, но не на full-time

Компания 10-80 человек. Штатный CTO — дорого и рано. Но архитектура, процессы, стратегия и реализация нужны уже сейчас.

Подрядчик держит в заложниках

Они подняли цены в третий раз. Уйти не можете — код у них, знания у них, инфраструктура у них. Каждый месяц платите за зависимость.

Vibe-coding зашёл в тупик

AI собрал MVP за неделю — круто! Теперь каждое изменение — лотерея. Непонятно что внутри, как работает и что с этим делать.

Хотим внедрить AI, но не знаем как

Конкуренты что-то внедряют. Вы отстаёте? Или они просто хайпуют? Нужен человек, который поможет разобраться и внедрить.

Выберите роль — покажу подробнее и как помогу

Владельцу / CEO
11 ситуаций
Фаундеру
6 ситуаций
CTO / IT-директору
5 ситуаций

Владельцу / CEO

IT тормозит бизнес

«Раньше запускали за неделю, теперь за квартал. IT растёт, а результата меньше»
Сделаю: Аудит за 1-2 недели: посмотрю код, процессы, команду. Найду, где реальный блок — люди, архитектура или бюрократия. Дам конкретный план: что убрать, что автоматизировать, где нужны люди. В АльфаСтраховании сократил time-to-market с 6 месяцев до 2 недель.

Не понимаю, что происходит в IT

«Я плачу за то, чего не понимаю. Это неприятно»
Сделаю: Переведу с «айтишного» на человеческий. Настрою прозрачность: дашборды с метриками, которые важны бизнесу — скорость, стоимость, риски. Регулярные отчёты на языке денег и сроков. Через месяц будете понимать, за что платите и получаете ли результат.

Команда не работает как команда

«Раньше знал всех по имени. Теперь — слои менеджеров и бесконечные согласования. IT стало медленным»
Сделаю: Проведу 1-on-1 с ключевыми людьми. Найду, где процесс ломается — лишние согласования, дублирование, непонятные зоны ответственности. Уберу лишнее, выстрою прямые связи. Типичный эффект — сокращение согласований с недель до дней.

Всё держится на одном человеке

«Я в заложниках у собственного сотрудника»
Сделаю: Сяду рядом, разберусь в системе. Задокументирую критичные знания — архитектуру, бизнес-логику, неочевидные зависимости. Параллельно подготовлю второго человека. Через 2-3 месяца зависимость снята.

CTO уволился — всё горит

«Он ушёл, а с ним — все знания. Команда растеряна, релизы встали»
Сделаю: Войду как interim CTO за 1-2 дня. Стабилизирую процессы, возьму на себя критичные решения. Параллельно помогу найти и онбордить штатного CTO — передам ему систему, а не хаос.

Подрядчик держит в заложниках

«Они подняли цены в третий раз. Я не могу отказаться»
Сделаю: Аудит кода и инфраструктуры подрядчика. Заберу код, настрою CI/CD и деплой на вашей стороне. Проверю, что всё соответствует продакшену. При необходимости — помогу собрать и запустить внутреннюю команду. Делал в МегаФоне: 60 модулей, 17 микросервисов за 2 месяца.

Растём — IT не готово

«Мы вложились в маркетинг, ждём рост. А если сайт ляжет?»
Сделаю: Нагрузочное тестирование — покажу, где упадёт и при какой нагрузке. Составлю план: что чинить первым, что может подождать. В СОГАЗе выстраивал архитектуру на 25M+ клиентов с доступностью 99.9%.

Безопасность — мы уязвимы?

«Читаю про утечки и штрафы. Не понимаю, насколько мы защищены»
Сделаю: Аудит безопасности: инфраструктура, код, процессы доступа. Конкретный отчёт — что критично, что терпит. В СОГАЗе внедрял Vault, шифрование, разделение контуров для персональных данных.

Хотим внедрить AI

«Конкуренты что-то внедряют. Мы отстаём? Или они просто хайпуют?»
Сделаю: Проанализирую процессы — где AI реально сэкономит время или деньги, а где хайп. Выберу конкретный кейс, запущу пилот за 2-4 недели. Не слайды — работающий инструмент. Сам использую AI каждый день: Claude, n8n, MCP-протокол. Строю на этом продукты.

Нужен новый продукт

«Есть идея. Нужен один человек, который возьмёт и сделает»
Сделаю: Соберу требования, спроектирую архитектуру, напишу backend и frontend, настрою инфраструктуру и деплой. Один человек — от идеи до продакшена. MVP за недели, не месяцы. Код чистый, задокументированный, готовый к передаче команде.

Vibe-coding зашёл в тупик

«AI собрал MVP за неделю — круто! Теперь каждое изменение — лотерея»
Сделаю: Проведу ревью сгенерированного кода. Задокументирую, что он делает и почему. Выделю рабочие части, перепишу хрупкие. Настрою тесты, чтобы изменения перестали быть лотереей. Научу вашу команду использовать AI как инструмент, а не как замену разработчика.
Узнали себя? Напишите в Telegram →

Фаундеру

Нужен технический партнёр

«Боюсь, что меня обманут. Не понимаю, сколько должен стоить MVP»
Сделаю: Разложу задачу на понятные части с оценкой каждой. Объясню, где можно сэкономить, а где нельзя. MVP за недели — с чистым кодом, готовым к передаче любой команде.

Подняли раунд — нужна скорость

«Инвесторы давят на метрики. Текущая команда медленная»
Сделаю: За первую неделю найду узкое место — обычно это не люди, а процесс или архитектура. Выстрою delivery pipeline, уберу блокеры. Если нужно — помогу пересобрать команду.

Архитектура «на коленке»

«Я хороший разработчик, но не уверен в архитектурных решениях»
Сделаю: Посмотрю свежим взглядом. Покажу, что выдержит масштаб, а что сломается. Не буду переписывать всё — точечные изменения там, где критично. Научу принимать такие решения самостоятельно.

Нужен ×1 вместо команды

«Денег на команду нет. Фрилансеры пропадают»
Сделаю: Backend, frontend, DevOps, архитектура — один вместо трёх-четырёх. Kotlin, React, Docker, CI/CD. MVP быстро, код на продакшн-уровне. Готов обсуждать equity.

Нужен tech due diligence для инвесторов

«Инвесторы просят технический аудит. Кто его проведёт объективно?»
Сделаю: Полный аудит: код, архитектура, инфраструктура, команда, техдолг, риски масштабирования. Отчёт на языке, понятном и вам, и инвесторам. 1-2 недели.

Запустились, но не масштабируется

«MVP работает, пошли пользователи — и всё начало тормозить и падать»
Сделаю: Профилирование, нагрузочное тестирование, поиск узких мест. Быстрые фиксы — чтобы не падало прямо сейчас. План масштабирования — чтобы выдержало ×10. Делал в СОГАЗе для 25M+ пользователей.
Узнали себя? Напишите в Telegram →

CTO / IT-директору

Нужны руки senior-уровня

«Есть задача, которую я бы сделал сам — но нет времени»
Сделаю: Объясните один раз — дальше сам. Kotlin, Java, React, Docker — весь стек. Код с тестами, документацией и code review. Как если бы писал для своего продукта.

Нужен второй взгляд

«Не уверен в решении. Нужен кто-то с опытом»
Сделаю: Посмотрю архитектуру, код, инфраструктуру. Не просто «это плохо» — конкретно: что не выдержит, почему, и два-три варианта как исправить с оценкой трудозатрат.

Унаследовал хаос

«Боюсь трогать — сломаю. Тестов нет, документации нет»
Сделаю: Проведу археологию кода. Нарисую карту зависимостей, найду мины. Напишу тесты на критичные пути. Возьму на себя самые рискованные куски — у меня 25+ лет опыта с legacy.

Выгораю — тону в операционке

«Весь день тушу пожары. На стратегию и развитие времени нет»
Сделаю: Возьму на себя часть операционной нагрузки: код-ревью, инциденты, архитектурные решения. Освобожу вам время на стратегию. Параллельно выстрою процессы, чтобы пожаров стало меньше.

Первый раз CTO — нужен ментор

«Вырос из разработчика. Управлять людьми и процессами не учили»
Сделаю: Регулярные 1-on-1. Помогу с оргструктурой, наймом, приоритизацией, разговорами с CEO. Прошёл этот путь сам — от разработчика до CTO в компании на 250+ человек. Знаю все грабли.
Узнали себя? Напишите в Telegram →

Пять шагов к результату

От первого звонка до работающей системы. Конкретный результат с первой недели.

01 — Знакомство

Понимаю задачу

Бесплатный звонок 30 минут. Вы рассказываете ситуацию, я — как могу помочь. Если не подхожу — скажу честно.

30 минут, бесплатно
02 — Аудит

Разбираюсь в ситуации

Код, архитектура, команда, процессы. Нахожу, где реальные проблемы, а где шум. Честный отчёт на человеческом языке.

1-2 недели
03 — Стратегия

Составляю план

Quick wins на первый месяц. Дорожная карта на 90 дней. Приоритеты, ресурсы, KPI. Понятно и бизнесу, и команде.

1 неделя
04 — Реализация

Делаю, а не только советую

Стратегия и код — в одних руках. Архитектура, код-ревью, найм, внедрение AI. Сам беру execution на себя.

Постоянно
05 — Передача

Система работает без меня

Документация, онбординг штатного CTO или техлида, передача знаний команде. Ухожу — всё продолжает работать. Остаюсь advisory при необходимости.

По готовности

Что получите

Не обещания — реальные проекты.

СОГАЗ · Антикризисный CTO
«Принял хаос от 10 подрядчиков. Legacy, дыры в безопасности, невозможность нанимать людей. Развернул новый стек, построил 3 команды с нуля, первые релизы — через 3 месяца. Закрыл критическую утечку персданных за месяц.»
МегаФон · Разработка
«Перевёл кредитный брокер от подрядчика внутрь. 60 модулей, 17 микросервисов, интеграции с 5 банками — за 2 месяца.»
АльфаСтрахование · IT бизнес-партнёр
«Agile-трансформация: time-to-market с 6 месяцев до 2 недель. Продукты-лидеры отрасли, работают до сих пор.»

Как можем работать

Гибкие форматы — от разовой консультации до полноценного CTO.

Консалтинг
Аудит, стратегия, второе мнение
Стратегическая сессия
30 · 50K
2 · 3 часа
Аудит
300 · 500K
1 · 2 недели
Full-time CTO
Полное техническое лидерство
от 800K
в месяц
  • Всё из Part-time
  • Полный фокус на проекте
  • Ко-фаундерство — обсуждаемо

Первый разговор — бесплатно, 30 минут. Без обязательств.

Штатный CTO vs фракционный

Калькулятор

Реальные затраты для компании в 2026 году. С учётом НДФЛ, взносов, ДМС и рекрутинга.

Штатный CTO
Оклад 590K gross + бонус 1,75 млн gross
Gross оклад + бонус: 8,8 млн
Страховые взносы: ~1,8 млн
ДМС, техника, обучение: 0,5 млн
Итого / год ~11,2 млн ₽
компания платит ×1,49 от net
222 эфф. дня/год · ~50 200 ₽/день
Фракционный CTO (ИП)
350K/мес, 2 дня/нед, договор ГПХ
Платежи по договору: 4,2 млн
НДФЛ, взносы, ДМС: 0
Юридическое оформление: 0,06-0,2 млн
Итого / год ~4,3 млн ₽
компания платит ×1,0 от договора
~96 дней/год · ~43 750 ₽/день
Экономия: 6,8-6,9 млн ₽/год Это зарплата 2+ senior-инженеров

НДФЛ 2026: прогрессивная шкала 13/15/18% (ФЗ № 176-ФЗ). Предельная база взносов — 2 979 000 ₽. ИП на УСН 6% без НДС. Расчёт оценочный.

Юрий Морозов

Юрий Морозов

18 лет в одной компании — не потому что некуда идти, а потому что верил в то, что строил. Команды, культуру, атмосферу — среду, где у людей был смысл. Где каждый мог быть собой и гореть тем, что делает.

Мы горели. Создавали культуру открытости, доверия, ответственности. Были лучшими в отрасли. Нам было не всё равно.

Ушёл, когда компания изменилась — политика и интриги вытеснили смысл, и всё, что строил, начало ломаться.

АльфаСтрахование, МегаФон, СОГАЗ. 200+ человек, 25M+ пользователей. От разработчика до CTO.

Сейчас выбираю компании, где вовлечённость и смысл ещё нужны. Именно там такой как я даёт максимум.

AI / Agents
Claude AI, n8n, LLM
Backend
Java, Kotlin, Spring, REST, Python
Frontend
React, TypeScript, Canvas
Data
PostgreSQL, Oracle, MS SQL, MinIO
DevOps
Docker, Traefik, Vault, Grafana
Leadership
CTO, Tech/Team Lead
Не только проектирую — сам пишу код. API Gateway за 3 недели part-time Пример реализации

Частые вопросы

Чем фракционный CTO отличается от консультанта?
Консультант даёт рекомендации и уходит. Я — реализую. Пишу код, управляю командой, несу ответственность за результат. Не слайды, а работающий продукт.
CTO, который пишет код — не переплата?
Наоборот. Один человек вместо трёх: архитектор + тимлид + senior-разработчик. Экономия и скорость.
Вы работаете с несколькими клиентами — как не теряете фокус?
Максимум 2-3 клиента одновременно. У каждого — выделенные дни. Не «по чуть-чуть везде», а полное погружение в свои дни. Если вижу, что качество страдает — не беру нового клиента. Репутация дороже.
×12 ускорение — это реально или маркетинг?
Это конкретный результат в АльфаСтраховании — с 6 месяцев до 2 недель. Не магия: убрали лишние согласования, автоматизировали деплой, выстроили CI/CD. Но главное — наладили культуру и атмосферу между бизнесом и IT. Это работает сильнее любых инженерных практик. Паттерн воспроизводим в любой отрасли. Ваши цифры будут другими, но первые улучшения видны уже на аудите.
Есть примеры, где вы довели продукт до продакшена сами — не как советник?
Да. В МегаФоне: переписал критичные части платформы — 60 модулей, 17 микросервисов, 2 месяца. Не руководил — писал код. В СОГАЗе: спроектировал и реализовал API Gateway. Сейчас пишу на Kotlin/Java каждый день. Могу показать GitHub, могу сделать тестовое задание — как любой разработчик.
25+ лет — это про старые технологии или про современные?
Осознанно уходил из управления обратно в разработку, чтобы закрыть именно этот пробел. Пишу на Kotlin, React, работаю с Docker, CI/CD, AI-инструментами каждый день. Знаю старое — пишу на новом. 25+ лет — это не багаж, а способность видеть, как одни и те же ошибки повторяются в разных десятилетиях, и не допускать их.
Чем докажете, что справитесь с нашей спецификой?
Страхование, телеком, финтех, ритейл, заказная разработка — за 25+ лет работал в разных доменах. Но главное: первые 1-2 недели — всегда аудит. Если увижу, что не смогу помочь — скажу честно и порекомендую другого специалиста. Мне невыгодно браться за то, где не дам результат.
Как понять, что вы рекомендуете лучшее решение, а не то, что умеете?
Я не продаю технологии и не получаю комиссий от вендоров. Каждое решение документирую: почему именно это, какие альтернативы рассматривал, какие риски у каждого варианта. Документация остаётся у вас — любой другой эксперт может проверить. Если сомневаетесь — закажите second opinion, я это только приветствую.
NDA — это бумага. Что реально происходит с нашими знаниями после?
NDA — это минимум. На практике: я работаю с 2-3 клиентами из разных отраслей, чтобы не было конфликта интересов. Код пишу в ваших репозиториях, с ваших машин. После завершения — удаляю доступы, локальные копии, ключи. Могу подписать расширенное соглашение, если ваша юридическая служба требует.
Не станем ли мы зависеть от вас — как от того самого «Васи»?
Именно поэтому последний шаг — Передача. Всё, что я делаю, документируется с первого дня: архитектурные решения, код, процессы. Я выстраиваю систему так, чтобы она работала без меня. Онбординг штатного CTO или тимлида — часть моей работы. При этом готов оставаться на advisory — поддерживать, консультировать, подключаться точечно.
А если через месяц результата нет?
Первые результаты (аудит, quick wins, устранение критичных проблем) видны уже через 2 недели. Если через месяц вы не видите ценности — расстаёмся без обязательств. Долгосрочные контракты не навязываю.
А если продукт взлетит — не уйдёте?
Готов на equity и долгосрочное партнёрство. Но даже если уйду — код задокументирован и готов к передаче.
У нас legacy — не скажете «сносить и писать с нуля»?
Нет. Strangler Fig Pattern, постепенная модернизация. Бизнес работает — мы улучшаем параллельно.
Если не будет результата — можно ли вернуть деньги?
Честно: за отработанные часы — нет. Но я выстраиваю работу так, чтобы ваш риск был минимальным. Первый этап — всегда короткий: аудит за 2 недели с конкретным результатом. Дальше — помесячная оплата, можно остановить в любой месяц. Никаких контрактов на полгода вперёд. Если после аудита вы не видите ценности — мы просто не продолжаем. Вы рискуете стоимостью одного аудита, не больше.
Сколько времени нужно на старт?
Могу начать в течение 1-2 недель. Первые результаты (аудит, quick wins) — через 2 недели после старта.
Можно ли начать с маленькой задачи?
Да. Архитектурный аудит или code review — хороший способ попробовать формат без долгосрочных обязательств.
300K за проект — это до или после того, как выяснится реальный объём?
Консалтинг (аудит, стратегия) — фиксированная цена за проект с чётким scope. Part-time CTO — помесячная оплата с возможностью остановить в любой месяц. Никаких долгосрочных контрактов. Если в процессе аудита выясняется, что задача больше — обсуждаем до начала работы, не после. Scope фиксируем письменно.
А если нам потом нужен штатный CTO?
Помогу найти, оценить и онбордить штатного CTO. Передам все знания, процессы и документацию. Останусь advisory при необходимости.
ГПХ с ИП — не переквалифицирует ли налоговая в трудовые отношения?
Работаю с несколькими клиентами одновременно — это главный аргумент против переквалификации. Договор на результат (аудит, архитектура, MVP), не на процесс — нет фиксированного графика, нет подчинения вашему распорядку. Нет постоянного рабочего места на вашей стороне — работаю удалённо, со своим оборудованием. Договор составлен с учётом критериев ФНС.
Наш CTO воспримет вас как угрозу. Как с этим быть?
Бывало. Решается на старте: я прихожу как усиление, не замена. Конкретно обсуждаем с CEO, как позиционировать: внешний консультант, ментор, дополнительные руки. Работаю через вашего CTO, не вокруг него. Если CTO сильный — помогаю ему вырасти. Если слабый — это отдельный разговор с вами, но не за его спиной.

Обсудим вашу задачу?

Бесплатно. Просто поговорим о вашей ситуации — без обязательств.

Написать в Telegram Записаться на звонок
Карьера в цифрах
Страхование Телеком Ритейл Финсектор IT-консалтинг

Масштаб управления

200+ человек в зоне ответственности, производство полного цикла (CUSTIS)

150+ человек — разработка и сопровождение полного цикла (АльфаСтрахование, 18 лет)

35 человек — 3 команды с нуля за 3 месяца (СОГАЗ)

10+ кросс-функциональных Agile-команд (АльфаСтрахование)

~40 корпоративных систем (SAP FSCM, Oracle E-Business Suite, Infor SalesLogix, QlikView, OpenText и др.)

до 5 000 пользователей внутренних систем, 25+ млн клиентов на сайте (2019 ↗)

Результаты

Time-to-market: 6 мес → 2 недели (Agile-трансформация)

Доступность: 94% → 99.9% — SRE-группа с нуля

25+ млн клиентов на alfastrah.ru — #1 по посещаемости среди страховых (Яндекс.Радар, 2018 ↗)

Приложение — победитель «Рейтинг Рунета» 2019 ↗ в категории «Финансы»

MVP B2B-портала ↗ за 4 недели → 860K+ визитов/мес, работает до сих пор

ISO/IEC 20000-1:2011 — сертификация разработки

Продукты-лидеры

alfastrah.ru — #1 по посещаемости среди страховых, 25+ млн клиентов, работает до сих пор

Приложение АльфаСтрахование — победитель «Рейтинг Рунета» 2019, работает до сих пор

B2B-портал «АльфаПолис» ↗ — 860K+ визитов/мес, вырос в экосистему, работает до сих пор

Команды — 10+ лет вместе, многие работают до сих пор


Кейс: СОГАЗ Антикризисный CTO

Принял хаос от 10 подрядчиков (legacy, проблемы с безопасностью). Построил 3 команды с нуля, вывел на релизы за 3 месяца. Выявил и закрыл критическую утечку персданных за месяц.

Кейс: МегаФон Разработка

Перевёл кредитный брокер от подрядчика внутрь — тысячи кредитов, десятки тысяч расчётов в сутки. 60 модулей, 17 микросервисов, интеграции с 5 банками — за 2 месяца.

Кейс: CUSTIS Аудит + Стратегия

Аудит (200+ человек, несовместимые стеки, текучка 70%, 3 мес на вхождение). Стратегия масштабирования, Productivity Team.

Кейс: АльфаСтрахование IT бизнес-партнёр

Масштабная Agile-трансформация традиционной компании. BigData/AI команда с нуля (Hadoop, антифрод). Продукты-лидеры рынка в B2B и B2C.

Примеры и код
API Gateway
PROJECT_001

API Gateway

Self-service платформа без лицензионных затрат. Управление маршрутами, клиентами, аутентификация, rate limiting. Трудоёмкость 3 недели part-time.

Kotlin, Spring Boot 3.4, React, PostgreSQL, Redis, Docker

Claude Bot
PROJECT_002

Claude Bot

Удаленное управление работой агентов Claude через бота в Telegram.

n8n, Claude AI, Telegram API, FastAPI, Docker

WatchOfWatch
PROJECT_003

Интерактивный виджет

350 часов в матрице 50×7. Визуализация времени как живого паттерна.

TypeScript, React, Canvas API, Astro Islands, Tailwind CSS

API Gateway — Architecture
System Context Level 1
HTTPS + Bearer JWT HTTPS (OIDC) JWT validation / OIDC Proxy requests Prometheus scrape + OTLP push CI/CD deploy (secrets from Vault) API Consumer Внешний клиент, вызывающий API Admin User Developer / Security / Admin API Gateway [System] Spring Cloud Gateway Reactive Stack Keycloak [External] IAM / SSO OIDC + JWT Upstream Services [External] Backend API сервисы Monitoring [External] Prometheus + Grafana + Jaeger CI/CD & Secrets [External] GitLab CI + Vault + Nexus ЛЕГЕНДА Person Internal System External System
Container Diagram Level 2
HTTPS + Bearer HTTPS (OIDC) HTTP Static files API calls HTTP /api/v1 Rate limit (Lua) JWKS validation Proxy request R2DBC CRUD PUBLISH event SUBSCRIBE API Consumer OAuth2 client Admin User Dev / Security / Admin Traefik 3 [External] Reverse proxy · TLS termination Admin UI [Container] React 18 + Ant Design SPA Gateway Core [Container] Spring Cloud Gateway WebFlux · Netty · Port 8080 Admin Service [Container] Spring WebFlux R2DBC · Port 8081 PostgreSQL 16 [Database] Routes · Audit logs 14 Flyway migrations Redis 7 [Database] Rate limiting · Pub/Sub cache invalidation Keycloak 24 [External] OIDC + JWKS JWT validation Upstream Services [External] Proxied backends ЛЕГЕНДА Person Container External Data Store Async (Pub/Sub)

Rate Limiting: Token Bucket + Per-Consumer

Двухуровневая система: глобальный per-route лимит через Redis Lua EVALSHA (атомарный Token Bucket) и per-consumer лимиты с отдельным ConsumerRateLimitCacheManager. При недоступности Redis — автоматический fallback на Caffeine in-memory с 50% от лимита.

Lua скрипт обеспечивает атомарность без distributed locks. Per-consumer лимиты позволяют давать Premium-клиентам больше capacity. Caffeine fallback гарантирует работу gateway даже при сбое Redis — degraded mode лучше чем полный отказ.

Полностью Reactive стек

Spring Cloud Gateway + WebFlux + Netty + R2DBC. Все I/O неблокирующее: HTTP, PostgreSQL, Redis. Нет ThreadLocal — используем Reactor Context + MDC bridging для correlation ID propagation через всю цепочку.

Reactive стек даёт максимальный throughput при минимальном числе потоков. Для API Gateway это критично — один инстанс обрабатывает тысячи concurrent соединений. Event loop модель Netty эффективнее thread-per-request.

Hot Reload конфигурации

Admin Service публикует события в Redis Pub/Sub при изменении маршрутов, rate limits и consumer limits (3 отдельных канала). Gateway Core подписан на все три — RouteCacheManager обновляет AtomicRef<routes> за < 100ms без перезапуска.

AtomicRef.set() — lock-free обновление, совместимое с reactive стеком (нет synchronized). Redis Pub/Sub — минимальная латентность по сравнению с polling. Три отдельных канала — targeted invalidation вместо flush всего кеша.

Security: Keycloak + RBAC

API consumers используют client_credentials grant → JWT Bearer. Admin UI — OIDC PKCE flow через Keycloak. Gateway Core валидирует JWT через JWKS endpoint. Admin Service использует @RequireRole аннотацию с AOP аспектом и иерархией ролей: ADMIN > SECURITY > DEVELOPER.

Keycloak — централизованный IAM для всех сервисов инфраструктуры. JWKS validation не требует обращения к Keycloak при каждом запросе (кеш публичных ключей). RBAC через AOP — декларативно и не загромождает бизнес-логику.

Distributed Tracing: OpenTelemetry + Jaeger

TracingAttributesFilter добавляет span attributes (route, consumer, correlation ID) в каждый запрос. Трейсы отправляются через OTLP в Jaeger. W3C Trace Context propagation в upstream вызовы. Grafana показывает trace links рядом с метриками.

OpenTelemetry — vendor-neutral стандарт, позволяет сменить backend без изменения кода. Jaeger даёт визуализацию latency по span'ам. Correlation ID + trace ID вместе — можно найти запрос и по бизнес-логу и по трейсу.

Observability: Prometheus + Grafana

Оба сервиса экспортируют метрики через /actuator/prometheus. Prometheus scrapes каждые 15s. 5 alert rules: high error rate, P95 latency, gateway down, high consumer cardinality, high metrics cardinality. Grafana dashboard: RPS, P50/P95/P99, errors, per-consumer breakdown.

Pull-модель Prometheus не создаёт backpressure на сервисы. Per-consumer метрики позволяют видеть кто генерирует нагрузку. Alert на cardinality защищает от cardinality explosion при DDoS с random consumer ID.

Инфраструктура и CI/CD

GitLab CI: build → test → SAST (Semgrep) → Docker → deploy. 4 runners с Docker executor. Secrets из HashiCorp Vault (AppRole). Docker образы в Nexus Registry. PostgreSQL: 14 Flyway миграций (V1–V13, строгий порядок). Traefik 3 как reverse proxy с автоматическим TLS.

Vault вместо GitLab CI variables — секреты ротируются централизованно для всех сервисов. SAST блокирует pipeline при Critical/High findings. Flyway с out-of-order: false — предсказуемая схема БД. Centralized infra (Traefik, Postgres, Redis) — shared между проектами.

Component — Gateway Core Level 3a
incoming proxy JWKS check limit EVALSHA SUBSCRIBE Redis down? per-consumer lookup routes data GET routes HTTP Request [External] от Traefik CorrelationIdFilter [Component] Генерация / проброс X-Correlation-ID JwtAuthFilter [Component] Валидация JWT подписи через Keycloak JWKS ConsumerIdentityFilter [Component] Извлечение azp claim → consumer identity MetricsFilter [Component] Запись HTTP метрик По consumer / route RateLimitFilter [Component] Token Bucket (Lua) Per-route + Per-consumer TracingAttributesFilter [Component] OpenTelemetry span attributes LoggingFilter [Component] Structured logging + Correlation ID RouteCacheManager [Service] AtomicRef hot reload < 100ms RateLimitService [Service] Redis EVALSHA TokenBucketScript (Lua) LocalRateLimiter [Service] Caffeine in-memory fallback (50% limit) DynamicRouteLocator [Service] RouteDefinition из Redis → Spring routes ConsumerRateLimitCache [Service] Per-consumer limits Redis + TTL Keycloak JWKS [External] JWT validation Redis [Database] Rate limits + Pub/Sub + Routes Upstream Service [External] Backend API ЛЕГЕНДА Filter Service External Data Store Async (Pub/Sub)
Component — Admin Service Level 3b
JWT / OIDC /routes /rate-limits /approve /consumers /metrics log action log action log action on PUBLISH on change on change R2DBC INSERT R2DBC PUBLISH ×3 JWKS PromQL HTTP Request [External] от Traefik /api/v1 Security Layer [Component] JwtService + @RequireRole Keycloak roles → RBAC RouteController [Component] CRUD маршрутов фильтрация / пагинация RateLimitController [Component] CRUD rate limit политик ApprovalController [Component] Approve / Reject workflow ConsumerController [Component] API consumers keys / secrets MetricsController [Component] Gateway метрики топ маршрутов RouteService [Service] Бизнес-логика маршрутов ApprovalService [Service] DRAFT → PENDING → PUBLISHED ConsumerService [Service] Consumer CRUD + rate limit привязка AuditService [Service] Audit log всех действий MetricsService [Service] PromQL запросы к Prometheus EventPublishers [Service] Route + RateLimit + ConsumerRateLimit events PostgreSQL [Database] routes · audit_logs rate_limits · consumers Redis Pub/Sub [Database] 3 invalidation channels Keycloak [External] OIDC + JWKS roles Prometheus [External] PromQL API метрики gateway ЛЕГЕНДА Component Service External Data Store Async (Event)
Claude Bot — Architecture
Real-time управление AI-агентами через Telegram с двусторонней коммуникацией — streaming вывод Claude прямо в чат, управление сессиями и файлами через бота
Event-Driven Async-First Claude SDK State Machine
DATA FLOW
message webhook POST + secret query(prompt) streaming chunks webhook event edit message live update session CRUD manage state cwd: project dir secrets webhook secret Telegram User sends message Telegram Bot API webhook events n8n Workflow Event routing Inline keyboards FastAPI Session Router Pydantic v2 · Async State Machine IDLE → RUNNING → DONE max 5 concurrent Claude Code SDK async generator yield chunks · asyncio.Queue Redis Session state TTL 24h auto-cleanup HashiCorp Vault Webhook secret · Bot token Chat ID Project Files G:/projects/* path traversal protection

Streaming через async generator

Claude Code SDK отдаёт ответ по частям. Вместо ожидания полного ответа — async generator с yield на каждый chunk. FastAPI собирает chunks в буфер и через asyncio.Queue отправляет обратно в n8n → Telegram, который обновляет сообщение через edit. Пользователь видит, как Claude «печатает» в реальном времени.

Простой await на полный ответ = UX-катастрофа. Claude может думать минуту. Streaming + edit message создаёт ощущение live-общения и позволяет прервать генерацию, если ответ пошёл не туда.

Session State Machine в Redis

Каждая сессия — конечный автомат: IDLE → RUNNING → DONE. Состояние хранится в Redis с TTL 24h. Запрос в RUNNING-сессию ставится в очередь. Session ID — 16-char hex (64-bit entropy). Лимит: max 5 concurrent сессий.

В памяти процесса — потеря состояния при рестарте. Redis переживает деплой, а TTL автоматически чистит зависшие сессии без cron-задач.

Security: defence in depth

Webhook secret в X-Webhook-Secret header — n8n подписывает каждый запрос. Path traversal protection — многоуровневая валидация путей (normalization, whitelist, chroot check). Все входные данные через Pydantic v2 strict-модели. CORS ограничен только n8n origin.

Бот может выполнять команды на сервере через Claude. Один обход path validation = чтение /etc/passwd. Три слоя защиты: нормализация пути, whitelist директорий, финальный chroot check.

Тестирование: 35+ тестов

pytest-asyncio для async-кода. Redis заменён на fakeredis — полная имитация Redis API без реального сервера. Каждый тест изолирован: свой экземпляр fakeredis, нет shared state. Покрыто: API endpoints, session CRUD, webhook retry logic, Telegram message chunking.

Async-код тестировать сложно: event loop, timing, race conditions. pytest-asyncio + fakeredis дают детерминированные тесты без реальных зависимостей. 35 тестов проходят за 2 секунды.
WatchOfWatch — Architecture
350 независимых циферблатов на Canvas API, 6 фаз анимации при 60 FPS — каждый объект интерполирует углы стрелок по собственной траектории
Canvas API Astro Islands TypeScript Kinetic Typography
Animation Engine
ANIMATION PHASE CYCLE (loops forever) PHASE 1 Chaos random angles PHASE 2 Text Pattern interpolate to target PHASE 3 Wave dual sinusoid PHASE 4 Chaos Fisher-Yates reshuffle PHASE 5 Real Time sync Date.now() PHASE 6 Wave dual sinusoid loop Clock Matrix: 50 × 7 = 350 dials Single <canvas> · requestAnimationFrame · 60 FPS × 50 columns × 7 rows = 350 objects · · · · · · · EACH DIAL OBJECT hourAngle · minuteAngle targetH · targetM · phase · t Key Techniques Clockwise-only interpolation Dual sinusoid wind effect Fisher-Yates shuffle O(n) DPR-aware Retina rendering Rendering Pipeline requestAnimationFrame update 1022 angles batch draw 350 dials composite frame 60 FPS

Однонаправленная интерполяция углов

Стрелки всегда вращаются по часовой. Наивный lerp(from, to) выбирает кратчайший путь — стрелка может дёрнуться назад на 350°, что выглядит как баг. Вместо этого: если target < current, интерполяция идёт через target + 2π — стрелка делает полный оборот вперёд.

350 объектов × 2 стрелки = 700 параллельных интерполяции каждый кадр. Все вычисления — чистая математика без DOM, единственный рендеринг — batch draw на Canvas.

Двунаправленная интерполяция визуально хаотична — стрелки мечутся влево-вправо. Однонаправленная создаёт эффект «механизма» — все стрелки крутятся согласованно, как шестерёнки в часах.

Wind Effect: двойная синусоида

«Волна» бежит по матрице как ветер по полю. Два слоя синусоид с разными частотами: крупная волна (длина = ширина матрицы) задаёт общее движение, мелкая рябь (×3 частота, ×0.3 амплитуда) добавляет органичность.

Одна синусоида выглядит механически. Суперпозиция двух — паттерн, который мозг воспринимает как «природное» движение, но не может разложить на составляющие.

Fisher-Yates shuffle

Между фазами порядок обновления циферблатов перемешивается. Fisher-Yates даёт идеально равномерное распределение за O(n) — каждая перестановка равновероятна.

Math.random().sort() имеет bias и O(n log n). При 350 элементах bias заметен визуально — некоторые области «обновляются» раньше. Fisher-Yates это устраняет.

Accessibility и производительность

prefers-reduced-motion: при включённой настройке анимации выключаются, стрелки показывают статичное время. aria-labels на canvas с текстовым описанием. noscript fallback со статичным изображением.

DPR-aware рендеринг: canvas физически в 2-3× больше CSS-размера на Retina. Без этого стрелки размытые.

Pattern Editor (бонус)

909 строк, отдельный WYSIWYG-инструмент. Клик по ячейке → выбор угла для часовой и минутной стрелки. Паттерн экспортируется как JSON-массив и подключается к основному движку.

Позволяет визуально создавать надписи и фигуры, которые движок потом анимирует в фазе «text pattern».

Load Test — API Gateway
Load Test Results