О сервисе синхронизации приложения Турист

Не так давно я выложил исходники приложения Турист. Не только мобильное приложение, но и сервис, обеспечивающий синхронизацию данных в облаке. Этот бэкэнд можно развернуть на бесплатных серверах Google App Engine (кстати, деплой делается прямо из Android Studio).

Сервис синхронизации написан Java. Как я уже писал, мне пришлось прикрыть старое приложение «Турист» (пожалуй, самое популярное, которое у меня когда-либо было в Google Play с 10000-50000 установок), и сервис на GAE и перейти на PHP/MySQL решение по финансовым соображениям — слишком уж много пользователей было, что обеспечение бесперебойной работы сервиса вылетало в копеечку.

Проблемная квота

Турист не укладывался в ежедневную бесплатную квоту операции чтения/записи в persistence. И почему-то ещё объем хранимых данных был больше гигабайта, что тоже было за пределами бесплатно дозволенного. Думаю, что виноват JPA. Довольно большой процент из этого гигабайта занимали не полезные данные, а мета-информация, всевозможные индексы.

Несколько идей, как раздвинуть рамки квот

Дисклеймер: эти способы я не пробовал.

1. GAE позволяет создать больше 20 приложений на разных доменах под одним аккаунтом разработчика. Создаём все 20 с одним и тем же кодом. Биллинг для приложений не включаем, то есть действуют бесплатные квоты, на каждое приложение своя квота, обнуляющаяся раз в сутки. Мобильное приложение привязывает каждого пользователя навсегда к одному из 20 доменов. Решение кажется кривоватым, но, видимо, работоспособным.

2. Для каждого Google-аккаунта пользователя, установившего мобильное приложение, автоматически деплоить приложение Google App Engine. Таким образом, каждый пользователь получает личный домен на GAE, обслуживающий синхронизацию между устройствами этого и только этого пользователя. Получается, что домен недоступен для контроля мне, а данные пользователя отделены от данных других пользователей. Дополнительный плюс тут в безопасности данных: разработчик приложения перестаёт быть человеком, который имеет доступ ко всем данным. Он, как и остальные пользователи, имеет доступ только к своим данным на своём облаке. Техническая сложность тут в том, что надо делать автодеплой, инициированный мобильным приложением.

Альтернативные решения

Можно было бы не связываться с GAE, а использовать файлы на Google Drive. Но мне это показалось не гибким. Кроме того, Google Drive спрашивает пользователя дать разрешение на доступ приложения к сервису.

В момент разработки Туриста ещё не было Google Cloud Storage. Теперь есть. Но квоты там такие же драконовские: 1 цент за тысячу операций — это грабёж среди бела дня. Понятно, что если бы сейчас была такая задача, то лучше делать её на базе Google Cloud Storage.

Запись опубликована в рубрике Uncategorized с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *