Приложение для банка на Flutter — хороший выход или рискованный эксперимент?

Пользователям нужны удобные мобильные банковские приложения «не хуже, чем у "Сбера" или "Тинькофф"». А «Тинькофф» и «Сбер» уже переросли само понятие «банк» — по сути, это зрелые IT-компании с банковскими лицензиями. Как за ними угнаться остальным?

На мобильную разработку нужны огромные бюджеты, сильные разработчики и технологии, которые позволят масштабироваться под постоянно растущие и меняющиеся потребности банковского сектора. Но найти и удержать сильную команду мобильной разработки сложно. Рынок перегрет, разработчиков, особенно для iOS, катастрофически не хватает, а их недостаток может оказаться «бутылочным горлышком» для развития продукта.

Важный фактор — время, которое продуктовая команда тратит на реализацию и запуск в продакшен идей. Приложения ведущих банков обновляются и обрастают новыми возможностями очень быстро. Например, Альфабанк обновляет iOS приложение 3 раза в месяц, Сбер — дважды в месяц. Это очень часто.

Чтобы выдержать такой высокий темп, банкам нужны не только отлаженные процессы в продуктовых командах, но и технологии, которые могут ускорить разработку. Для мобильной фронтенд-разработки выходом может стать использование кроссплатформенных фреймворков.

Недавно мы в Surf разработали первое в России банковское приложение на кроссплатформе Flutter для Росбанка и убедились, что эта технология подходит для бизнеса любого масштаба.

В 2020 году мы написали статью, в которой рассказали, почему Flutter хорош для разработки мобильных приложений для бизнеса. Сегодня разберем, почему этот фреймворк отлично подходит для мобильных приложений банков и финтех-стартапов. Тем более что технология сделала шаг вперед: в марте 2021 года вышла вторая версия Flutter, в которой Google решил многие проблемы роста и добавил новые возможности.

Что в этой статье

Что такое Flutter

Кроссплатформа — это набор инструментов, с помощью которых можно разработать приложение сразу для нескольких платформ (в случае мобильного приложения — для iOS и Android). Кроссплатформы бывают разные — React Native, Ionic, Xamarin, PhoneGap. У каждой свои особенности: в статье на сайте мы подробно сравнили Flutter другим популярным фреймворком — React Native.

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

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

Google учел все плюсы и минусы разных кроссплатформенных решений и в 2018 году предложил свой фреймворк — Flutter. На нём можно разработать единую кодовую базу под несколько платформ: Android, iOS, веб и в экспериментальной фазе десктоп. Больше узнать про Flutter можно в статье на нашем сайте.

Поскольку Flutter — не первая подобная платформа, ее создатели постарались максимально уйти от недостатков предшественников, начиная с реализации нормального FPS и заканчивая работой «платформенного» дизайна элементов интерфейса «из коробки». В качестве альтернативы для своих клиентов мы рассматривали React Native, но нас не устроила производительность, особенности поддержки, а также то, что крупные игроки сами переходят в натив или на Flutter.

Алексей Ясаков, Глава центра развития цифровых решений Росбанка

Почему Flutter подходит банку

Традиционный подход для банка — это разработка двух нативных приложений, на Android и на iOS. Для этого нужны разные языки программирования — Swift для iOS, Kotlin для Android, — разные подходы к разработке и две команды разработчиков.

У нативных приложений практически нет недостатков. Кроме одного — большие затраты на разработку, поддержку и развитие.

Поэтому для некоторых банков проще и выгодней использовать кроссплатформенные технологии, например, Flutter. У него есть несколько серьезных преимуществ перед нативным подходом:

Разработка быстрей и дешевле. При разработке на Flutter используется единая бизнес-логика и пишется единый код для разных платформ. Это экономит время разработчиков. Многие фичи можно взять «из коробки» и не тратить время на их создание, а оптимизированная работа с анимациями позволяет реализовать дизайн приложения быстрей, чем при нативной разработке. Все это сокращает время вывода продукта на рынок (time-to-market).

Приложение похоже на нативное. Язык Dart, на котором пишут Flutter-приложение, компилируется в нативный код для разных платформ. Это обеспечивает приложению высокую производительность и возможность поддержки на большом количестве устройств, от мобильных телефонов до веба и десктопа. Кроме того, анимации и элементы пользовательского интерфейса на Flutter ведут себя также, как в нативном приложении.

Высокая производительность. Одним из косвенных показателей производительности приложения является FPS – количество кадров, отображаемых в секунду. Оптимальный показатель – 60 кадров в секунду. При таком FPS человеческий мозг воспринимает анимацию и переходы между экранами как идеально плавные, без прерываний и зависаний. Во Flutter можно добиться производительности в 60 FPS, а в некоторых случаях даже 120 кадров в секунду, что равняется показателям нативных приложений.

Можно реализовать любой дизайн. У фреймворка есть свой графический движок и пакеты с кастомизируемыми виджетами: Material для Android и Cupertino для iOS. Фреймворк сам рисует каждый пиксель, а виджеты контролируют анимацию. За счет этого пользователь фактически не видит разницы между приложением на Flutter и нативным.

С Flutter можно использовать фичи поддерживаемых платформ. Камера, GPS, сенсоры, файловая система устройства — вы можете обращаться ко всем открытым интерфейсам платформы прямо из Dart-кода Flutter-приложения.

Если отбросить игры, то очень удобно (создавать приложения на Flutter). Большая часть разработки приложения заключается в создании внешнего вида приложения, его интерфейса. И на данный момент, возможно, субъективно, но работа с UI у Flutter самая удобная среди всей мобильной разработки (включая «натив»). iOS пытается приблизиться к этому за счет Swift UI, Android тоже идет к этому, но и там не реализовано то, что есть у Flutter. А в отличие от React Native, Flutter самостоятельно отрисовывает все элементы, поэтому экран полностью под контролем разработчика.

Андрей Давыдов, Владелец продукта мобильное приложение «РОСБАНК Бизнес»

Flutter безопасен

Банки внимательно относятся к вопросам безопасности. Поэтому к новым технологиям сперва присматриваются и только потом с осторожностью внедряют.

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

1. Код во Flutter пишется на языке Dart и компилируется в нативный, не читаемый человеком. Это усложняет обратную обработку, которая позволяет злоумышленникам понять принципы работы приложения, и повышает его безопасность.

Для нативного приложения реверс-инжениринг может восстановить исходный код полностью или частично его структуру и наименование классов, даже в тех случаях, когда применяли метод обфускации (запутывания) кода. Во Flutter при компиляции кода формируется единая нативная библиотека со сложной структурой и меняющимися форматами данных.

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

2. Чтобы обеспечить безопасность доступа для пользователя, во Flutter-приложении можно использовать инструмент, который сейчас есть во всех смартфонах — биометрическую аутентификацию при помощи Face ID или Touch ID. В их применении в кроссплатформенном приложении нет отличий от нативных приложений.

Таким образом, безопасность Flutter-приложений не ниже, чем у нативных. А с точки зрения защиты кода от обратной обработки — даже выше.

Flutter экономит

Мобильная разработка — дорогое удовольствие, а разработка приложения для банка дороже вдвойне. Зарплаты финтех-разработчиков выше средних по рынку. Да и разовой инвестицией в проект здесь не отделаешься: приложение нужно постоянно дорабатывать, прикручивать новую функциональность, адаптировать под требования регулятора, создавать новые сервисы для привлечения пользователей.

Зарплаты мобильных разработчиков выше всех остальных категорий разработки Источник — <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhabr.com%2Fru%2Farticle%2F540718%2F&postId=255985" rel="nofollow noreferrer noopener" target="_blank">https://habr.com/ru/article/540718/</a>
Зарплаты мобильных разработчиков выше всех остальных категорий разработки Источник — https://habr.com/ru/article/540718/

Но без мобильной разработки банку не обойтись. В пандемию, по данным исследовательского агентства App Annie, время, проведенное пользователями в финансовых приложениях, увеличилось на 85%. И хотя жесткие ограничения позади, пользователи не спешат менять приобретенные привычки.

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

Процесс разработки в целом. При нативной разработке создаются два отдельных приложения. При кроссплатформенной — одно, с единой кодовой базой для двух платформ, из которой код транслируется на нужную операционную систему через специальную прослойку. Производительность работы повышает и функция Hot Reload, с которой можно оперативно просмотреть изменения прямо в приложении. Экономия при разработке на Flutter может составить 30-50%.

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

Процесс тестирования. Затраченное время сокращается примерно в 1,3–1,5 раза, так нужно тестировать одно приложение, а не два нативных.

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

Формирование команды. Для нативных приложений нужны команды разработки, пишущие на двух разных языках — Swift (для iOS) и Kotlin (для Android). Зарплаты для разработчиков на этих ЯП находятся в десятке самых высоких. Для разработки на Flutter у вас будет одна команда, а значит, расходы сократятся.

Зарплаты разработчиков по языкам программирования Источник — <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fhabr.com%2Fru%2Farticle%2F540718%2F&postId=255985" rel="nofollow noreferrer noopener" target="_blank">https://habr.com/ru/article/540718/</a>
Зарплаты разработчиков по языкам программирования Источник — https://habr.com/ru/article/540718/

Для разработки нативных приложений необходимо держать две независимые команды. В случае с Flutter нельзя сказать, что платформа сокращает половину расходов, но экономия все равно очень существенная. Много времени также экономится на дизайне и тестировании приложения.

Алексей Ясаков, Глава центра развития цифровых решений Росбанка

Flutter прост в освоении

Flutter основан на языке программирования Dart. Он менее известен, чем, например, JavaScript, который используется в одном из самых популярных кроссплатформенных фреймворков React Native. Но при этом разработчики признают, что Dart очень прост в освоении и удобен для работы — мы рассказали об этом в отдельной статье. Для поиска команды у вас есть несколько путей.

  • Переучить имеющихся разработчиков своими силами. У Dart есть качественная подробная документация и целый тур по языку. Как показывает практика, Java/C#/JavaScript-разработчикам достаточно просто изучить Dart. Мы много обучаем стажеров и убедились на своем опыте, что разработчики, владеющие другим ЯП, начинают писать на Dart через пару недель, а новичкам требуется около месяца.
  • Отправить разработчиков на курсы. Популярность фреймворка растет, а значит, в ближайшее время вырастет и число предложений по обучению программированию на Dart. Мы в Surf запустили свой курс по Flutter с акцентом на практику. Результаты наших учеников говорят, что Flutter проще освоить, если есть опыт фронтенд-разработки на любом языке.
  • Нанять разработчиков со стороны. Предложение на рынке труда пока невелико. Скорей всего, это временно, так как востребованность Flutter растет, а значит, в скором времени появятся и новые кадры, освоившие язык Dart. Сейчас на hh.ru около 400 резюме Flutter-разработчиков.
  • Нанять аутсорсинговую команду. Работа с аутсорсинговой компанией, специализирующейся на мобильной разработке, поможет банку решить сразу несколько задач. Ведь для реализации такого проекта нужны не только Flutter-разработчики, но и аналитики, дизайнеры, QA.

В команде Surf 150 человек, поэтому мы можем подключить нужного специалиста на любом этапе — аналитики, разработки, дизайна, тестирования. А еще у нас самая большая в России команда опытных Flutter-разработчиков. Ребята не только реализуют коммерческие проект для клиентов, но и постоянно прокачивают навыки: участвуют в тематических конференциях, а тимлид Surf Евгений Сатуров ведет популярный Flutter Dev Podcast.

Flutter продолжает развиваться

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

Здесь важны два фактора.

1. Flutter — опенсорсный проект, его исходный код хранится в открытом доступе. А значит, вы всегда можете воспользоваться кодовой базой для реализации новых функций.

2. Теперь обратимся к цифрам. Согласно опросу Statista, во всем мире популярность Flutter растет. За 2019—2020 годы, например, она выросла на 9%. А раз технология востребована и широко применяется, ей не дадут кануть в лету.

Источник:<a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.statista.com%2Fstatistics%2F869224%2Fworldwide-software-developer-working-hours%2F&postId=255985" rel="nofollow noreferrer noopener" target="_blank"> Statista</a>
Источник: Statista

По данным аналитической компании SlashData, Flutter уже стал самым популярным кроссплатформенным фреймворком. Число использующих его разработчиков выросло в 1 квартале 2021 на 47% относительно этого же показателя в 1 квартале 2020 года.

Flutter уже используется в финтех-проектах

Примеры приложений для банков и финтеха на Flutter

  • Первым в мире банковским приложением на Flutter стало приложение Nubank, бразильского цифрового банка и одной из крупнейших финтех-компаний в Латинской Америке. У банка более 20 миллионов клиентов по всему миру.
Приложение для банка на Flutter — хороший выход или рискованный эксперимент?
Шоукейс Nubank для официального сайта Flutter. О выборе технологии рассказывают разработчики банка
  • Для Росбанка Surf разработал мобильное приложение для бизнеса. «Росбанк Бизнес» — первое банковское приложение в России, написанное на кроссплатформенной технологии Flutter.

Интерфейс приложения «Росбанк Бизнес»<br />
Интерфейс приложения «Росбанк Бизнес»
  • Сейчас Surf разрабатывает B2C приложение для СМП банка.

  • Birch Finance — приложение для контроля личных финансов. Оно анализирует финансовое поведение пользователя и для каждой покупки рекомендует оптимальную карту. Так пользователь получает больше кешбэка, баллов или бонусов.
  • Cryptograph — финансовое приложение, которое анализирует и предоставляет данные о более чем 1600 криптовалютах.

Примеры приложений на Flutter для других отраслей

  • Google Ads — приложение для управления рекламными кампаниями, оптимизации и анализа их показателей.

  • Stadia — игровой сервис от Google.

  • eBay Motors — приложение для покупки и продажи автомобилей.

  • Приложения для облачного сервиса персонального ассистента Google Assistant.

  • Baidu Tieba — крупнейшая китайская коммуникационная платформа.

  • KFC DSR — корпоративное приложение для KFC, которое оптимизирует документооборот в компании, разработано Surf.

  • The Hole — платформа видеостриминга для Medium Quality — крупнейшего паблишера российского YouTube; разработана Surf.

Больше примеров можно найти на сайте Flutter.

Итог: Flutter подходит для банковских мобильных приложений

Мобильное приложение для банка на Flutter — успешный эксперимент для отрасли. Это доказывают проекты Nubank, Росбанка и СМП банка.

Банки-лидеры из первой десятки задают очень высокую технологическую планку и вливают в мобильную разработку неограниченные бюджеты. Flutter поможет остальным банкам не отстать в этой гонке: фреймворк увеличивает скорость разработки и уменьшает расходы на создание, поддержку и развитие приложений. При этом для пользователя нет большой разницы между нативным приложением и приложением на Flutter, так как UI-элементы, анимации, переходы между экранами работают аналогично.

Пока Flutter в силу своей относительной новизны только начинает завоевывать доверие банковского сектора. Но мы уверены, в скором будущем увидим немало мобильных приложений банков на Flutter.

* Комментарии представителей Росбанка взяты из интервью для N + 1.

5454
11
39 комментариев

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

Особенно учитывая ряд весёлых особенностей  языка и фреймворка, таких, как полное отсутствие runtime reflection (https://vvsevolodovich.dev/10-things-that-are-wrong-with-flutter/)

Для вас, как для студии, это, впрочем, выгодно - заказчик скорее всего будет вынужден за доработкой и поддержкой обращаться к вам из-за отсутствия на рынке спецов по flutter/dart

20
Ответить

На самом деле достаточно мобильных разработчиков очень хотели бы перейти на flutter вместо того же swift/java и писать сразу для двух платформ.

У меня достаточно знакомых, которые интересуются flutter и готовы на него перейти, но нет подходящих вакансий.

6
Ответить

А когда рефлексия стала таким частым кейсом?

Из примеров: тот же Dagger в Android давненько ушел от рефлексии к кодгену. По причине, что рефлексия - отличный шанс стрельнуть себе в ногу. Плюс, насколько мне не изменяет память, это одна из причин "медленности" той же Java(тут могу, честно, ошибаться).

Да и частый кейс использования рефлексии в Java - узнать ::class. В Dart типы существуют в рантайме, и спокойно берутся без нее. Ну и к слову в самом языке рефлексия то есть. Запретили ее именно во фреймворке, чтобы не замедлять.

По поводу популярности: судя по трендам stack overflow/Google trends Flutter опережает тот же React. Это конечно лишь относительно реакта.
Но несомненен рост мобильного коммьюнити. Интерес аудитории очень сильно растет - это заметно по количеству докладов на специализированных конференциях, откликах на вакансии, количеству таковых.

Да в моменте - это явно ниже "натива". Но тому уже лет 10:)
А вот динамика и будущее фреймворка пока говорит о вполне реальном росте специалистов.

И сразу замечу: я не имею ввиду, что нативные разработчики не нужны и не будут нужны. Они нужны и очень сильно. Но там где действительно все сложно и надо работать на достаточно близком уровне к ОС. Для всего остального есть более высокоуровневые инструменты.

4
Ответить

Субъективно. Но не часто ошибался. в свое время время топил за jQuery, адептам "чистого js" что будет мейнстримом

Тема повторилась, как пощупал vue, порог вхождения в vue ниже чем в react, и уже тем более в angular (был, сейчас не в курсе). Vue на github пусть даже китайцами но уже переплюсован. Сейчас картина с react native и всяких муток с cordova и тп аналогична, flutter достаточно прост и экосистема небольшая, но внятная, так что думаю в ближайшее отожрет норм свою долю как и vue. И это будет быстрее , как только сделают визуальный редактор, тк опять же субъективно, к верстке привыкать надо. 

1
Ответить

А я столкнулся с обратным, писал на dart задолго до появления flutter, а теперь на поломанном рынке труда во всех вакансиях обязательно знание либо kotlin либо swift. Это как-то странно и не к добру. 

Ответить

Заглядывался на flutter, но всё-таки тот факт, что логику, написанную для реакта, можно использовать и для веба, и для приложения, победил. Да и крепких середнячков на TS найти куда легче.

4
Ответить

flutter 2 умеет в web

4
Ответить