Привет! Меня зовут Илья, я директор департамента разработки в ЮMoney. За каждым малозаметным обновлением может стоять месяц работы: проработка архитектуры, дизайна, код-ревью и множество проверок безопасности. В ЮMoney мы смогли совместить тщательный контроль с бешеной скоростью — и делаем до 100 релизов в день. Расскажу, как мелкие задачи спасают от больших рисков и что помогает нам «катиться» быстрее.

Какие процессы влияют на задержку разработки

Продукт проходит много этапов перед выходом в продакшн. За малозаметными изменениями скрывается большая работа разных команд. Некоторые этапы длятся дольше других:

  • Техрешение требует времени для интеграции в архитектуру. Без апрува архитектурного комитета разработку не запускаем.

  • UI-исследования дизайнеров определяют логику продукта. Мы стараемся не начинать разработку без проработки интерфейса.

  • Код-ревью раньше назначали всем разработчикам отдела. И код мог не проверить никто из-за коллективной ответственности. В итоге мы наладили процесс код-ревью. Теперь алгоритм автоматически назначает задачу на 2-3 участников команды + внешнего эксперта. Сокращение количества участников ускорило процесс.

Также важно до начала разработки точно оценить задачи­­ в стори-поинтах (SP). У каждой команды своё понимание, сколько SP может весить задача на их проекте. Бывает, разработчики оценивают задачу слишком позитивно, при этом время разработки может увеличиться. Важно извлекать уроки для точности будущих расчётов.

Что помогает ускорить разработку в финтехе

Скорости мы достигаем за счёт автоматизации и грамотной декомпозиции задач.

  1. Декомпозиция больших тасок на мелкие. В среднем разработчик тратит на одну задачу около полутора дней. Мы не даём задач на месяц и больше — ими сложно управлять, высок риск потери времени.

  2. Код-ревью с ограниченным числом специалистов. Ускоряет проверку, исключает перекладывание задач, не размывает обязанности.

  3. Интеграционные автотесты после код-ревью. У нас их несколько тысяч на всю систему. Ручное тестирование дало бы один релиз в неделю вместо нескольких сотен. Автотесты сокращают время и гарантируют качество.

  4. Автоматизированный выпуск релиза. В финтехе у разработчиков, которые пишут код, нет доступа к продакшну — так мы выполняем требования безопасности. Релиз автоматически назначается боту отдела эксплуатации, который выкладывает его на сервера. Процесс полностью автоматизирован: алгоритмы проверяют, все ли задачи закрыты и всё ли нормально на каждом этапе. Это экономит время и помогает избежать проблем в коммуникации.

Когда я пришёл в ЮMoney в 2014 году, все релизы делались вручную релиз-менеджером. На это уходил целый день, плюс ещё один закладывали на выкатку. Сегодня автоматизация ускорила процесс в сто раз.

Как мы выкатываем релиз безопасно

Все наши релизы — канареечные (подробнее в этой статье). Мы выкатываем релиз только на 5% трафика и наблюдаем ошибками: если на сервере ничего не сломалось, катим дальше на все сервера, иначе — откатываем и чиним.

Человек решает только одно: катить дальше или возвращаемся назад. Остальное делают алгоритмы.

Мы используем набор практик для безопасного написания кода — SSDLC (Secure Software Development Lifecycle):

  • Тестировщик проверяет бизнес-логику согласно требованиям продуктового менеджера.

  • Параллельно с этим запускается автоматический процесс проверки исходного кода и внешних библиотек на предмет уязвимостей.

  • Специальное ПО проверяет каждый пулл-реквест на соответствие регламентам и требованиям безопасности.

  • Проводим статический анализ каждого пулл-реквеста: программа анализирует код на уязвимости.

  • Запускаем динамический анализ DAST, когда программа пытается взломать наш код.

Итог

Раньше некоторые процессы затягивали сроки релиза, а сейчас никак не влияют — процесс отлажен. Декомпозиция задач помогает избежать рисков с задержкой сроков, автоматизация ускоряет выкатку. Мы убрали человеческий фактор и рутину из уязвимых мест. Это ускорило процесс в сотни раз и сделало его надёжным и предсказуемым.


А что вам удалось автоматизировать и тем самым улучшить процесс? Делитесь своими наработками в комментариях. Буду рад обменяться опытом.

Комментарии (15)


  1. RodionGork
    14.10.2025 07:35

    Хех. Я на своём сайте правлю PHP "по-горячему". Получается сколько раз :w в виме нажал - столько релизов и получилось.

    В целом хотя оперативная доставка решения на прод - дело важное, тут никто не спорит - но измерять её количеством релизов в день или в час - это как-то странно :)


    1. JohnGear
      14.10.2025 07:35

      в целом автор молодец, т.к. борется с внутрикорпоративной бюрократией. Напомню что юмани это в прошлом яндекс деньги (до сентября 2020 года). И борется, на мой взгляд, достаточно интересными методами, например "Декомпозиция больших тасок на мелкие". Но, как писал коллега выше "сколько раз :w в виме нажал - столько релизов и получилось" означает, что это по сути иммитация бурной деятельности. Ускоряет ли это разработку продукта? Скорее да, т.к. обходятся бюрократические припоны.


    1. ilyakashlakov Автор
      14.10.2025 07:35

      Про количество релизов это скорее фанфакт) У нас нет цели делать много релизов, скорее мы стремимся делать их быстро


  1. ne_pridumal_nik
    14.10.2025 07:35

    А можно поподробнее как вы планируете работы? Как-будто и хорошо, но и не очень далеко вперёд планировать выходит с задачами, которые по полтора дня делаются
    Кто вообще нарезает, какая структура команды и что делать с очень уж большими фичами, которые затрагивают несколько команд?)


    1. ilyakashlakov Автор
      14.10.2025 07:35

      Большие проекты поступают в команду уже с проработанным техническим решением от системных аналитиков. Далее один из разработчиков команды проводит декомпозицию проекта. Разработчик нарезает задачи и добавляет деталей, которых нет в техническом решении, потому что оно достаточно высокоуровневое. Затем строится квартальный план работ и составляется диаграмма Ганта, учитывающая основные вехи проекта. Команда берёт в работу эти задачи и разбивает их на спринты. Если проект на несколько команд, то ничего кардинально не меняется.


  1. WebSerGe
    14.10.2025 07:35

    У каждой команды своё понимание, сколько SP может весить задача на их проекте. Бывает, разработчики оценивают задачу слишком позитивно, при этом время разработки может увеличиться.

    Зависит от команды, для эффективных команд после оценки добавляем как минимум 20% к их оценке. Для менее эффективных будет x2 или даже x3.

    И разработчики очень часто оценивают время разработки неправильно, поэтому это должно учитываться.


  1. WebSerGe
    14.10.2025 07:35

    >В ЮMoney мы смогли совместить тщательный контроль с бешеной скоростью — и делаем до 100 релизов в день.

    Я выгорел после достижения 2 основных релизов в месяц и 30 не основных после 5 лет как Team Leader. Как у Вас с таким количеством релизов обстоит с текучкой кадров?


    1. ilyakashlakov Автор
      14.10.2025 07:35

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


  1. WebSerGe
    14.10.2025 07:35

      + внешнего эксперта

    Прошу прощения за несколько вопросов, как внешний эксперт работает без знания code base? Как можно делать ревью кода без знания проекта?


    1. ilyakashlakov Автор
      14.10.2025 07:35

      Под внешним экспертом я имел в виду разработчика из другой команды разработки, но внутри компании. У нас разработчики переходят между командами. Поэтому в соседних командах зачастую есть эксперты по кодовой базе.