Всем привет. Меня зовут Владимир, я уже более 4,5 лет работаю в компании NAUMEN в должности инженера-программиста. В свободное от работы время, я создаю свои мини-проекты, в частности, мобильные приложения и игры.

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

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

О приложении

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

Что нужно для запуска приложения?

Для того, чтобы запустить приложение мне нужны: Android-приложение в качестве оболочки для данных, back-end приложение, cервер или пространство для back-end приложения.

Помимо технических характеристик, важно учесть следующие моменты:

Во-первых, как истинный программист — я ленив, а значит, хочу сделать все как можно быстрее, но без потери качества. Во-вторых, как экономный человек я предпочитаю сделать все бесплатно, ну или за минимальную стоимость, но как умный человек, я также понимаю, что мое потраченное время тоже деньги! В-третьих, мне важно, чтобы админ-панелью было удобно пользоваться контент-менеджерам, которых я бы хотел поискать на сайтах фриланса, чтобы наполнить базу. (Спойлер: им было удобно работать).

Само мобильное приложение (я буду далее называть его фронтом), я писал на Java в android studio. Его разработка оказалась легкой и даже примитивной, я просто нашел статьи про создание списков (ListView) в android-приложении и все. В обоих случаях будет использоваться одна оболочка. У меня не было цели сделать красиво и круто сразу на прототипе.

Считаем время на разработку

Теперь вернемся к back-end`у. В классическом варианте я использовал ruby on rails. Просто потому, что я на нем умею программировать и знаю, как сделать внятное приложение, и быстро смогу его собрать.

Для ROR-приложения необходим либо свой сервер, либо хостинг, например, digital ocean (DO) или Heroku. Тут не принципиально, все на ваш вкус.

Поскольку для создания pet-проектов временной ресурс ограничен, важно посчитать, сколько времени уйдет на то, чтобы сделать такой сервис:

Нужно два объекта: «Город» и «Место/Локация» — минут 30.

Использование загружаемых картинок я выношу отдельно, так как если просто использовать хранение на серверах DO, то мы быстро выйдем за пределы бесплатного доступа. Оно того не стоит, зато быстро сделаем — минут 10-15. Если надо хранить в гугле или amazon-серверах, то делать с ними интеграцию будет немного больше, оценим в минут 30.

Верстка меня немного удручает, чтобы корректно её накидать простыми view — уйдет минут 10. Но мне же важно, чтобы контент-менеджерам было удобно пользоваться, поэтому надо подключить bootstrap или material-UI — оценим в 20-30 минут. Версию с отдельным фронтом и написанием на react я вообще не рассматриваю, потому что у меня нет достаточного опыта, чтобы быстро все делать, да и проект не настолько крутой, чтобы вкладывать в него столько ресурсов.

Настройка API для передачи данных в мобильное приложение. В 5 версии RAILS gem rails-api стал частью ядра. Накидать быстро контроллер на каждый объект, построить маршруты дополнительно под API — 30-40 минут.

Если писать тесты еще сверху на объекты и API, то можно все время смело увеличить в два раза.

Закинуть на гитхаб и в DO или Heroku еще минут 20.

Итог: для классического back-end приложения я в лучшем случае потрачу минимум 130 минут (с тестами 250 минут), чистого времени! Но так как я делаю мобильное приложение в свободное время, найти полтора-два часа практически невозможно, поэтому, скорее всего, будет потрачена неделя физического времени.

Получилось как-то сложно и муторно. Столько усилий и времени, чтобы запустить приложение, которое может и не выстрелит и будет пылиться на просторах google play? А если и выстрелит, то потом мне надо будет потратить еще столько же часов на доработку приложения, улучшения, сбор статистики, новые страницы в админке, в которых надо смотреть на статистику и на опубликованные статьи?

Разработка на основе Service Management Platform

Начал искать, какие решения в сети есть для ускорения написания back-end`a, а также чтобы еще и в API умел. Оказывается, есть такое понятие как BaaS — Backend-as-a-Service. Я нашел несколько популярных вариантов:

  • Firebase,

  • AWS,

  • Parse,

  • Back4App.

В этот момент я задумался, а можно ли посмотреть на продукт SMP нашей компании, как на BaaS. Обычно SMP используется для организации сервисного обслуживания, обработки заявок и построения всяческих отчетов, но почему бы не попробовать собрать на её основе приложение?

Сел также считать, сколько мне понадобится времени:

Создать два объекта с нужными атрибутами — минут 5.

Вывести атрибуты на форму создания и на карточки — минут 5. Без преувеличения, мы просто берем и указываем, какие группы атрибутов нам показывать на той или иной странице.

И всё, пункты-то кончились. API, работа с картинками и их хранение идут из коробки. Тесты писать не надо. Настройка карточек мгновенная.

Минусы, конечно, тоже есть:

  • Мы ограничены текущей визуальной составляющей.

  • Мы не можем указывать свои маршруты для API.

  • Чтобы отображать графики, надо подключить дополнительный платный модуль «Дашборды».

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

Подводим итоги

Так как основной проблемой стал временной ресурс, я остановился на втором варианте. Собрал приложение за один вечер и остался доволен: все запустилось быстро и, гипотезу актуальности приложения можно проверить в 1 клик.

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

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

Ознакомиться с приложением в Google Play

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

Комментарии (5)


  1. KorP
    07.04.2022 11:58

    Зашёл прочитать про Backup-as-a-Service, а тут какой-то Backend-as-a-Service, при чём о чём речь стало ясно когда я уже прочитал почти половины статьи...грущу.


    1. Vladbrain Автор
      07.04.2022 12:11

      Пошел перепроверил в гугле, на BaaS поисковик находит чаще Backend-as-a-Service) Так что не грустите! =)


      1. KorP
        07.04.2022 12:13

        Что гуглите чаще - то и получаете. У меня вот в основном banking as a service


        1. Vladbrain Автор
          07.04.2022 12:16

          Сначала вы говорили про  Backup-as-a-Service, теперь про banking as a service...


          1. KorP
            07.04.2022 12:17

            Сначала я говорил о том, что ожидал прочитать, про banking я вам ответил про гугл