Pull to refresh
0

Свой облачный бэкенд в одну строчку кода. Обзор BaaS платформы «Backendless»

Reading time 8 min
Views 48K
Привет Хабр!

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



(Осторожно: под катом много примеров простого кода. Любителям «велосипедов» читать не рекомендуется. После роста популярности данного сервиса ожидается ликвидация угрозы глобального потепления массовое сокращение депрессий от рутинных задач при написании серверной части.)

Backendless – платформа бэкенд как сервис (Backend as a Service), которая предоставляет готовую облачную серверную инфраструктуру для всех типов приложений. Это позволяет разработчикам, стартапам и крупным компаниям выигрывать время и деньги, отказавшись от разработки своего сервера, и сфокусироваться на функциональности приложений, их продвижении и пользователях (улучшении UX). АПИ платформы доступны через нативные СДК для следующих клиентских окружений: JavaScript, Android, iOS, Windows Phone, Flex/AIR. Все АПИ также доступны через REST.

История вопроса
Первоначальное массовое распространение персональных ПК в конце 90-х не повлекло за собой создание подобных концепций. И только после двадцатилетнего развития софтверной и хардверной инфраструктуры всего глобального технологического кластера (производительность персональных и серверных станций, стабильные и высокоскоростные каналы связи, высокая ждем не дождемся пропускная способность беспроводных и мобильных сетей) привели к расцвету клиент-серверной архитектуры и популяризации облаков с моделью софт-как-сервис (софт-в-аренду). Мощные и умные мобильные устройства уже здесь. Также как в корпоративномом мире “неэффективность" сегодня самый страшный грех, так и в будущем, аналогом мракобесия будут служить неподключенные к Интернету устройства (люди кстати тоже, Матрица негодует). Все должно быть законнекчено, удаленно управляться и мониториться, статистицироваться и оптимизироваться, и все в реал-тайме. И почти любое подключенное устройство к сети данных требует сервера, не так ли?

Почему появляются такие платформы?
  • Кто-то хочет увеличить энтропию доброты во Вселенной и решил поделиться с миром хорошим проектом (опенсорс ради опенсорса)
  • Кто-то сделав предыдущий пункт хочет зарабатывать на поддержке хорошей вещи в рабочем состоянии (коммерческий опенсорс)
  • Кому-то надоело повторять объемы повторяющихся действий и все эту кухню решили автоматизировать (любой повторяющийся код со временем автоматизируется и обесценивается)
  • Вопрос стоимости, дешевле воспользоваться чьим-то готовым сервисом чем писать заново (софт-как-сервис позволяет любому получить доступ к софту энтерпрайз уровня прямо со старта и без капиталовложений).


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

Детализация причин попробовать
Избегаем необходимости иметь дело с
  • сервером приложения
  • базой данных
  • клиент-серверной библиотекой
  • написанием админки
  • дизайном своего АПИ
  • и хостингом.


А зачем, если можно не париться с хостингом, сервером и командой гиков дальнейшей его поддержкой для каждого приложения или заказчика.? Создавать приложения любят все, а ковырять скучный серверный код и админить серверную часть тоскливо и муторно.

Для чего:
BaaS потенциальный стандарт индустрии для
  • прототипов
  • мобильных приложений
  • кросс-платформенных приложений (можно использовать одну и ту же платформу для всей своей базы пользователей на смартфонах, планшетах или ПК (через браузерные и десктоп приложения)
  • энтерпрайз приложений (и интеграции существующих backoffice систем с новыми мобильными приложениями).

Для кого:
Разработчики, стартапы, цифровые агентства и контент провайдеры, системные интеграторы, издатели приложений, энтерпрайз компании.

Функционал платформы:

User Management API (управление пользователями) – обеспечивает для приложения регистрацию и логин пользователей, восстановление пароля или апдейты учетной записи кросс-платформенно.

Пояснение: сервис по управлению пользователями отвечает за 2 основные функции — регистрация пользователей, а также их авторизация. Больше не нужно писать проверки существует ли пользователь, поддерживать сессии, отправлять имейлы при разных событиях, создавать управление доступом для пользователей. Для этой задачи существует много бизнес правил, что позволяет очень гибко настроить управление пользователями для того, чтобы удовлетворить все потребности.

Примеры кода:
Android
{
Backendless.UserService.login(

”james.bond@mi6.co.uk",

        ”i.am.bond",

      asyncCallback ); 
}

iOS
{
[backendless.userService login:

@”james.bond@mi6.co.uk"

   password:@”i.am.bond"

  responder:responder];
}

JavaScript
{
Backendless.UserService.login(

”james.bond@mi6.co.uk",

        ”i.am.bond",

        responder );
}

Data Service API (реляционные данные) – обеспечивает хранение данных пользователей. Приложения могут хранить, обновлять, удалять данные и осуществлять поисковые запросы.

Пояснение: с сервисом можно работать не имея никаких знаний о базах. Платформа позволяет создавать свои таблицы и связи между ними при помощи АПИ. На клиенте достаточно создать структуру данных, при вызове метода СДК сервер создаст нужные таблицы и свяжет их между собой. Либо это можно сделать с помощью интуитивного пользовательского интерфейса через веб-консоль.

Примеры кода:
Android
{
Person person = new Person(
"Bob", 35, "bobby@gmail.com");
Backendless.Persistence.of( Person ).save( person, asyncCallback );
}

iOS
{
Person *person = [Person new];

person.name = @"Bob";

person.email = @"bobby@gmail.com";

id <IDataStore> dataStore =

[backendless.persistenceService of:   

    [Person class]];
[dataStore save:person responder:resp];
}

JavaScript
{
var person = new Person(
    "Bob", 35, "bobby@gmail.com");
Backendless.Persistence.of( Person ).save( person, responder );
}

Publish/Subscribe Messaging API (сообщения) – клиентские приложения могут обмениваться сообщениями в режиме реального времени путем создания Издателей (Publishers) и Подписчиков (Subscribers).

Пояснение: Сообщением может быть любые произвольные (дискретные) данные. Эта функция полезна при разработке игр, чатов и приложений требующий транслирование данных (data broadcast) или p2p доставку. Отсылка push уведомлений и in-app сообщения мобильным пользователям.

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

Примеры кода:
Android
{
Backendless.Messaging

    .subscribe( ”myChannel",

    methodCallback,
    subscriptionCallback );
}

iOS
{
subscription = [backendless.messagingService                      

subscribe:@"myChannel"

    subscriptionResponder:responder
subscriptionOptions:subscriptionOptions];
}

JavaScript
{
Backendless.Messaging

    .subscribe( "private_channel",

    methodResponder,
    subscriptionResponder );
}

Push Notifications API (уведомления) – это подраздел сообщений, но с нативной интеграцией доставки сообщения мобильному устройству как push уведомления. Поддерживаются для iOS, Android и Windows Phone.

Примеры кода:
Android
{
Backendless.Messaging

    .publish( "Hello!",

        new DeliveryOptions(

            PushBroadcastMask

                .ANDROID ));
}

iOS
{
PublishOptions *p = [PublishOptions new];

[p addHeader:@"Name" value:@"Anonymous"];


MessageStatus *res =  [backendless.messagingService

   publish:@"myChannel"

   message:@"Hello!" publishOptions:p

   deliveryOptions:[DeliveryOptions  

       deliveryOptionsForNotification:PUSHONLY]];
}

JavaScript
{
Backendless.Messaging

    .publish( "Hello!",

        new DeliveryOptions(

            PushBroadcastMask

                .ANDROID ));
}

Geolocation API (геолокация) – приложения могут регистрировать географические координаты (гео точки) с дополнительными метаданными на сервере и впоследствии осуществлять поисковые запросы для других точек по метаданным в пределах заданного радиуса или квадрата.

Возможные примеры применения в повседневной жизни:
  • родители — сервис автоматической привязки фото тех мест где находятся их дети.
  • службы доставки и курьеры — фотографии объектов адресатов;
  • автомобилисты — состояние дорог и точной погоды в радиусе;
  • туристы — достопримечательности в округе;
  • авто-путешественники — список ближайших ресторанов/отелей с меню и ценами, свободными местами;
  • указание расположения друзей, если они находятся поблизости;
  • пользователь делает посты с указанием категории — на пр. “рестораны” (и добавляет фото интерьера ресторана) или романтическое место (добавляет фото какого-то пейзажного места). после этого любой другой пользователь может отфильтровать просмотр только романтических мест вокруг него;.
  • приложение, которое будет знать местоположение пользователя, с заданным радиусом. Другие репортируют какую то ситуацию или событие, и если в данный момент эта ситуация попадает в заданный радиус, пользователь получает уведомление (информация о пробках или гаишниках на дороге, происшествиях).

Примеры кода:
Android
{
Backendless.Geo.getPoints(

    new BackendlessGeoQuery(

        "city", ”Kiev" ),
    asyncCallback );
}

iOS
{
BackendlessGeoQuery *query = [BackendlessGeoQuery query];

[query metadata:[NSDictionary

    DictionaryWithObjectsAndKeys:

    @"Moscow", @"city", nil]];


[backendless.geoService getPoints:query  
                                            
                 responder:responder];
}

JavaScript
{
Backendless.Geo.getPoints(

    new BackendlessGeoQuery(

        "city", ”Dallas" ),
    responder );
}

Media Services API (медиа потоки) – набор сервисов обеспечивающих “проигрывание по запросу” и живое потоковое видео и аудио. Приложения могут публиковать потоки с видеокамеры и микрофона для записи или живого вещания. Записанное медиа (видео или аудио) и живые стримы можно воспроизводить на других клиентах.

Пояснение: Медиа сервис позволяет стримать видео или аудио с клиентского приложения на сервер и воспроизводить этот поток на других устройствах. Так же можно воспроизводить медиа контент загруженый с помощью файл сервиса.

Примеры применения: видео-конференция, видео-чат, живая видео-трансляция одновременно с или на все устройства (с телефона, планшета, камеры ПК), запись видео или аудио сразу на сервер, живая аудио-трансляция (радио, музыка)

Примеры кода:
iOS
{
MediaPublishOptions *options =    [MediapublishOptions

    recordStream:self.preview];

[backendless.mediaService

    publishStream:@”myVideoChannel"

    tube:@”Funny Dance"
    options:options responder:resp];
}

File Service API (хранилище контента) – поддерживает загрузку, общий доступ и скачивание файлов или блоков данных. Файлы/данные могут связываться с постоянными записями данных из сервиса реляционных данных, сообщениями и гео-точками.

Пояснение: Сервис по управлению файлами дает возможность заливать и получать доступ к файлам через консоль или клиентские СДК.

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

Примеры кода:
Android
{
Backendless.Files.upload(
    file, path, asyncCallback );
}

iOS
{
[backendless.fileService upload:path
    content:content
    responder:responder];
}

JavaScript
{
Backendless.Files.upload(

        fileList,
        ”myFolder"),
    responder );
}

Чем данная платформа лучше других?

Версионность — с общими данными/таблицами между версиями – создав приложение вы можете сделать официальный релиз, а в это время работать над другой версией этого же приложения.

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

Фильтрация сообщений — работает фильтрация сообщений по саб-топикам, а так же можно задать фильтр в sql виде, так называемый селектор.

Поддерживаются flex/air клиенты — в наличии СДК для ActionScript. С помощью флэша приложение будет выглядеть на любом устройстве одинаково, и без танцев с бубном.

Коробочное решение — можно получить свой in-house Backendless из коробки. Крупные энтерпрайз клиенты могут развернуть платформу на своих собственных серверах только для себя.

Гибкое ценообразование и «жирный» бесплатный план — в фримиум входят: АПИ вызовы безлимитно, 2 GB дискового пространства, 200,000 publish/subscribe messages, 200,000 push notifications. Платить если и придется, то только за то, что будет непосредственно использоваться. Подробнее посмотреть и посчитать можно здесь с помощью удобного калькулятора. Кроме того, пока платформа в бете, любые лимиты – формальная условность.

АПИ и вебконсоль — тщательно зашлифованы под разработчиков, потому что простоте и удобству уделяется максимум внимания.

Автомасштабируемость — платформа размещена на инфраструктуре Амазона и автоматически масштабируется при возникающих нагрузках: по месту и по используемой памяти. В случае превышения критического лимита при обработке запросов запускаются дополнительные виртуальные машины.

Как начать: регистрируемся или заходим сразу в веб-консоль разработчика через ФБ авторизацию, качаем СДК с примерами, прописываем ключи для каждого СДК, пишем вызов к АПИ и все: ваш облачный бэкенд в вашем распоряжении.

В техподдержку можно присылать вопросы на русском. Офисы компании расположены в Штатах и Украине.
Only registered users can participate in poll. Log in, please.
Вам знакома концепция «бэкенд-как-сервис»?
11.16% уже пользуюсь 55
62.88% думаю попробовать 310
25.96% по разным соображениям всегда буду писать серверный бэкенд сам (напишите в комментах подробней плиз) 128
493 users voted. 166 users abstained.
Tags:
Hubs:
+23
Comments 57
Comments Comments 57

Articles

Information

Website
backendless.com
Registered
Founded
Employees
11–30 employees
Location
США