Комментарии по теме

«Тра­нспо­ртная система SAP для чайников»
Вячеслав Шиболов:
Хорошая метафора с коробками. Наглядная.
«Ускорение программ через па­ра­лле­льное про­гра­мми­ро­ва­ние»
Олег Точенюк:
Чего-то у меня цифры не бьются. Например на установку статуса пусть уходит 1 секунда, и время закрытия 5 часов итого за это время при последовательном закрытии у тебя закрывается 5 * 3600 = 18 000...

База знаний

Вы можете подписаться на эту колонки этого автора, если авторизируетесь или зарегистрируетесь

Почему мы выбрали Flutter?

17 октября 2020, 00:02

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

Так получилось, что бэкэндом для этих приложений, за редким исключением, всегда были продукты компании SAP: SAP ERP, SAP CRM, а сейчас ещё и облачные решения. В процессе работы приходилось использовать различные инструменты и технологии – от Agentry до нативной разработки под мобильную платформу. Использование многих из них оставило хорошие воспоминания, но некоторые хотелось бы забыть навсегда и никогда с ними больше не сталкиваться (если спросите на мастер-классе, расскажу какие). 

В прошлом году наша команда получила запрос на разработку интересного и сложного приложения, которое будет использоваться как сотрудниками компании, так и клиентами.  Редкая возможность разработки “с нуля” и полная свобода выбора технологии. Мы приступили к выбору платформы.

К платформе для разработки мы выдвинули ряд требований: 

1. Актуальность. К сожалению, корпоративный сегмент грешит использованием legacy-решений. Работать с такими продуктами сложно, скучно и не перспективно. В результате, в команду тяжело привлечь молодых талантливых разработчиков, да и сама команда заглядывается на соседние проекты. Поэтому мы искали современный продукт: легкий в изучении и интересный для всех членов команды.​

2. Эффективность. Не знаю как у вас, а наш бизнес хочет уже завтра увидеть в рабочем виде решение, которое обсудили сегодня. Поэтому продукт должен позволять быстро и качественно выполнять разработку без отвлечения на написание массы boilerplate-кода, иметь в арсенале хорошие инструменты отладки и тестирования. Ещё не лишней будет быстрая компиляция (или ее отсутствие) – мы как разработчики хотим тратить своё время с пользой, а не так:

3. Безопасность. Здесь комментарии излишни.

4. Стабильность. Под стабильностью я понимаю как отсутствие ошибок в основных компонентах платформы, так и не изменяющийся от версии к версии API. Однако, это условие не очень хорошо сочетается с условием актуальности, так как перечисленные параметры у новых продуктов не всегда на высоте. В то же время, здесь можно пойти на компромисс, выбрав инструменты, во-первых, с открытым исходным кодом (тогда мы сами можем что-то починить), во-вторых, поддерживаемые крупной компанией и большим комьюнити.

5. Интеграция с SAP. Еще несколько лет назад это был бы самый важный пункт, но с появлением OData-сервисов интеграция с SAP в приёме-передачи данных перестала быть сложной, и важность требования существенно снизилась. Однако, если платформа позволит взаимодействовать с такими сервисами SAP как отправка логов на сервер и использование серверного кэша, это будет её преимуществом.

Итак, исходя из вышеперечисленного, мы остановились на следующих претендентах: SAP Native SDK, SAP Kapsel, SAP MDK, React Native, Flutter.

Мы поставили всем продуктам оценки по каждой из категорий отбора и выбрали победителя. Это – Flutter.

Конечно, нужны объяснения. Начнём с проигравших.

SAP Native SDK – нативная разработка с использованием библиотек от SAP. В общем неплохой вариант и не будь Flutter, он бы победил. Много готовых инструментов, например, обеспечение работы офлайн, серверные логи, нативные библиотеки. Из минусов: отвратительная документация, небольшое комьюнити, использование собственных библиотек вместо общепринятых.

SAP Kapsel – увы, время гибридных приложений прошло. Либо PWA (Progressive Web Application), либо нативная разработка. Web-приложение, притворяющееся мобильным, ничего кроме раздражения при использовании не вызывает. Плюсы те же, что и у технологии выше, – отличная интеграции с SAP

SAP MDK – новый инструмент от SAP. Его делает та же команда, что делала Agentry, поэтому он в каком-то смысле идейный преемник данного фреймворка, базой которого является NativeScript. Почему нет? Попробуйте найти на рынке специалиста по данным технологиям. Я думаю, эти технологии будут пользоваться такой же «популярностью» и через год, и через два.

React Native – решение от Facebook. Сейчас React и Web почти синонимы. Крупный вендор, большое комьюнити. Наша команда выбрала его для предыдущего проекта в 2018 году. Почему не захотели продолжать – низкая стабильность, отсутствие готовой UI-библиотеки компонентов, проблемы при публикации в Apple Store. Год назад я бы сказал, что лучше писать нативное приложение, но…

Но теперь у нас есть Flutter. Трудно найти более современную платформу. Google представил её в конце 2018 года. И если первый год разработчики всего мира к ней только присматривались, то сейчас идёт разгар её массового использования. В Google Play, по заверению компании Google, опубликовано уже несколько сот тысяч приложений, созданных с Flutter. На российском рынке на этой платформе написано Яндекс.Такси. Технология бурно развивается, релизы выходят раз в два месяца, и это не косметические изменения, а реальные улучшения фреймворка как в плане стабильности, так и в плане наращивания функционала.

Flutter объединил две вещи, которые до это объединить не удавалось – скорость разработки и скорость исполнения.

Удобство разработки является одной из киллер-фич фреймворка, неплохой язык Dart со строгой типизацией: по возможностям он немного уступает Kotlin и Swift, но активно развивается. Hot Reload и Dev Tools – вещи, которые позволяют увидеть результат работы сразу (и понять, почему он именно такой), а не ждать компиляции.

При этом приложение работает в 120 FPS. Не всякое нативное предложение может похвастаться такой плавность анимации. Шикарная библиотека Material- и Cupertino-виджетов. Огромное комьюнити: в российском Telegram-канале 4500 участников.

Недостатка два. Это молодость фреймворка и никакой поддержки со стороны SAP.

Но мы рискнули и сделали приложение. То, как у нас это получилось, какие архитектурные решения приняли и почему, с какими проблемами столкнулись и как их решили, я расскажу на мастер-классе

До встречи!

Сергей Чеботарёв