Современные тенденции в мобильных технологиях все больше ориентируются на облачные сервисы и платформы. Например, активно развиваются сервисы Google Firebase, Amazon AWS, Microsoft Azure и другие, включающая сервисы облачной базы данных, уведомлений, хранения статических и динамических данных, аналитики и др. и позволяющие упростить создание и развертывание полнофункциональных систем с минимальным использованием собственного backend-а.
Мы активно используем в нескольких мобильных проектах сервисы Firebase для хранения данных, работы с уведомлениями, контроля сбоев и аналитики. В частности, в мобильных приложениях: AllNews, ССТ Cloud, Marketing Fest, Top Fest и некоторых web-проектах.
Недавно мы разработали мобильное приложение для Android/iOS/Web для мероприятия Marketing Fest 2017 и TopFest 2017 на базе сервиса Google Firebase. Основным критерием выбора стека технологий стала необходимость разработать и опубликовать Android, iOS, Web-приложения в максимально короткие сроки и с минимальным бюджетом. При этом нам требовался полный набор средств: от облачной базы данных, push-уведомлений, авторизации, до аналитики и сбора различной статистики.
В результате, мы выбрали Google Firebase и его отдельные сервисы: Database, Crash Reporting, Analytics, Notifications, Hosting, Storage. Основным критерием выбора стали: условно бесплатный доступ (бесплатный до определенного уровня потребления ресурсов), большое количество примеров и документации, простота использования.
Сервис Database - облачное NoSQL-хранилище и набор Android-, iOS-, Web-SDK (и HTTP REST API) для работы с базой данных.
Мы использовали сервис Database как онлайн-хранилище динамических данных - данные о программе мероприятия, спикерах, вопросы пользователей и другие данные. Мы изначально не стали делать статическое приложение, т.к. организаторам требовалась возможность вносить изменения в программу, описание мероприятий, спикеров как до мероприятия, так и в процессе (например, изменялось время выступления спикеров). Для этих целей сервис Database подошел отлично. Все мобильные приложения синхронизировали локальное хранилище данных с облачным и в каждый момент времени имели актуальные данные.
Отдельным требованием была возможность автономной работы приложений без выхода в интернет. Это частое требование для мероприятий, на которых наблюдается проблема с доступностью сети. Эта проблема была быстро решена штатными средствами SDK сервиса Database - SDK позволяет реализовать локальное хранилище в приложении и выполнять его синхронизацию при появлении связи с сервером. В SDK есть минимум два способа это сделать: keepSync - поддержание соединения с облачной БД для синхронизации данных в реальном времени, Persistence - полная синхронизация облачной БД на устройство с возможностью работы без доступа в интернет. При небольшом количестве данных мы выбрали второй вариант - полная синхронизация данных.
В результате приложение оставалось полнофункциональным как при наличии, так и отсутствии доступа в интернет.
Отдельное преимущество сервиса - web-консоль для доступа к БД извне приложения. Это позволяет очень быстро изменять/добавлять/удалять данные без единой строчки кода. Исходные данные для БД мы заполнили именно через консоль.
Сервис Crash Reporting - средство сбора событий и сбоев приложений.
Подключение SDK Crash Reporting позволило нам отслеживать все сбои приложений в процессе отладки и эксплуатации. Сервис в удобной форме отображает достаточно много информации об устройстве, стеке вызовов во время сбоя, количество затронутых устройств, версию приложения и другую информацию.
Технически, мы разделили приложение на Debug и Release, это позволило разделить сбои тестовых сборок и сбои release-версии. Делается это легко - в firebase зарегистрировали два приложения с идентификаторами com.osinit.topfest и com.osinit.topfest.debug.
Одной из основных ошибок в Android, например, оказался сбой OutOfMemory, который возникал в окне списка партнеров, где отображается более 30 банеров. Мы изначально недооценили количество и размер банеров каждого партнера, что привело к ограничению в 50Мб на доступную память для приложения на некоторых устройствах. Ошибку удалось быстро исправить до выхода Release.
Сервис Analytics позволяет собирать статистику различных событий, возникающих в приложении: запуск, показ экрана, нажатие кнопки и другие. Аналитика для любых приложений - очень важная информация, позволяющая оценить качество ПО, поведение пользователей, получить сводную информацию о пользователях (интересы, географию, тип устройств и др.) и востребованность функций.
В приложении мы подключили SDK Analytics для фиксации событий запуска, завершения приложения, просмотра основных экранов (программа, спикеры), пользовательские события (вопросы спикерам, переход на сайты партнеров, телефоны).
Все это позволило собрать статистику по использованию приложения и важную информацию по профилю пользователей. Также организаторы получили информацию о поведении пользователей в процессе мероприятия (когда запускали приложение, каким спикером больше интересовались, какие партнеры были наиболее популярны и др.). Эта информация учитывается в дальнейших мероприятиях.
Сервис Storage предоставляет облачное пространство для хранения статических файлов: изображения, документы и др. Мы использовали сервис для хранения фотографий спикеров, логотипов партнеров мероприятия и других фиксированных данных.
Для работы с сервисом Firebase предоставляет SDK для всех платформ, что позволило без проблем интегрировать это решение.
Сервис Hosting предназначен для хранения файлов web-приложения. Кроме мобильных приложений для мероприятия мы разработали административную панель с функциями просмотра и редактирования программы мероприятия, информацией о спикерах, просмотром комментариев, отправкой push-уведомлений.
Для размещения Web-приложения не стали использовать отдельный хостинг, а разместили frontend на Firebase Hosting. Эта услуга бесплатная и позволяет упростить создание подобных несложных Web-приложений.
Мы разместили Frontend-приложение для мероприятий на хостинге и получили доступ через сгенерированный домен с подключенным SSL.
В результате получилось развернуть полноценное Web-приложение для администрирования мероприятия без дополнительных хостингов, закупки доменных имен и SSL-сертификаторв.
Сервис Notifications позволяет отправлять push-уведомления на Android, iOS-устройства. Сервис бесплатный и позволяет формировать рассылки непосредственно из консоли Firebase, тем самым упрощая процесс рассылки.
Мы использовали сервис для плановой рассылки push-уведомлений на устройства.
Сервис Notifications предоставляет административную панель для создания и отправки push. При этом предоставляется возможность установки текста, темы, планируемого времени отправки, сегмент устройств и др.
Мы использовали плановую отправку push. Для этого до начала мероприятия были согласованы все сообщения и план рассылки, который мы зарегистрировали по сервисе. По достижении планового времени автоматически выполнялась рассылка сообщений, сервис отображал количество клиентов, принявших сообщения.
При необходимости дополнялись и изменялись отдельные сообщения, что также выполнялось через панель управления.
В результате можно сказать, что мы достигли желаемых результатов с использованием сервиса Firebase и рассматриваем текущие наработки как платформу для дальнейших проектов.
В предстоящих проектах также ориентируемся применение на облачных сервисов и технологий, что позволяет существенно минимизировать затраты и повысить качество продуктов.