Building a Better BaaS
description
Transcript of Building a Better BaaS
![Page 1: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/1.jpg)
Building the better BaaSEd Anuff & Nate McCall
![Page 2: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/2.jpg)
@edanuff @zznate
![Page 3: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/3.jpg)
What’s a BaaS and what’s so special about Usergrid?
Ed AnuffUsergrid Founder, Apigee Product Strategist
3
![Page 4: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/4.jpg)
App, Cloud, and HTTP
4
![Page 5: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/5.jpg)
No Web Stack
5
Page Templates
MVC Logic
Database
![Page 6: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/6.jpg)
Just Apps and APIs
6
![Page 7: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/7.jpg)
Building A Platform
7
![Page 8: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/8.jpg)
Not just an App
8
![Page 9: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/9.jpg)
Developer
App
![Page 10: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/10.jpg)
TeamTeam Team
![Page 11: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/11.jpg)
Team
App App App
![Page 12: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/12.jpg)
App
Team
![Page 13: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/13.jpg)
App
Team
![Page 14: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/14.jpg)
TeamTeam Team
App App App App App App
![Page 15: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/15.jpg)
Key Challenges
• New Type Of Database (Cassandra)• New Type Of Deployment (Elastic in the Cloud, Small & Fast on the Desktop)• New Type of Access (REST API, SDKs)• New Type of Learning Curve (Smart Docs & Swagger)
15
![Page 16: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/16.jpg)
Major Milestones & Progress
• 2011 – Usergrid released as first Open Source BaaS• 2012 – Usergrid becomes part of Apigee• 2012 – Apigee ships Enterprise App Services• 2013 – Integrated as Apigee Edge BaaS• 2013 – Usergrid goes to Apache• 2014 – Apache Usergrid 1.0 release!• 2014 – Apigee 127 Developer Kit with Node.js, Volos, and Usergrid• 2014 – Apigee BaaS 2.0 and Usergrid 2.0 Beta
16
![Page 17: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/17.jpg)
How do you use a BaaS?
17
![Page 18: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/18.jpg)
/users
/groups
/users/me/followers
![Page 19: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/19.jpg)
/restaurants/products/car-washes
/<whatever>
![Page 20: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/20.jpg)
POST /devices/<id>
![Page 21: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/21.jpg)
POST /events
{ “category” : “ads”, “counters” : { “ad_clicks” : 5}}
![Page 22: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/22.jpg)
/users/ed/friends/nate
/users/ed/likes/foods/pizza
![Page 23: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/23.jpg)
GET /restaurants?near=37.803, -122.404
![Page 24: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/24.jpg)
GET /restaurants?ql=name contains ‘pizza’ and within 5m of 39.962,-105.114
![Page 25: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/25.jpg)
POST /users/me/activities
{ “title”: “look”, “location”: …}
![Page 26: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/26.jpg)
GET /users/me/feed
[{ “title”: “Ed ate a slice of pizza”, “location”: …}]
![Page 27: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/27.jpg)
postUserActivity(me, activity)
[client postUserActivity: “me”activity: activityObj]
![Page 28: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/28.jpg)
/token?grant_type=...
/auth/facebook?fb_access_token=…
![Page 29: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/29.jpg)
/users?filter=facebook.first_name eq 'john'
![Page 30: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/30.jpg)
/users?ql=name eq 'john' and facebook.education.school.name contains '...'
![Page 31: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/31.jpg)
What’s Usergrid 2.0 all about?
Nate McCallApache Usergrid PPMC & Cassandra MVP
31
![Page 32: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/32.jpg)
Who is this man and why isn’t he here?
32
Todd Nine, Lead Architect for Apigee Edge BaaS, Apache Usergrid Committer, andRecently Married Man as of Last Friday, now on Honeymoon
![Page 33: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/33.jpg)
New Pieces of the Stack
33
RxJava GuicyFigArchaius
![Page 34: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/34.jpg)
Challenges
• 1.0 Architecture had a number of Cassandra anti-patterns
• Enterprise users wanted to load and query large datasets
• Cassandra moving to 2.0 with CQL3, deprecating Thrift protocol
• Team wanted to leverage new indexing models of Elastic Search
34
![Page 35: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/35.jpg)
New Architectures
• Elastic Search
• Cassandra 2.0+
• Moving most common operations to CQL as the transport
• Archaius and Guice for dynamic configuration management
• Hystrix and RxJava
35
![Page 36: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/36.jpg)
New Architectures: Elastic Search
• Right tool for the job
• Cassandra worked… until it didn’t.
• Well known operationalization characteristics
• Scale-out was well understood for “full text search” use case
36
![Page 37: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/37.jpg)
New Architectures: Cassandra 2.0/2.1
• Still best of breed NoSQL solution for scale
• Off-heap performance improvements
• Failure scenario performance improvements
37
![Page 38: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/38.jpg)
New Architectures: Archaius and Guice
• Properties typing
• Property change polling
• Hierarchical callbacks on changes
• Load from anywhere dynamic sources
• … all via Guice annotations
38
![Page 39: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/39.jpg)
New Architectures: Archaius + Guice = GuicyFig
39
![Page 40: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/40.jpg)
New Architectures: Archaius + Guice = GuicyFig
40
![Page 41: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/41.jpg)
New Architectures: Hystrix and RxJava
• Compose sequences of asynchronous events declaratively
• Circuit breaker pattern for back-off and retry
• Natural fit with complex, asynchronous operations such as graph updates…
41
![Page 42: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/42.jpg)
New Architectures: RxJava Example
42
![Page 43: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/43.jpg)
More Stuff
• Major components are plug-able
• MVCC
• Directed edge graph supports time series and collections
• Chop load testing framework
43
![Page 44: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/44.jpg)
New Open Source Projects Spun Out
• Judo-Chop: annotation based load testing framework
• GuicyFig: combination of Netflix’s Archaius and Google’s Guice
• Modular Cassandra JUnit integration (coming soon!)
44
![Page 45: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/45.jpg)
What’s next?
45
![Page 46: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/46.jpg)
Usergrid 3.0
• V2 API (V3?)
• Subscriptions (standing server-side queries with notifications)
• WebSocket/Server-side Events
• WebHooks
• Data storage management (reporting, limits, etc.)
• Collection management (deletes, copies, etc.)
• Consistency exposed via API(conditional puts, etc.)
• Indexing API
• Queues
• Expanded/pluggable sign-in (more Oauth, LDAP, etc.)
46
![Page 47: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/47.jpg)
How can you get involved?
47
![Page 48: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/48.jpg)
48
http://www.usergrid.org
![Page 49: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/49.jpg)
http://developer.apigee.com
![Page 50: Building a Better BaaS](https://reader033.fdocuments.in/reader033/viewer/2022050808/548127b85806b50b118b4605/html5/thumbnails/50.jpg)
Thank you