BaaS — Введение
Backend как услуга или, в зависимости от ваших вкусов, Mobile Backend как услуга или даже серверный стек как услуга — это относительно новое облачное предложение, которое начинает набирать обороты во многих областях, а не только в мобильном мире.
BaaS, как мы будем называть это для краткости, разделил свою маленькую нишу, аккуратно расположенную между платформой как услугой (PaaS) и программным обеспечением как услугой (SaaS). Неудивительно, что он делает именно то, что говорит на жестком диске — то есть — он обеспечивает почти полный стек на стороне сервера, включая постоянство, управление пользователями, поиск и запрос данных, хранение файлов и некоторые другие вещи одним щелчком мыши.
Хотя первоначальное намерение этих предложений BaaS состояло в том, чтобы избежать трения и боли при настройке и поддержке серверного бэкенда для разработчиков мобильных приложений, их использование стало гораздо более распространенным. В конце концов, если вам нужно только хранилище данных и / или управление пользователями, почему бы и нет?
Особенности предложений BaaS
Эта область облака все еще находится в зачаточном состоянии и развивается ежедневно. Конкуренция довольно сильна с различными компаниями, которые ищут уникальный способ создания своего продукта, однако есть ряд базовых функций, которые следует ожидать от этих поставщиков.
Основы хранения и поиска данных
Очевидно, что наиболее важным аспектом любой из этих услуг является способ хранения и извлечения ваших данных. Это особенно полезно в мобильных ситуациях, когда вы не можете быть привязаны к одному устройству или в социальном или совместном приложении, которое требует обмена данными.
Существующие сервисы предлагают модель хранения без схемы, и добавление новых свойств объекта (или в смысле реляционных БД — столбцов) — это вопрос их добавления в код вашего клиента и передачи новых данных. Текущие сервисы предлагают определенный уровень контроля над схемой, но это довольно упрощенно и не особенно полезно для ограничения данных, отправляемых сервисам. Несмотря на то, что эта гибкость может изначально способствовать повышению производительности труда разработчиков, стоит помнить, что по мере роста сложности ваших приложений вам необходимо строго контролировать свою схему.
Типы данных, как и следовало ожидать, очень мобильны. Ваши типичные типы, такие как Strings, Dates, Booleans, Numbers и т. Д., Очевидно, все доступны, но другие ключевые типы, которые вы можете увидеть, это GeoPoints — возможность хранения местоположения и Binary — для хранения мультимедиа.
API и SDK
Предоставление одного HTTP-API ReSTful для стека вашего сервера может быть несколько ограничивающим, и часто существуют более эффективные способы передачи данных. В связи с этим и для облегчения некоторых трудностей, связанных с обменом данными между вашим клиентом и сервером, службы BaaS обычно предоставляют несколько SDK, каждый из которых предназначен для конкретной клиентской платформы. Эти SDK обычно бывают трех видов — iOS, Android и JavaScript (полезны, но не ограничиваются, приложениями Shell, например приложениями на основе PhoneGap / Cordova) и предлагают более чистую абстракцию для работы с вашим сервисом — аутентификацию пользователя, абстрактную модель и классы коллекций , строители запросов и т. д.
Наряду с этими SDK обычно существует базовый API ReST, который позволяет другим платформам или любым индивидуальным решениям, о которых люди могут мечтать, работать с этими предложениями BaaS. Однако следует отметить, что API-интерфейс ReST, как правило, не так полон, как SDK.
В то время как некоторые из современных сервисов остаются верными своим мобильным корням и официально предлагают только мобильные SDK, такие сервисы, как StackMob , приняли расширенные варианты использования и создали свои собственные официальные SDK для Ruby, Scala и Java.
Запрос данных
Простые выборки отдельных объектов и целых коллекций — это одно, но часто необходимо выполнять несколько более сложные запросы к вашим данным. Эти сервисы обычно предлагают способ выполнить эти запросы к вашим коллекциям. Вы также обнаружите, что большинство сервисов предлагают некоторую функциональность подкачки, чтобы уменьшить риск выполнения неограниченных запросов к вашим данным.
Также доступны дополнительные запросы, которые вступают в свои права в мобильном пространстве, а именно — геопространственные запросы. Например, все службы обычно предлагают запросы, такие как «найти меня точки данных, которые находятся рядом с определенной точкой» или «найти меня точки данных, которые находятся в пределах определенного радиуса определенной точки» — так что ваше приложение «Лучшие бары в мире» может легко показывать бары / пабы / таверны, которые находятся ближе всего к текущему местоположению пользователя.
Бинарное Хранение
Мобильные устройства оснащены всевозможными приборами для сбора данных — от камер для фото и видео до микрофонов для аудио. Это просто больше не просто ввод слов на крошечной клавиатуре, и поэтому сервисы BaaS сегодня обычно предлагают различные уровни бинарного хранилища. Например, Parse предлагает полностью интегрированную загрузку файлов непосредственно из своих SDK, в то время как StackMob просто предлагает канал для добавления собственной конфигурации Amazon S3 и доступа к этим данным через их API ReST. В зависимости от ваших требований к решению это может быть или не быть проблемой.
Безопасность данных
Если вы храните данные пользователей, жизненно важно, чтобы всем и каждому не разрешался только доступ к ним. Parse , Kinvey и StackMob предлагают различные методы блокировки данных способами, которые вы обычно ожидаете, например, предоставление доступа на чтение / запись к данным в зависимости от статуса входа в систему, для конкретного владельца / пользователя, для конкретной роли. Хотя каждая служба предлагает аналогичные функции, могут быть определенные особенности или нюансы, которые нужно будет проверить в соответствии с вашими требованиями, прежде чем остановиться на конкретном поставщике.
Аутентификация
Что хорошего в стеке серверов, если у вас нет возможности аутентифицировать пользователей? Не много, я бы поспорил. К счастью, предложения BaaS, как правило, дают вам возможность управлять пользователями и выполнять различные действия, которые пользователь хотел бы сделать — вход в систему, выход из системы, сброс пароля и т. Д. Большинство служб предлагают интеграцию в модули аутентификации Twitter и Facebook
Всплывающее уведомление
Наконец, в мобильном мире один из ключевых способов уведомления пользователей об изменениях данных или других внешних событиях обычно облегчается с помощью push-уведомлений. Пуш-уведомления, доступные практически на каждой мобильной платформе, позволяют отправлять данные на пользовательские устройства, даже если приложение работает в фоновом режиме. Без использования службы BaaS вы должны были либо написать специальный код интеграции для каждой конкретной системы уведомлений ОС, либо использовать стороннюю облачную службу, такую как Urban Airship. С BaaS вполне возможно объединить все это в единую управляемую услугу — фактически Kinvey , один из трех основных поставщиков BaaS, фактически интегрируется с Urban Airship для поддержки push-уведомлений.
Соображения по предложениям BaaS
Очевидно, что, как и во всех облачных вещах, есть некоторые вещи, которые вы должны рассмотреть, прежде чем подписать свою жизнь.
Заблокировать
Общей проблемой облачных технологий является проблема блокировки. Вы не хотите брать на себя обязательство только для того, чтобы вытащить ковер из-под вас в плане цен, поддержки, суверенитета данных и т. Д. Вы хотите быть уверенными, что сможете вывести свои данные как можно быстрее, если потребуется. Вы также хотите удостовериться, что специфичный для платформы код не распространяется слишком далеко в вашу кодовую базу или, по крайней мере, понимаете риск, связанный с этим, если вы решите в значительной степени интегрировать некоторые функциональные возможности платформ. Например — Parse предлагает набор (совершенно необязательных) виджетов пользовательского интерфейса с их SDK, которые позволяют быстро создавать экраны входа в систему и списки привязки данных Parse — если вы решили, что хотите перейти на StackMob или Kinvey, вам следует подумать об усилиях требуется по существу переписать эти элементы.
Суверенитет данных
Где хранятся ваши данные? Если пользовательские данные важны для вас, и, конечно, это так, вы захотите понять последствия хранения данных в определенных географических точках. Например, европейские пользовательские данные, хранящиеся в Соединенных Штатах, подпадают под действие определенных законов США, которых иначе не было бы, если бы они хранились в Европе.
Если вы не знаете, где хранятся ваши данные, или не можете переместить эти данные, вы можете оказаться в затруднительном положении, если пользователь воспользуется вашими текущими настройками. Это та область, в которой большинство провайдеров, похоже, немного расплывчаты.
ценообразование
Текущие услуги BaaS имеют различные модели ценообразования. Как и в большинстве облачных предложений, они обычно предлагают модель с полосой затрат и имеют довольно щедрый уровень бесплатного пользования. В прошлом бесплатный уровень различных услуг предлагал разные уровни детализации. Понимание типичного использования вашего приложения очень важно. В определенных сценариях ежемесячные затраты между любыми двумя услугами могут быть такими же значительными, как разница между 30 и 200 долларами в месяц.
Закрытие точек
Мир BaaS все еще стоит на ногах и вместо того, чтобы ограничиваться просто мобильными устройствами, они используются во многих других решениях, и поэтому многие из них в настоящее время предлагаются в качестве дополнений к популярным службам PaaS, таким как Heroku и AppHarbor . StackMob даже предлагает модель PaaS специально для приложений HTML5, использующих его серверные функции. Это действительно захватывающая область для участия.
Надеемся, что эта статья дала вам лучшее понимание экосистемы мобильных бэкэндов как сервисов. В моей следующей статье я хочу критически взглянуть на текущие предложения в этом пространстве ( Parse , StackMob и Kinvey ) и показать вам, где они растут или падают с точки зрения возможностей и проблем.