Андрей Марченко Tech-Lead Core tinkoff.ru
Андрей Марченко Tech-Lead Core tinkoff.ru

https://tramvai.dev/

Тинькофф представил новое opensource-решение  для построения SSR приложений на React. На KOTELOV podcast поговорили с Tech-Lead Core команды tinkoff.ru Андреем Марченко о том, зачем был необходим свой фреймворк,  что планируется добавить в него в ближайшее время и почему opensource – хороший способ рекламы компании.

Для чего нужен Tramvai?

Tramvai – это что-то типа Nest.js, только для enterprise-приложений.  Мы хотели добиться того, чтобы можно было в разных приложениях использовать код, написанный другими командами. Стремились, чтобы его было легко переиспользовать, расширять, дополнять функциональность. Это все построено на DI, модульности, можно максимально адаптировать под себя. Есть много дополнительной функциональности, которой нет в том же Nest.js, например. 

Tramvai появился органически. У нас было большое монолитное приложение и нам нужно было разбить его на множество репозиториев. Основная задача — уменьшить Time To Market. 

Какой стэк использовался до Tramvai?

Лет 6-7 назад была CMS на Java, были Java приложения. Потом появился React, возникло множество команд, было написано много кода. Три года назад запустили «трамвайное» приложение.

На чем пишется стэк бэка?

Основной язык – Java. Но у нас много уровней бэков, зависит от подразделений. Есть также разработчики Scala, Kotlin, Gо.

Все ли проекты tinkoff.ru уже перешли на Tramvai?

У нас 50% проектов сейчас на Angular. Большинство публичных проектов на React. Это, кстати, одна из причин, почему в Tramvai есть много внутренних модулей и возможностей для интеграций. Его проще продавать внутри, потому что изначально из коробки было сделано так, чтобы это работало  внутри компании.

За чем будущее: Vue, Angular или React?

Если говорить про Тинькофф, то у нас доминирует React. У Vue.js много проблем, там слишком жесткий переход на Composition API, поэтому он точно не победит в ближайшее время React. Однако  Vue.js использует, например, OZON и другие крупные компании. Но лично я ставил бы на compile time различные фреймворки: это позволит решить многие проблемы, с которыми не в состоянии справиться текущие решения. 

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

Зачем вышли в opensource? Была ли мотивация получить поддержку сообщества?

Если бы не было opensource, не было бы и Tramvai.  Кроме того, сам тип opensource сейчас максимально дешевый. Мы не ухудшили свой DX, внутри большая монорепа, мы просто разделили код. Для нас больше челленджа сделать общую часть, чтобы она могла быть опенсорсной. Также была задача попиарить саму компанию, рассказать, что мы делаем крутые вещи.

Как структурно описываете подход?

Сейчас используем future slicing-подход, можно разбивать на модули. Но особенной проблемы в описании нет, так как у нас есть  отдельный сервис. Внутри платформы происходит много того, чего не видит пользователь. Если вы заходите на tinkoff.ru, есть персонализация, под вас генерируется HTML  с учетом ваших параметров, менеджеры могут завести новую акцию за 5 минут. То есть внутри идет очень много работы, там полноценный конструктор сайтов, тысячи страниц.

Как лучше всего измерять производительность приложения Трамвай? Если зайти на Lighthouse, то видно, что у tinkoff.ru много проблем, хотя по факту все работает хорошо.

Есть мнение, что если хочешь испортить себе настроение, то зайди в Lighthouse и взгляни на свои метрики. Здесь нужно внимательно смотреть, какая именно метрика и почему она ухудшилась. И еще надо проанализировать, а что у конкурентов. У них может быть не сильно лучше. 

На мой взгляд, есть несколько проблем сейчас. Первая, как быстро выдается HTML, и тут у нас  есть планы по улучшению. Вторая – если ты вставляешь аналитику, то можешь забить на метрики. Кроме того, у нас как-никак React-сайт, и это также влияет.

Планирует ли Тинькофф переходить на ненативную разработку, возможно, на React Native?

У нас много фронтенд-разработчиков, но еще больше мобильных нативных разработчиков. У нас  все приложения нативные – так сложилось. React Native  довольно сложный. Если ты хочешь делать массивные мобильные приложения, ты все равно уйдешь в нейтив. Мы делали внутренние исследования, изучали возможности React Native  и Flutter, но в итоге пришли к выводу, что все же будем расширять количество мобильных разработчиков.

Что хотели бы добавить в Tramvai?

Мы следим за конкурентами, за их релизами, если появляются крутые фичи, думаем, как реализовать их  у нас. У нас уже есть файловый Based Routing, сейчас будет еще для микрофронтедов уровня компонентов.  С этими двумя фичами можно будет дальше идти и заявлять, что у нас есть нативные «микрофронты».

Вы заинтересованы в продвижении фреймворка Tramvai?

Да, хотим попробовать, just for fun. В целом opensource нужен для того, чтобы пиарить компанию. Важен, в том числе, вопрос увеличения сотрудников. Это очень хорошо работает в Angular. Много разработчиков пишут на Habr статьи об этой платформе для разработки, и в Angular-наборе это очень сильно влияет: приходят много людей и говорят, что они знают Angular.

Мотивируете ли вы разработчиков писать статьи?

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

Будем рады обсудить в комментариях.

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