Единая цифровая платформа: как мы строили импортозамещенную экосистему для банка

Привет, Хабр!

Меня зовут Никита Шехов, я руковожу командой разработки "Единой цифровой платформы" (ЕЦП) в РСХБ.Цифра. В этой статье хочу рассказать, как мы создавали платформу для автоматизации бизнес-процессов банка, с какими вызовами столкнулись и какие решения оказались ключевыми. В будущем планирую рассказать про историю проекта, выбор архитектуры, сбор команды и борьбу с импортозамещением.

Что такое ЕЦП?

Единая цифровая платформа — это микросервисная экосистема, объединяющая технические компоненты и бизнес-сервисы для автоматизации процессов в Россельхозбанке. Её ядро включает следующие сервисы:

  • Управление доступом (RBAC)
  • Логирование и аудит
  • UI-кит для фронтенда
  • Работу с файлами и документами
  • Интеграция с внешними системами (гибкий адаптер)
  • Уведомления
  • Шаблонизатор для печатных форм
  • BPM-движок, для работы с процессами

На базе ЕЦП можно развернуть любой бизнес-процесс — от кредитования до управления проблемной задолженностью. При этом весь базовый функционал уже готов "из коробки". Мы используем PaaS-платформу AppFarm (рассказываем о нём в статьях на Хабре) для размещения наших сервисов, поэтому у нас не болит голова о процессах публикации от среды разработки до продакшена.

С чего всё начиналось

В конце 2022 года перед нами стояла амбициозная задача — импортозаместить зоопарк из 5+ legacy-систем (CRM, управление залогами, скоринг и др.), работавших на зарубежном стеке. Условия были жёсткими: было всего два года на переход, в интеграциях нужно было переключить 400+ потоков данных на импортозамещенные решения. Кроме того, в плане безопасности решения должны были соответствовать требованиям регуляторов. И, конечно же, переход должен был быть непрерывным для бизнеса: параллельно мы поддерживали старые и новые системы.

На старте внутренняя команда с опытом в микросервисы состояла всего из 5 человек, 40 зибилистов, 3 Jboss специалистов. Нас ожидал найм 60 человек на новое решение и 40 "плавающих" сотрудников от вендора, которые приходили на два месяца, а потом увольнялись.

Системы, которые требовалось заменить, дублировали функционал, имели устаревшие интерфейсы (например, IE с ActiveX) и слабо взаимодействовали друг с другом. Решение было очевидным — построить единую платформу.

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

Не то что бы всё это было категорически необходимо, чтобы обеспечить непрерывность бизнеса при импортозамещении, но если уж начали строить Единую цифровую платформу, то к делу надо подходить серьёзно.

Кастомизация vs. Собственная разработка

Мы рассматривали коробочные решения (FIS, ELMA и т.д), но отказались от них по трём причинам:

1. Зоопарк технологий: каждая legacy-система использовала свой стек (Java, .NET, проприетарные СУБД), добавлять еще одно универсальное решение — всё равно, что принять тот факт, что "в мире было 12 стандартов, давайте сделаем один общий для всех, так в мире стало 13 стандартов".

2. Отсутствие команд: большинство систем поддерживали вендоры, а внутренние отделы занимались только сопровождением и чуть-чуть развитием.

3. Гибкость: готовые решения не позволяли быстро адаптироваться под меняющиеся требования регуляторов.

Выбор пал на собственную разработку и микросервисную архитектуру — это дало возможность переиспользовать общий функционал для всех 5 систем.

Сбор команды: ад или приключение?

Сформировать команду из 60 человек за полгода — задача не для слабонервных. Собирать ИТ-команду — это не просто дело техники, это настоящее искусство. Возможно, именно поэтому этап набора сотрудников становится одним из самых сложных этапов проекта. Когда перед тобой стоят шестьдесят вакансий, а каждая позиция требует идеального кандидата, начинается настоящая гонка за таланты.

Именно тогда, в разгар глобальной борьбы за квалифицированных спецов, я столкнулся с первой серьёзной проблемой — собеседования. Их было столько, что по вечерам хватало сил только сверлить взглядом стену в тишине, а мозг просился не открывать глаза на следующее утро. После нескольких дней по 4-6 собеседований в день, было принято решение остановиться на 2-3 собеседованиях в день. Были изучены тысячи резюме, и каждый звонок приходилось выбирать между талантливым новичком, мечтающим о зарплате стариком и матерым специалистом, готовым принять предложение только с условиями космического полёта.

Например, как забыть разговор с юнцом, заявившим твёрдым голосом: "Меня устроит зарплата не меньше трёхсот"? Или диалог с мидлом, недавно перешедшим границу среднего звена: "Ну что вы! Меньше пятисот даже не предлагайте!" На таком фоне встреча с действительно хорошим кандидатом воспринимается как чудо, сравнимое с обнаружением биткоинов на старой флешке.

К счастью, к нашей команде присоединился отличный HR, он оказался настоящим спасителем, который избавил нас от потока неподходящих резюме, отбирая и показывая самых интересных кандидатов утром за чашечкой кофе.

В поисках золотой середины. Одной не совсем неожиданностью оказалась любовь наших ребят к удалёнке. Как только появилась возможность вернуться в офис на гибрид, было очевидно, что большинство предпочтёт остаться дома. Вся эта шумиха вокруг гибрида звучала примерно так: "Нет, спасибо, я лучше буду сидеть дома, а не вот эти вот офисы и общение вживую".

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

Ограничения и реальность банковского сектора. Про третью волну боли: разработка банковских продуктов накладывает особые ограничения. Административные права не разрешены (и так во всех банках), доступ в интернет ограничен, рабочее окружение строго регламентировано. Даже шутливая просьба сотрудника дать другой компьютер превращается в почти философский диспут — большинство ребят мечтает работать не через виртуальные машины и RDP, а на собственном ноутбуке, желательно с яблочком на крышке. Однако реалии в банковском секторе совсем другие: в то время пока Яндекс меняет м2 про на м4 про, некоторые компании переходят с Lenovo на Квадру.

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

Так что да, пожалуй, собирать команду — это приключение, полное эмоций и сюрпризов. Но главное, что в конце пути ждёт награда — дружный коллектив настоящих профи, объединенный единой целью и общим делом.

Старт разработки: первые шаги

Сначала мы создали технические компоненты, критичные для импортозамещения:

1. Фронтенд(UI-Kit): Переход с IE на современный стек (React + TypeScript).

2. Проработка архитектуры.

3. Проектирование базовых сервисов (ядровые компоненты платформы, перечислены в начале статьи).

4. Интеграции: Замена IBM на Apache Kafka и Artemis.

Импортозамещение: двойная нагрузка. Параллельно с разработкой ЕЦП приходилось поддерживать legacy-системы, интегрировать их с новыми импортозамещёнными сервисами (например, Kafka вместо IBM шины), работать с вендорами, которые часто "исчезали" из-за санкций. Пример: Переход на Artemis потребовал доработать все интеграции. Каждый сценарий тестировали дважды — на старой и новой шине.

Чего не хватало. Банковские ограничения добавили сложностей, например, не было доступа к продакшен-данным. Это норм, но даже взглянуть было нельзя. Тестировали на обезличенных данных, что приводило к багам в проде.

Ограничения банковского сектора: развёртывание новых серверов и сервисов занимало больше времени, чем мы планировали, в связи с необходимостью соблюдать политики конфиденциальности клиентов банка и другие требования регулятора.

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

Отсутствие инструментов разработки (в самом начале):

  • Kafka UI — для работы с топиками, а доступ к Кафке был только у сервиса, развернутого в дев окружении банка.
  • CloudBeaver — веб-интерфейс для СУБД (требовалось работать сразу с несколькими видами БД).
  • Debezium — CDC для синхронизации данных.

Тестирование: Playwright vs. Java. Изначально автотесты писали на Java, но столкнулись с дефицитом специалистов. Перешли на Playwright, потому что нам были важны такие параметры:

  • Low-code: Тесты можно "накликивать" без глубоких знаний программирования.
  • Скорость: Параллельный запуск 50+ сценариев.
  • Поддержка микросервисов: Интеграция с API Gateway.

У решения были и минусы — высокие требования к инфраструктуре, каждый тест — отдельный контейнер.

Что в итоге?

За первый год нам удалось:

  • Сформировать команды ядра и продуктовые,
  • Запустить ЕЦП в пилотной эксплуатации,
  • Перенести 3 из 5 бизнес-направлений в виде MVP,
  • Сократить время выпуска релизов с 1 месяца до 1 недели.

За второй год:

  • Перенесли полностью функционал 4 из 5 направлений,
  • Перешли от стадии импортозамещения к стадии развития действующих продуктов,
  • Часть продуктовых команд переключились на развитие новых процессов вместо импортозамещения и даже успели какую-то часть внедрить в промышленную эксплуатацию.

Вернусь на Хабр с историями, что и как мы импортозамещали в 2025 году, как мы проектировали архитектуру ЕЦП, почему выбрали React вместо Angular.

Сталкивались ли вы с импортозамещением legacy-систем? Сталкивались ли с заменой Oracle/Siebel? Чем заменили? Какие инструменты и подходы оказались полезными?

P.S. Если есть вопросы по стеку или организации процессов, спрашивайте в комментариях!

Читать на сайте источника »