К основному содержимому
к выпуску
Конспект выпуска2025CTO

Веб Т-Банка: от монолита к независимым блокам

Двадцать седьмой выпуск Code of Leadership: Александр расспрашивает Виктора Фирсова, который пришёл в ТКС-банк в апреле 2012 года, а сейчас руководит отделом из двух продуктов — личного кабинета для физлиц и платформы продуктов привлечения в публичном вебе. Разговор идёт по карьере гостя и по тому, как за эти годы менялся веб компании.

Code of Leadership · выпуск №277 минут

Конспект сокращён относительно полного выпуска; примеры и оценки передают опыт и позиции участников.

Основная линия материала
01

Камчатка, радиотехникум и первые сайты

Виктор родился на Камчатке, в пять лет семья перебралась в Нижний Новгород, который он считает родным городом. После школы был технический колледж, бывший радиотехникум: практические работы по проектированию плат и разводке дорожек, а на стажировке — оптоволокно между домами в Тушине, чердаки и ожидание, пока админ перезапустит роутер. Верстать сайты ему показал товарищ прямо во время игры в Counter-Strike, минуты за три; Виктор говорит, что это изменило его жизнь, а Александр замечает, что силу такого нетворкинга обычно недооценивают: рядом должны быть люди, чьё мастерство пока выглядит для тебя магией. Дальше были свои сайты, SEO и партнёрки, перепродажа сделанного сеошникам и городской форум, движок которого он за день вернул на PHP: друзья раздали ссылки, пользователи пришли, денег почти не было, зато накопился опыт.

Этого хватило, чтобы получить первую работу за пятнадцать минут: после собеседования в нижегородском офисе mail.ru Виктору позвонили с офером, пока он ехал домой. Проработал он там недолго — в девятнадцать лет пришлось выбирать между очной учёбой и заработком, и учёбы хватило на два месяца. Дальше был стартап из трёх человек, он, технический директор и бизнес-заказчик, запускавший новостной портал: сутки и выходные напролёт, полностью по своей воле. Потом крупная веб-студия с однотипными сайтами на одной CMS, включая сайт большого автосалона, где день стал предсказуемо скучным. В ТКС-банк Виктор перешёл в апреле 2012 года, потому что хотел переехать в Москву: тогдашний технический директор согласовал офер за двадцать минут по телефону, а культурным шоком стало отсутствие жёсткого контроля — коллега умудрялся фрилансить в рабочее время. Через полгода бизнес-заказчик назвал Виктора ценным сотрудником, и это его удержало.

02

React, маркетплейс и монолит

Первые три года Виктор отвечал за привлечение: лендинги, рекламные акции, полный доступ к проду и прямой разговор с бизнес-заказчиками, а на встречах его часть пропускали со словами, что у Фирсова всё чётко; свою тогдашнюю роль он описывает как лида и старшего разработчика одновременно, а «сеньор», по его словам, понятие растяжимое. С React он познакомился на новогоднем лендинге, где Дед Мороз высыпал из мешка подарки, а пользователю нужно было их ловить. Соседняя команда, делавшая личный кабинет для юрлиц, тогда же взяла Angular; почему пути разошлись, Виктор не помнит. Александр пересказывает легенду, которую ему передавали причастные: потока кандидатов не хватало, и второй фреймворк позволял забрать тех, кто прошёл технические секции, но не хотел писать на React, а заодно развести потоки найма. Виктор допускает, что предпосылки были такими, но история умалчивает.

Бизнес хотел маркетплейс без отдельного личного кабинета: авторизованный пользователь ходит по всему сайту и оформляет продукты, была даже попытка по-брокерски продавать чужие, кажется ипотеку, но продукт не сложился. Переделка заявочных процессов заняла около полугода, заказчик переносил ожидание тяжело, а на выходе получился монолит, объединивший публичную часть и личный кабинет: время ожидания релиза выросло до 20–30 дней, прогнозировать было невозможно, и монолит приходилось долго и больно стабилизировать перед каждым релизом. Админка появилась, но гибкости в управлении контентом не хватало, зато можно было настраивать роуты и параметры страниц; при этом падения и долгие простои случались чуть ли не регулярно — первая ласточка того, что с миграцией на новый стек что-то пошло не так. Александр добавляет, что проектировали её сами фронтендеры для себя, отсюда костыли: неаккуратная выкладка на фронте — это F5 сразу у всех пользователей. Параллельно прорабатывали контракт с системой персонализации ради сегментных лендингов и трафика из поисковиков, но затачивать страницы под сегменты так и не вышло, и через два года всё пришлось переделывать снова.

03

Микрофронтенды и перезапуск личного кабинета

Волевым решением монолит форкнули на балансировщике, отрезав заявочную часть по префиксам. Команда выросла с двух почти равных разработчиков до пяти-семи человек и вертикализировалась под продукты: без общего бэклога и функционального колодца, с лидами, которых Виктор с Александром сажали в новые команды. Доставка ускорилась, но сквозные функции пострадали: обещанный редизайн Виктор раскатывал полтора месяца, потому что соседние команды ломали ему тесты. Александр формулирует правило: автономия команд оплачивается потерей горизонтали, и возвращать её надо платформенными средствами, а не координацией через проекты. Отсюда идея Виктора: блоки публичной части должны стать независимыми от приложения — публиковаться как npm-пакеты или подгружаться в рантайме. Микрофронтендов тогда ещё не использовали, и кто принёс технологию первым, в компании спорят до сих пор; сейчас на конструктор страниц перешли команды далеко за пределами привлечения, а сайт для инвесторов собрали за две недели.

В 2022 году пришлось резко отказаться от зарубежной инфраструктуры и оценить риск потери мобильных приложений: фокус бизнеса примерно с 2018 года был на мобилке, в вебе оставалось около пятнадцати процентов её функциональности, а критичных сценариев насчитали порядка сорока эпиков. Личный кабинет жил на виртуалках во внутреннем дата-центре, ресурсов при росте нагрузки не хватило бы, а бизнесу продавали не «сделаем веб снова великим», а третью ногу табуретки, без которой она заваливается. К моменту, когда приложения убрали из Apple Store и Google Play, архитектура была проработана: новую главную стартовали за неделю до событий конца февраля 2023 года, закончили 29 апреля, две недели стабилизировали и залились прямо во время сбоя на подсистеме, которую уложил старый кабинет. За тот год команда выросла примерно с пятидесяти до ста семидесяти человек, около семидесяти разработчиков наняли с рынка, запустили главную, оплату по QR-коду и перевод по номеру телефона, а уже в начале следующего года интерфейсы веба и мобильного приложения унифицировали через WebView за три недели.

Выводы

Что стоит унести с собой

  1. 01Автономные продуктовые команды ускоряют доставку, но сквозные изменения дорожают: горизонталь возвращается независимо публикуемыми блоками, а не координацией через проекты.
  2. 02Экраны на WebView встроили прямо в главный экран мобильного приложения — так, что даже свои дизайнеры не сразу находят, где он; трафика из приложения в веб теперь в разы больше, чем из самого веба.
  3. 03Ребрендинг вели в секрете: рабочую группу собрали под видом работ по сертификатам и зеркалам, людей выделили за одну встречу благодаря топ-приоритету, а раскатку вели штабом несколько дней по плану чуть ли не поминутному.
  4. 04На двух стульях не усидеть: Виктор выбрал тип руководителя, остающегося в технике, — час-полтора кода вечером, возвращение в заброшенный институт и признание, что статусы проектов он разбирает регулярно, а собственный путь развития — нет, хотя без такого анализа легко переоценить свой уровень.

Источники