Статьи

Разбор StackMob и Кинвея на WAR

В первой части этой серии мы рассмотрели основные функции бэкэнда как поставщика услуг. В этой части мы рассмотрим три основных сервиса (Parse, StackMob и Kinvey) и сравним их. Каждый из этих сервисов имеет свои уникальные преимущества. Исходя из ваших предпочтений, вы можете выбрать один из них. Мы будем сравнивать трех поставщиков BaaS: Kinvey , Parse и StackMob в алфавитном порядке.

Сейчас можно предположить, что все три соответствуют стандартным критериям BaaS (iOS, Android и JavaScript SDK и т. Д.). Я не буду углубляться в эти разделы, если не стоит упоминать что-либо. Также стоит иметь в виду, что я пришел из очень сильного веб-фона, поэтому я в основном использовал эти инструменты либо в приложениях на основе PhoneGap / Cordova, либо в качестве бэкенда для веб-приложения на основе ajax. Это означает, что я могу пропустить тонкости в родных SDK приложений — вы можете оставлять комментарии с ценными комментариями.

Анализировать

В настоящее время Parse является одним из самых известных поставщиков услуг среди всех поставщиков Baas. Набор функций довольно ванильный и направлен прямо на мобильное пространство (существует множество неофициальных оберток вокруг API ReST для всех, кроме самых непонятных языков), и в нем отсутствуют некоторые навороты, как у бывших. StackMob имеет, но сохраняет набор функций скудным и опрятным.

Хранилище данных

Parse предоставляет хранилище данных одного экземпляра, которое не является версионным и не требует схем (нет переключения между тестированием и производством, хотя теоретически для этого можно использовать отдельные приложения). Схема постоянно адаптивна, что означает, что когда вы отправляете объекты с новым свойством, она просто добавляет еще один столбец в коллекцию для поддержки этого свойства. Это полезно, особенно когда данные отправляются в строго контролируемой среде мобильного приложения и строго типизированных классов. Parse также поддерживает хранение двоичных форматов (хранится в Amazons S3), а интеграция с загрузкой и хранением встроена прямо в SDK.

UI Controls

Одной из уникальных особенностей Parse iOS SDK являются компоненты интерфейса на основе Parse. Общие ViewControllers предназначены для регистрации / входа в систему, для таблиц с поддержкой коллекций (со встроенными запросами) и для отображения изображений доступны OOTB.

iOS SDK богат компонентами пользовательского интерфейса на основе Parse, что делает Parse уникальным. Обычные ViewControllers предназначены для регистрации / входа в систему, для таблиц с поддержкой коллекций (со встроенными запросами) и для отображения изображений, хранящихся в Parse. Эти контроллеры делают Parse заманчивым сервисом для взлома на выходных.

ценообразование

Цена на Parse стоит отдельно для каждой учетной записи, а не для каждого приложения, и один миллион вызовов API в месяц бесплатно. Однако Parse становится дорогим, когда ваше приложение / приложения начинает массово создавать вызовы API. Разрыв между двумя основными ценовыми уровнями в Parse очень велик. Вы либо ничего не платите, либо платите около 200 долларов в месяц, но ждите, прежде чем задохнуться от того, что вы едите, когда достигнут предел, вам не нужно платить 200 долларов в месяц, это всего около 7 центов за 1000 вызовов API вам нужно заплатить. Так что, если приложение постоянно не достигает отметки 4 миллиона каждый месяц, у вас все будет хорошо. Просто будьте готовы платить, если ваше приложение станет большим 🙂

StackMob

StackMob предлагает встроенные SDK для iOS и Android и, кроме того, предлагает гораздо больше функций, помимо базовых функций BaaS. Давайте рассмотрим как типичные функции BaaS StackMob, так и дополнительные функции, которые он предоставляет.

Хранилище данных

При создании нового приложения в StackMob вы получаете две среды: одну для разработки и одну для производства. В режиме разработки хранилище данных ведет себя как в Parse — отправка новых свойств в созданный тип коллекции приведет к появлению новых столбцов в схеме. Однако, когда вы переходите в производственную среду, становится невозможным перепостить.

Схема StackMob также поддерживает отношения. Вы можете использовать онлайн-конструктор схем, чтобы определить эти отношения и передать флаги запросам API, чтобы вернуть эти отношения в виде вложенных коллекций. Для клиентов, готовых платить, StackMob поддерживает управление версиями API ваших приложений.

Наконец, StackMob поддерживает бинарное хранилище, но в отличие от Parse, он не включается непосредственно в SDK. Вместо этого вы можете связать учетную запись Amazon S3 со StackMob, а затем вы можете загрузить S3 из SDK.

Основные данные iOS SDK

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

PaaS

В дополнение к типичным функциям BaaS StackMob представляет собой PaaS для приложений HTML5. Приложения с поддержкой StackMob могут быть размещены непосредственно в самом StackMob. Он также поддерживает перехваты после фиксации с GitHub, который позволяет подключить приложение StackMob к репозиторию Github, и развертывание становится таким же простым, как отправка в ветку на GitHub.

Пользовательский код

Возможность выполнения пользовательского кода на сервере является одной из самых уникальных функций, предоставляемых StackMob. Код сервера может быть написан на Java, Clojure или Scala. После того, как код скомпилирован и упакован в JAR, вы можете представить его как другую конечную точку ReST в вашем приложении. Содержимое JAR имеет доступ к изолированной среде в StackMob. Вы можете читать и записывать в хранилище данных приложений, использовать регистратор в целях отладки и иметь доступ к HTTP-сервису, который дает возможность интеграции со сторонними сервисами.

Для меня это важная функция для любого сервиса, который хочет выйти за рамки чисто мобильных приложений. Без доступа к серверу в типичной системе BaaS вам потребуется реализовать определенную бизнес-логику в вашем клиенте, которая на самом деле не принадлежит ему. Хотя это хорошо для мобильных приложений, где пользователи могут просто щелкнуть правой кнопкой мыши и просмотреть источник, это становится обязанностью для веб-приложений, где эту логику можно легко обойти. Без проверок на стороне сервера ваши данные могут быть легко загрязнены. Например, если бы я хотел написать приложение, которое принимало бы только адреса электронной почты из определенного домена, я мог бы написать немного серверного кода, чтобы проверить это, что значительно усложнит обход. Кроме того, я мог бы также использовать службу HTTP, доступную для пользовательского кода, для интеграции со службой электронной почты, такой как MailGun, для отправки письма с подтверждением — то, что в противном случае потребовало бы встраивания всех ваших токенов приложения и ключей API в клиент.

В то время как вы могли бы достичь всего этого, просто разместив свой собственный сервис в другом месте, универсальный подход StackMob, безусловно, помогает снизить трение и повысить производительность.

ценообразование

Цены на StackMob немного более детализированы, и на первый взгляд кажется, что это более дорогой вариант, но это не всегда так. Что правда, так это то, что вы начнете платить раньше, но цена, которую вы платите, растет более медленно по сравнению с Parse. Стоимость StackMobs рассчитывается для каждого приложения (а не для каждого аккаунта), и это делает ценообразование еще более детализированным, если вы поддерживаете более одного приложения. Опять же, между различными ценовыми уровнями у вас есть опция оплаты по факту.

Kinvey

Полное раскрытие информации — хотя я знал о Kinvey столько же, сколько Parse и StackMob, у меня гораздо меньше реального опыта работы с ним. На первый взгляд это кажется довольно ванильным предложением, но есть несколько очень интересных причин, чтобы заглянуть в Кинви.

Versioning

В API ReSTful управление версиями является важной функцией. Когда вы хотите выпустить новые функции, управление версиями может помочь с обратной совместимостью и предотвратить поломку изменений. Parse не поддерживает управление версиями, и StackMob предлагает его со значительной премией. С Kinvey это еще одна особенность, и если вы можете предсказать необходимость в ней, Kinvey, безусловно, стоит изучить.

JS SDK Offline и кэширование

JavaScript SDK для Kinvey предлагает возможность использовать кэширование данных, полученных из серверной части. Коллекции можно настроить с помощью собственного внутреннего кэша, просто задав свойство. Кроме того, когда вы хотите получить данные с сервера, укажите определенные политики кэширования, такие как «cachefirst» и «networkfirst», которые дают вам точный контроль над сетевой активностью.

Во-вторых, JavaScript SDK также предлагает понятие автономного магазина. Автономный магазин, как следует из названия, позволяет использовать прокси-сервер локального хранилища при работе с Kinvey. Все данные сервера будут храниться локально, что позволяет приложению работать даже в нестабильных сетевых условиях. Более того, после восстановления соединения SDK будет прозрачно синхронизировать все автономные данные с бэкэндом Kinvey.

ценообразование

По сравнению с количеством вызовов API через ReST API, Kinvey неизменно является наименее дорогим вариантом из трех сервисов, иногда с большим отрывом, особенно когда количество вызовов API начинает достигать отметки 10 миллионов.

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

Вывод

Хотите быстро создать приложение для iOS, не беспокоясь о подключении хранилища данных? Парс хорошо подошел бы там. Нужно выполнить пользовательскую бизнес-логику? Попробуйте StackMob. Работаете с ограниченным бюджетом или имеете разнообразную модель роста? Кинви может просто сэкономить кучу денег. Это лишь небольшое количество факторов, которые стоит учитывать — каждая платформа предложит больше возможностей, чем кто-либо мог бы рассказать в одной статье. Проще говоря — не существует универсального бэкэнда как поставщика услуг. Как и в случае практически любого технологического решения, выбор услуги BaaS будет зависеть от требований проекта.