Как мы разработали банковское приложение под ключ за 6 месяцев, и почему мы готовы это повторить
Разработать полноценное мобильное приложение, особенно для банка, — это долго. На создание только одного MVP уйдёт порядка 9 месяцев. Вторая сложность — найти собственную команду разработчиков — это дорого, из-за высокого спроса на ИТ-специалистов, особенно с опытом в финансовой сфере.
Мы в Surf за 12 лет разработали много финтех-приложений. И в одном из последних проектов убедились, что наш накопленный опыт и лучшие практики позволяют нам существенно ускорить срок разработки и создать работающий банковский продукт за гораздо более короткий срок — 6 месяцев.
Но давайте по порядку: разберёмся, какой проект нас на это вдохновил и какие хитрости мы применили, чтобы ускорить разработку на 50%. Кстати, после запуска приложения проект привлёк дополнительные инвестиции в 5 млн долларов.
Что за проект?
К нам обратился один из стартапов YCombinator. В Пакистане долгое время были запрещены цифровые банки, но законы поменялись и мы в первых рядах подготовили новый для страны продукт. Мы создали для него не просто MVP, а полноценный финансовый инструмент со всеми необходимыми функциями, которые мы уже привыкли видеть в банковских приложениях:
- регистрация и авторизация с помощью удалённой верификации;
- профиль владельца;
- заказ пластиковой карты;
- информация по операциям
- межбанковские переводы;
- переводы внутри банка по номеру телефона;
- установка лимитов по картам;
- оплата счетов;
- чат с техподдержкой;
- push-уведомления.
Сейчас у приложения уже более трёх тысяч пользователей.
Особенности проекта
По данным Всемирного банка, Пакистан занимает третье место в мире по численности населения без банковских счетов — это около 100 миллионов взрослых. Привычные нам банковские сервисы и приложения только начинают развиваться.
Банк обратился к нам за приложением, которое вскоре стало одним из первых online-банков в Пакистане. Мы помогли сделать удобный финансовый инструмент с инновационным сервисом. С его помощью компания планировала решить амбициозную задачу — популяризировать банковские услуги в Пакистане и сделать цифровые платежи доступными для всей страны.
В качестве целевой аудитории они выбрали миллениалов, как наиболее продвинутую группу пользователей. Они много путешествуют и общаются с людьми по всему миру, поэтому основным языком приложения стал английский, который является первым государственным языком Пакистана (второй — урду).
С самого начала банк стремился создать инновационный продукт, поэтому и старались использовать в проекте самые новые технологии — актуальные версии Flutter, недавно появившиеся на рынке SDK.
Что получилось
Мы выпустили в релиз современное банковское приложение с прицелом на миллениалов. Зарегистрироваться в нём можно за пару кликов, а после проверки документов — получить виртуальную карту и в тот же день оплатить ей покупки в магазине.
Регистрация и авторизация сделаны с помощью удалённой верификации. Пользователю не нужно идти в офис, а можно заполнить данные в мобильном приложении: прикрепить фотографию паспорта, селфи и отправить для верификации через систему для онбординга IDWISE. Затем информация уходит на бэк для подтверждения. После дополнительной проверки менеджером банка, у пользователя открывается счёт с виртуальной картой.
Удобная home-страница со списком транзакций. Тут отображается вся основная информация по аккаунту, баланс и список транзакций.
Профиль пользователя содержит информацию о клиенте, сюда же можно добавить почту и адрес для заказа физической карты. Тут же можно заказать выписки по карте.
Информации о счёте. Раздел содержит детализированную информацию о карте и реквизиты счета.
Заказ и активация карты. При регистрации клиенту сразу выпускается виртуальная карта, которой сразу можно пользоваться. Но чтобы заказать и активировать пластиковую карту, он должен воспользоваться этим специальным разделом меню.
Межбанковские и внутрибанковские переводы реализовали при помощи сервиса I2C, для интеграции его с бэкендом разработали API. Также сделали переводы между картами и счетами внутри банка по номеру телефона и p2p переводы, которые сейчас активно применяются для переводов криптовалюты между пользователями напрямую.
Настройка карт — сделали возможность выставлять лимиты по карте.
Оплата счетов — можно оплатить коммунальные услуги, подписки и счета не выходя из приложения.
Почему мы реализовали проект быстро?
Сократили срок разработки, использовав кроссплатформу Flutter
Представители банка изначально хотели делать приложение на Flutter. Его они выбрали даже не из соображений экономии, а потому что с Flutter сокращается time to market — вывод приложения на рынок. В среднем благодаря кроссплатформе, довести приложение до пользователей можно в два раза быстрее нативных приложений.
Именно на этом проекте мы впервые попробовали новые версии Flutter и использовали для проекта библиотеку Redux — систему управления состоянием приложения. Она применяется для загрузки и хранения данных.
К тому же, это был первый проект, в котором мы использовали наше решение для построения чистой и прозрачной архитектуры во Flutter-приложении — библиотеку Elementary.
С помощью Flutter мы легко решили одну из особенностей — работу с языком урду, вторым официальным языком Пакистана. Приложение разрабатывалось на английском, а бэкенд не поддерживал урду, но благодаря возможностям Flutter, если в телефонной книге пользователя встречалось имя на урду, в приложении оно отображалось корректно. К тому же, пользователь может заполнить свой профиль на урду, и ошибок в приложении не возникнет.
С разработкой на Flutter можно существенно сократить сроки и стоимость разработки, примерно до 40%, благодаря использованию единой кодовой базы для iOS и Android и одной команде разработчиков.
Что уж говорить о создании MVP — на Flutter его написать быстрее, а чем быстрее оно создано, тем быстрее можно протестировать востребованность продукта. Это киллер-фича для стартапа любого направления, в том числе и финтех, как в нашем случае с пакистанским необанком.
Часть фич реализовали при помощи SDK
В проекте собрано множество разных SDK. Это связано с тем, что банк хотел реализовать проект в максимально короткие сроки и искал пути, как можно побыстрее запустить фичи с помощью уже существующих решений. С одной стороны, этот подход оправдал себя, приложение мы разработали менее чем за год, с другой — нам потребовалось реализовать множество интеграций со сторонними сервисами. Назовём только ключевые.
I2C — система, созданная в Пакистане, с базовым набором финтех-функциональностей. С помощью неё можно быстро внедрить в приложение все необходимые банковские операции: создать карту, сделать перевод, оформить заявку на кредит и т.д. В приложении мы использовали I2C ещё и для онбординга пользователя в системе. После прохождения онбординга и проверки, данные отправляются в I2C для открытия счёта.
В интеграции с I2C было много особенностей. Например, сервис не позволял реализовать мультикарту. Не вся необходимая функциональность уже была в системе, поэтому нам приходилось активно взаимодействовать с разработчиками I2C в ходе интеграции, а им — допиливать сервис и его возможности под наши запросы.
IDWise — удобная система для удалённого онбординга в банковском приложении: пользователю не нужно идти в банк, достаточно сфотографировать себя и документы, а затем отправить это всё на проверку. Затем IDWise передаёт данные в систему NADRA — пакистанский аналог Госуслуг, которая и верифицирует личность пользователя.
Zendesk — отвечает за онлайн-чат. Выбрали его, так как это не просто чат, а сервис с услугой поддержки. Для него сформировали отдельный токен.
Push-уведомления настроили с помощью интеграции в приложение стороннего сервиса One signal. Сначала мы хотели сделать уведомления на Airship, но когда выяснили, что сервис не позволяет создать центр нотификаций, выбрали более оптимальную технологию
Быстро написали бэкенд на Kotlin
Бэкенд мы писали вместе с разработчиками со стороны клиента. У нас не было разделения на команду заказчика и исполнителя. Мы работали единой сплочённой командой по каждому из этапов. Middleware (промежуточное программное обеспечение) обеспечивало интеграцию с платформой для банковского процессинга — I2C.
Применили подход экстремальной разработки
С помощью методологии Scrum можно быстро и эффективно разработать совершенно новый продукт, аналогов которому нет на рынке. Важно помнить, что это командный подход и есть специфические роли внутри команды. У всех членов команды, и со стороны клиента, и со стороны Surf, был очень высокий уровень вовлечённости. Каждый должен был брать ответственность за решения и проявлять проактивность.
Мы очень оперативно получали обратную связь от заказчика со стороны бизнеса, как правило, в личном общении. На встречах часто сразу воплощали продуктовые решения, иногда разработчики даже писали код онлайн. QA вручную оперативно тестировали все решения. После каждого спринта мы отдавали клиенту сборки на ревью и очень быстро исправляли обнаруженные баги.
Ускорили работу с багами за счет автотестов
Автотесты — мы покрыли 100% кода приложения автотестами. Это позволяет быстро выявлять и править баги. У этого проекта самое большое тестовое покрытие среди всех Flutter-проектов, которые мы реализовали.
Приложение на Flutter + бэкенд на Kotlin = продукт под ключ за 6 месяцев
Этот проект показал, что мы накопили достаточно опыта и лучших практик, чтобы делать банковские приложения быстро и качественно. Мы даже решили создать на базе этого опыта отдельную услугу — проект под ключ за 6 месяцев, он включает проектирование и дизайн, разработку мобильного приложения на Flutter, бэкенда на Kotlin и настройку всех необходимых для основных функций интеграций.
Чтобы разработать готовый продукт так быстро, мы чётко выделили основные этапы проекта:
- проектирование — создадим гибкий роадмап продукта на несколько релизов вперёд;
- дизайн — реализуем UI/UX-дизайн для приложения на основе UX-аналитики и карты пути клиента (CJM);
- разработка — напишем бэкенд на Kotlin и фронтенд на Dart (язык программирования, который использует Flutter);
- сборка — каждые две недели будем показывать сборку приложения на согласование;
- тестирование — проверим приложение на каждой итерации, напишем автотесты, которые сэкономят 80% времени;
- релиз — выпустим приложение в App Store, Google Play или РуСтор и будем его поддерживать.
В чём плюсы этого подхода для клиента?
- Получает готовую слаженную команду и организованный рабочий процесс. Специалисты уровня Middle+ реализуют проект любого уровня сложности и из любой сферы бизнеса;
- Управление проектом прозрачно и понятно. Проектный менеджер с нашей стороны следит, чтобы работа не выходила за рамки бюджета, сроков и содержания. Клиент видит и получает информацию обо всём, что происходит на проекте.
- Все коммуникации прозрачны. Минимизируем потери в коммуникации и за счёт того, что над фронтендом и бэком работает сплочённая команда. Это хорошо подтвердил кейс с необанком — там мы работали как одна команда, вместе писали бэк с разработчиками со стороны клиента. Именно это позволило добиться такого впечатляющего результата за короткий срок.
Просто забрать проект для развития и поддержки инхаус. Мы работаем по единым стандартам и всегда пишем подробную техническую документацию — доводим до такого вида, чтобы её было легко поддерживать инхаус. Для каждого проекта мы подготовили и передали подробную документацию с описанием текущих фичей. Описали артефакты, в том числе бэклог, и дизайн по тем функциональностям, которые только планировались в будущем. QA-отдел передал тесты, документацию и базу знаний. Это позволяет быстро погрузить собственную команду разработки в проект и сделать развитие продукта более последовательным и системным.
Рынок финтех-услуг растёт и развивается, а вместе с ним и рынок мобильной разработки. Решения нужно принимать быстро и оперативно, без права на ошибку. Но позволить себе такую роскошь можно, только если есть уверенность в подрядчике.
Мы в Surf более 12 лет работаем с мобильными технологиями, и больше 3,5 лет разрабатываем приложения на Flutter. За это время мы поняли, как можно оптимизировать разработку без вреда для качества. Реализовав очередное банковское приложение, которым сегодня пользуются более 3000 клиентов банка, мы убедились, что создать работающий качественный продукт за полгода — вполне реально и этот опыт можно с успехом применить и на российском рынке.