Date post: | 16-Jul-2015 |
Category: |
Technology |
Upload: | rambler-ios |
View: | 357 times |
Download: | 2 times |
BaaS (MBaaS) Практики использования
Много их
• Parse • Built.io • Kinvey • …
Возможности
• Remote + Local Data storage + synchronization • User Management • Social Features • Push notifications • Cloud code • On-device encryption • REST API + 3rd party services • Geo Data
Все их хотят
• Facebook приобрел Parse, • PayPal купил StackMob, • Salesforce запустил Salesforce Platform Mobile
Services, • AWS выпустил пакет своих собственных мобильных утилит,
• Pivotal запустил Pivotal CF Mobile Services, • RedHat приобрел FeedHenry.
Экосистема
BaaS MEAP PaaS Mobile Services Framework
Foursquare
Flurry
Heroku
OpenShift
GAE
Azure
AWS
Parse
Kii
Kinvey
Backendless
Android
iOS
Windows
HTML5
Xamarin
Unity
IBM MobileFirst
Kony
Verivo
PaaS vs BaaS vs Meap
• Flexible vs. Proprietary • Self-Service vs. Services Based • Cloud Service Subscription vs. On-Premise
License
+PaaS
Где применяются?
• Стартапы • Хакатоны • Инди-девелоперы • Интеграция с энтерпрайз
Еще один мессенджер
• Groups of users (Chat rooms) • Send messages to users subscribed to a topic • Notify the app of new chat messages • Query for objects on the cloud (messages,
photos, etc.) Log in with Facebook account
Модель
• User • ChatUser • ChatFriend • ChatRoom
Register the App
Add & Setup SDK
Check user (token)
Create Facebook App
Configure Facebook Settings (Facebook App ID)
Create ChatUser + find friends
ChatUser -> ChatFriend + ACL
Кейс №1: Плохой API
• App version Backend version
• Downgrade app?? • Downgrade backend??
HashMap<String, Boolean> data = new HashMap<>(); data.put("app_version", 1); ParseCloud.callFunctionInBackground("checkVersion", new HashMap<String, Object>(), new FunctionCallback<String>() { @Override public void done(String result, ParseException e) { if (e == null) { boolean isOk = Boolean.parseBoolean(result); if(!isOk){ // show popup and exit } } } });
На клиенте
На сервере
Parse.Cloud.define("checkVersion", function(request, response) { var query = new Parse.Query(request.params. app_version); // check?
response.success(true);
});
Кейс №2: логгирование в приложении
• App crashes • Analytics • Server logs • App logs???
ParseObject
• class ParseObject • class CustomLogObject extends ParseObject CustomLogObject myLog = new CustomLogObject(APP_TAGS); myLog.put(TIME_TAG, time());
myLog.put(USER_TAG, API.email); myLog.saveEventually();
Кейс №4: Проверка App Licensing
• Google Play • AppStore • File hosting • Torrents
Google Play App Licensing + BaaS
APP
GOOGLE PLAY CLIENT
LICENSE VALIDATOR
RAW DATA
SIGNED DATA + SIGNATURE
RAW DATA + SIGNED DATA + SIGNATURE
• STRICT POLICY • SERVER MANAGED
POLICY
Проверка подписи
Проверка данных приложения
Кейс №5: Вебхуки
• Pre-processing for requests • Post-processing for responses 1) Baas Our Prod Server 2) Our Prod server BaaS
Кейс №6: Загрузка данных по требованию
APP SERVER
APP SERVER
APP SERVER
APP SERVER
APP SERVER data
data
data
data
data
OR APP SERVER data
data
data data data data data
Parse Notification center
Server
Parse
APNS GCM
Device 1 Device 2 Device N
Проблемы MBaaS
• ~= Vendor Lock-in • Flexibility? • High Latency (Non dedicated) • RIP of BaaS (Stackmob)
Dedicated BaaS
Вопросы?
• http://searchsoa.techtarget.com/feature/Backend-as-a-Service-FAQs
• https://s3.amazonaws.com/kinvey-fb-lp/docs/BaaS+vs+MEAP+201406.pdf
• https://parse.com/docs/