Building a Better BaaS

50
Building the better BaaS Ed Anuff & Nate McCall

description

APIs for cutting edge enterprise apps: Apigee BaaS and Apache Usergrid

Transcript of Building a Better BaaS

Page 1: Building a Better BaaS

Building the better BaaSEd Anuff & Nate McCall

Page 2: Building a Better BaaS

@edanuff @zznate

Page 3: Building a Better BaaS

What’s a BaaS and what’s so special about Usergrid?

Ed AnuffUsergrid Founder, Apigee Product Strategist

3

Page 4: Building a Better BaaS

App, Cloud, and HTTP

4

Page 5: Building a Better BaaS

No Web Stack

5

Page Templates

MVC Logic

Database

Page 6: Building a Better BaaS

Just Apps and APIs

6

Page 7: Building a Better BaaS

Building A Platform

7

Page 8: Building a Better BaaS

Not just an App

8

Page 9: Building a Better BaaS

Developer

App

Page 10: Building a Better BaaS

TeamTeam Team

Page 11: Building a Better BaaS

Team

App App App

Page 12: Building a Better BaaS

App

Team

Page 13: Building a Better BaaS

App

Team

Page 14: Building a Better BaaS

TeamTeam Team

App App App App App App

Page 15: Building a Better BaaS

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

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

How do you use a BaaS?

17

Page 18: Building a Better BaaS

/users

/groups

/users/me/followers

Page 19: Building a Better BaaS

/restaurants/products/car-washes

/<whatever>

Page 20: Building a Better BaaS

POST /devices/<id>

Page 21: Building a Better BaaS

POST /events

{ “category” : “ads”, “counters” : { “ad_clicks” : 5}}

Page 22: Building a Better BaaS

/users/ed/friends/nate

/users/ed/likes/foods/pizza

Page 23: Building a Better BaaS

GET /restaurants?near=37.803, -122.404

Page 24: Building a Better BaaS

GET /restaurants?ql=name contains ‘pizza’ and within 5m of 39.962,-105.114

Page 25: Building a Better BaaS

POST /users/me/activities

{ “title”: “look”, “location”: …}

Page 26: Building a Better BaaS

GET /users/me/feed

[{ “title”: “Ed ate a slice of pizza”, “location”: …}]

Page 27: Building a Better BaaS

postUserActivity(me, activity)

[client postUserActivity: “me”activity: activityObj]

Page 28: Building a Better BaaS

/token?grant_type=...

/auth/facebook?fb_access_token=…

Page 29: Building a Better BaaS

/users?filter=facebook.first_name eq 'john'

Page 30: Building a Better BaaS

/users?ql=name eq 'john' and facebook.education.school.name contains '...'

Page 31: Building a Better BaaS

What’s Usergrid 2.0 all about?

Nate McCallApache Usergrid PPMC & Cassandra MVP

31

Page 32: Building a Better BaaS

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

New Pieces of the Stack

33

RxJava GuicyFigArchaius

Page 34: Building a Better BaaS

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

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

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

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

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

New Architectures: Archaius + Guice = GuicyFig

39

Page 40: Building a Better BaaS

New Architectures: Archaius + Guice = GuicyFig

40

Page 41: Building a Better BaaS

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

New Architectures: RxJava Example

42

Page 43: Building a Better BaaS

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

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

What’s next?

45

Page 46: Building a Better BaaS

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

How can you get involved?

47

Page 48: Building a Better BaaS

48

http://www.usergrid.org

Page 49: Building a Better BaaS

http://developer.apigee.com

Page 50: Building a Better BaaS

Thank you