Усиливаем финтех-компанию экспертизой в разработке: «Рево Россия»
Некоторые компании на этапе запуска и развития основных функций фокусируются на идее продукта и его ценности, а разработку передают подрядчику. Это помогает не думать о потребностях in-house команды, освобождая время для работы по выходу на рынок. Именно так и сделала финтех-компания «Рево Технологии», которая пришла к нам с запросом усилить их команду и вывести продукт из оффлайна в онлайн.
Задача — описать бизнес-логику приложением с API-based архитектурой
В 2013 году «Рево» одной из первых в России предложила рассрочку на товары в интернете. Заявка клиента на оплату частями заполняется быстро и без бумажных распечаток, что помогает магазинам-партнерам привлекать больше покупателей. Таким подходом финтех-компания смогла заинтересовать инвесторов: Vostok Emerging Finance и Baring Vostok вложили в «Рево» сначала 5 миллионов долларов, а спустя 2 года — еще 20 миллионов долларов.
Когда «Рево» обратилась в Evrone, сервис выглядел как офлайн-приложение для планшетов: клиент приходит в магазин, продавец помогает ему на месте оформить рассрочку, и тот уходит с товаром. Для покупок онлайн был доступен очень простой личный кабинет на Bootstrap, который, по сути, просто дублировал действия продавца-консультанта.
Мы подключились на этапе, когда процесс оформления займа нужно было вывести в онлайн. Мы должны были усовершенствовать калькулятор расчётов, разработать личный кабинет с расширенным набором функций, чтобы клиент мог погашать задолженности онлайн, а также автоматизировать систему кредитного скоринга.
В целом перед нами стояла задача сделать удобное приложение, которое описывает бизнес-логику, автоматизирует кредитный цикл и учитывает все детали. В основе — бизнес-калькулятор, а вокруг него — много микроприложений.
Поделили монолитную структуру на микросервисы
До участия нашей команды проект уже существовал около трёх лет, над кодом трудились несколько сторонних подрядчиков.
Большая часть бизнес-логики была прописана не самым удобным образом: на клиентской части в виде отдельных js-файлов. При этом одна функция могла дублироваться в разных файлах: одинаковая по сути, но разная по исполнению. Из-за этого страницы загружались дольше, существующее решение нужно было поддерживать для всех браузеров на любых устройствах. У пользователей с отключенным JavaScript прописанная на клиентской части функция просто не работала. А изменения в эти функции приходилось вносить часто. Например, когда ЦБ объявлял новые ставки — нужно было менять финансовые функции. Последствия такого вмешательства могли быть самыми неожиданными.
Кроме того, для разных типов оформлений займа (оффлайн и онлайн) у «Рево» было много API. Если хотелось добавить что-то новое — логирование, коммуникацию, отправку смс — нужно было дублировать эти функции во все API.
Чтобы упростить понимание и взаимодействие пользователей с конечными точками API, мы разбили монолитное приложение на микросервисы. Так клубок распутывается быстрее, чем в огромной кодовой базе модуля выдачи, где для одного крохотного изменения нужно затронуть около 40 файлов, а потом потратить много времени на тесты.
В итоге мы выделили личный кабинет в одно микроприложение, а модуль выдачи займа — в другое. Все расчёты медленно и постепенно перенесли на сервер — то есть на бэкенд. Причем переход из монолита к микросервисам мы осуществили интересным способом: склонировали приложение и удалили ненужные части при общем бэкенде.
Теперь, когда есть разделение и новый API, рутинные вещи делаются на раз-два. Где-то мы избавляемся от старого кода и внедряем новые решения, где-то используем старые механизмы, однако декомпозиция программного обеспечения на микросервисы позволяет не разбираться в legacy системы, если это не нужно для решения конкретной задачи. В целом работа идет гораздо проще и занимает меньше времени. К тому же новым разработчикам в принципе привычнее видеть микросервисы, а не монолиты. Сейчас, например, мы переходим на Kubernetes.
Сделали удобный личный кабинет
В первой версии личного кабинета покупатель должен был заполнять заявку сам, без продавца-консультанта. Затем его данные нужно было отправлять в скоринг, чтобы тот собирал общую картину со всех агрегаторов и в итоге определял доступный к выдаче лимит.
Скоринг мы реализовали через API стороннего бюро: написали модуль, который отправлял туда данные, после чего бюро собирало более полную информацию и выдавало клиенту более аккуратный и точный лимит.
Для нового личного кабинета мы разработали API: начиная от идентификации, аутентификации, регистрации и заканчивая оформлением продуктов. Сейчас основная часть наших сил направлена на этот API, фронтенд-команда занимается UI-логикой.
После того, как мы доработали личный кабинет, нужно было дать клиенту дополнительные возможности: переносить дату платежа, подключать смс-информирование, переводить деньги в подарок другу, оплачивать услуги ЖКХ и штрафы.
Автоматизировали подключение магазинов
Для развития B2B-сегмента мы разработали личный кабинет директора магазина или сети магазинов, где партнёры «Рево» могут смотреть аналитику и управлять опциями. Ещё реализовали автоподключение к системе: представитель магазина заполняет несколько форм, всё отправляется на проверку и оформляется в электронном виде. Внедрять «Рево» теперь очень легко. Чтобы магазины могли использовать функционал оплаты частями в своём движке, мы написали плагины и SDK под Ruby, PHP, .NET и другие языки. Сейчас команда «Рево» интегрировала это ещё и с 1С-Битрикс.
Интегрировали кредитных брокеров и розничные сети
Чтобы увеличить количество клиентов, нужно было подключить кредитный брокер. Он работает так: пользователь заходит в онлайн-магазин, нажимает кнопку «Купить», а там выпадает агрегатор предложений, из которых он выбирает наиболее интересное. Мы интегрировали «Рево» с несколькими такими брокерами. Также добавили прямые интеграции с большими компаниями — например, «Озоном», «Связным», «Ситилинком», «Детским миром», PayU.
Сделали API и для российского, и для европейского рынка
К тому времени, как «Ревоплюс» вышла на польский рынок, мы уже сделали публичный базовый API для бизнеса, который автоматизировал процессы по выдаче любых займов. На сегодняшний день в России он используется очень активно: партнёры «Рево» с его помощью позволяют своим клиентам получать займы. Польша в итоге отделилась: у них свои репозитории, это в целом другой продукт, — но они пользуются таким же API.
Ruby — отличный инструмент, чтобы писать бизнес-логику
В «Рево» много бизнес-логики, и она очень сложная, с большим количеством нюансов. И как раз для таких случаев хорош Ruby: на нём удобно разрабатывать расчёты для банков и другие финтех-решения, в том числе программное обеспечение для МФО. Благодаря экспертизе нашей команды в Ruby «Рево» и выбрала Evrone.
На бэкенде мы использовали RoR, Sinatra, Elixir/Phoenix, фронтенд писали на React. База данных хранится в MySQL.
Грамотная архитектура даёт быстрый рост
Монолитную структуру мы разделили на микросервисы, а разрозненные API наоборот объединили. Результат — API-ориентированная архитектура «Рево» стала эффективнее, внедрять новый функционал с её помощью теперь быстро и легко, рабочие процессы МФО автоматизированы. Появились новые направления, интеграции и продукты, выросла клиентская база.
В 2020 «Рево» провели ребрендинг, сменив позиционирование, айдентику и название. Сервисы компании будут развиваться под новым брендом «Мокка», а мы продолжим участвовать во внедрении новых функций. Для каждого продукта нужен свой подход, который продиктован логикой процессов. То, что подойдёт одним, не подойдёт другим. Если вы хотите узнать, что лучше всего сработает в вашем сервисе — заполните форму ниже и мы свяжемся с вами, чтобы вместе придумать ваш собственный сценарий развития.