Приложение для мобильных бригад: «толстый клиент» и полмиллиона строк кода

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Привет, меня зовут Александр, я начальник отдела мобильной разработки в СИГМЕ. Хочу рассказать, как мы делали приложение для мобильных бригад. Тех самых ребят, которые выезжают на место аварий на объектах энергетики и делают так, чтобы свет и энергия в наших домах не отключались. За 18 лет СИГМА накопила уникальную экспертизу в разработке ИТ-решений для энергетики. Наша суперсила — создавать приложения для автоматизации бизнес-процессов, связанных с обслуживанием оборудования и безопасностью персонала. Поэтому погнали за подробностями.

Как все начиналось

В 2018 году у нас стартовал проект по разработке Автоматизированной системы управления мобильными бригадами (АСУ МБ). Это решение для цифровизации деятельности автономных команд, занимающихся диагностикой и ремонтом оборудования на линиях электропередач, электростанциях и других промышленных объектах. Система большая и одна из её ключевых составляющих — мобильное приложение. Бригады оснащаются мобильными устройствами и всю свою работу координируют через предустановленное приложение.

Проект по его разработке отдали на подряд, но партнеры не справились. Тогда за работу взялась наша команда. Пришлось все переделывать: мы выбрали новый архитектурный стек и написали заново клиентскую часть. Приложение решили строить на чистой архитектуре — с Moxy и Java. Спустя год усердной работы команда из 10 Android-разработчиков успешно выпустила первый релиз. Оказавшись в конце годового отрезка с горящими сроками, выдохнули — «Мы справились». Но тут возникла задача по адаптации кода/технологического стека под новые реалии: рынок мобильной разработки уже успел кардинально измениться.  Java уже не в моде, все пишут на Kotlin, а вместо Moxy пора использовать MVVM.

Мы не стали исключением и начали плавно переходить на эти технологии. Перспективы дальнейшего развития проекта и маячащие на горизонте проекты с похожими бизнес-процессами подтолкнули нас к использованию многомодульной архитектуры. Мы выделили «ядро» проекта с целью его дальнейшего переиспользования. В течение следующего года, параллельно выпуская новые релизы, успешно переехали на новый стек. А сейчас уже активно используем Kotlin Multiplatform, Compose и думаем о переезде на MVI.

«Толстый клиент» и полноценный офлайн-режим

Наш проект — достаточно нестандартное решение на рынке мобильной разработки. Это так называемый «толстый клиент» с поддержкой автономного режима и реализацией бизнес-процессов в самом приложении. На рынке чаще можно встретить решения с «тонким клиентом»: на любое действие пользователя происходит обращение к серверу, который уже возвращает результат с описанием, что нужно сделать или отобразить. В нашем мобильном приложении всё иначе: здесь происходит периодическая синхронизация с сервером, то есть журналирование всех изменений в приложении и отправка их на сервер для последующего сохранения в общей базе данных и отображения изменений в других клиентских приложениях.

Так выглядит личный кабинет пользователя
Так выглядит личный кабинет пользователя

Толстый клиент — главная фича приложения и в то же время самая сложная его часть. У него множество преимуществ:

  • высокая производительность и скорость обработки данных

  • широкая функциональность

  • независимость от удаленных серверов

  • возможность работы без интернет-соединения

Автономный режим — важная функция для пользователей. Специалисты мобильных бригад часто находятся в «глухих» местах без Интернета, но благодаря офлайн-режиму могут работать в приложении без ограничений. В то же время реализация «толстого клиента» — достаточно сложное и дорогостоящее дело.

Приложение большое и объемное, я был назвал его таким супераппом в мире энергетики и цифрового сотрудника. Толстый клиент — толстая база данных: в БД порядка 200 таблиц, а в перспективе их станет на сотню больше. Соответственно, мы пишем много SQL-запросов, нередко пишем сложные SQL-запросы и особенно «не любим» миграции, т.к. поддерживаем версионирование схемы БД. Но толстой является не только БД, но и кодовая база — около полумиллиона строчек кода в ~150 Gradle-модулей.  

Как ранее было сказано, в процессе разработки мы (Android команда), а также другие смежные команды (бэкенд, веб-фронт) выполняли унификацию и перенос общих бизнес-процессов в отдельные компоненты (модули, библиотеки, сервисы). Синергия всех компонентов — наша цифровая платформа СИГМА.Алькор. Благодаря слаженной и усердной работе мы получили продукт, с помощью которого можем, как из «кирпичиков», собирать целые решения для бизнеса электроэнергетики. На данный момент компонентная база решения все больше и больше обогащается новыми модулями, отвечая актуальным вызовам.

Как это работает

АСУ МБ — решение для сотрудников, работающих в полях: электриков, монтажников, обходчиков и не только. С помощью мобильного приложения в начале смены менеджеры просматривают задачи из ERP-системы, формируют, а затем распределяют их по бригадам и направляют на планшеты.

Особый предмет для гордости — первое в отечественной энергетике внедрение электронной цифровой подписи. За счет ЭЦП сотрудник может подписывать документы, даже если находится в офлайн-режиме на труднодоступном участке. Как это происходит на практике? Допустим, где-нибудь в Подмосковье сломался трансформатор. Электрики перед проведением работ должны пройти инструктаж по технике безопасности и подтвердить, что ознакомились с правилами. Делают они это в нашем приложении с помощью ЭЦП. Там же сотрудники могут фиксировать начало и окончание работ, оставлять примечания, списывать потраченные материалы.

Еще в приложении формируются листы осмотра оборудования. В каждом городе есть тысячи технических мест — трансформаторные будки, столбы ЛЭП, фонари и т. д. Все эти объекты периодически проверяют специалисты мобильных бригад. Обнаруженные дефекты фиксируются в приложении и направляются на веб-портал, где администратор уже решает, устранять их или нет, создавать ли задание на ремонт одной из бригад.

На самом деле бизнес-функций в приложении очень много. Описанный пример — это лишь малая часть реализованных бизнес-процессов. Сейчас мы активно ведем работу над новым модулем — «Автоматизированное рабочее место водителя».

От джунов к мидлам и сеньорам

Проект мощно прокачал нас в плане новых знаний и навыков: использования многомодульной архитектуры, создания повторно-используемых библиотек, работы с системами геолокации, электронным документооборотом и ЭЦП. Над приложением работала большая команда, многие разработчики пришли на проект младшими специалистами и выросли до уровня ведущих. Я сам пришел именно на этот проект как разработчик и впоследствии уже стал руководителем отдела.  Проект тоже развивается (и не только этот), поэтому мы всегда рады пополнению в команде. Ищем талантливых и целеустремленных специалистов, готовых работать с новыми мобильными технологиями в рамках больших проектов. Присоединяйтесь — вакансии СИГМЫ можно посмотреть здесь, а на вопросы о решении и проекте я готов ответить в комментариях. Спасибо за внимание!


Автор: Александр Гурьянов

Источник: https://habr.com/ru/companies/sigma/articles/773586/


Интересные статьи

Интересные статьи

Современные веб-приложения, даже простые на вид, часто подразумевают нетривиальную архитектуру, состоящую из многих компонент. В статье «Делаем современное веб-приложение с нуля» я рассказал, как она ...
Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно...
Привет! Это третья и заключительная часть серии статей “Лучшие подходы и решения для уменьшения кода на React” автора Rahul Sharma. Предыдущие статьи вы можете найти по ссылкам ниже:Часть 1Часть 2Част...
Согласно некоторым опросам, например от JetBrains, версия 8 Java в настоящее время наиболее часто используется разработчиками во всем мире, несмотря на то, что она была выпущена в 20...
Эта статья — напминалка о том, что нужно перепроверить в дизайне вашего приложения, прежде чем отсылать его на AppStore/GooglePlay. Список поделен на тематические блоки: Вход / Регистраци...