Designing &Implementing   a MultiuserApps Platform
Hi I’mEd Anuffapigee
ApigeeAPI ManagementAPI AnalyticsAPI Tools
UsergridBackend-as-a-Service& Open SourceMobile and
App, Cloud, & HTTP
No Web Stack       Page     Templates     MVC Logic     Database
Just Apps and APIs                  User Management!           Datastore!    Analytics!                                   ...
What do wereally want in 2012?
/users/groups/users/me/followers
/restaurants/products/car-washes/<whatever>
POST /devices/<id>
POST /events{ “category” : “ads”, “counters” : {   “ad_clicks” : 5 }}
/users/bieber/friends/s/users/ed/likes/foods/
GET /restaurants?near=37.803, -122.404
GET /restaurants?ql=name contains‘pizza’ and within5m of 39.962,-105.114
POST/users/me/activities{ “title”: “look”, “location”: …}
GET /users/me/feed[{ “title”: “Ed ate aslice of pizza”,“location”: …}]
postUserActivity(me,activity)[clientpostUserActivity:“me” activity:activityObj]
/token?grant_type=.../auth/facebook?fb_access_token=…
/users?filter=facebook.first_neq john
/users?ql=name eqjohn andfacebook.education.school.namecontains ...
That’s whatUsergrid is.
Building aPush-ButtonPlatform
Not about singleapps        Page      Templates      MVC Logic      Database
Not about singleapps        Page      Templates      MVC Logic      Database
Lots of Teams...Team   Team    Team
Lots of Apps...App     App       App        Team
And App Users...       App       Team
And data anddevices       App       Team
It’s really hard tobuild for this...
It’s about seamlessdata sharding...
and designing forunpredicable APItraffic...
and it’s about doinga lot of hard stuff soother people don’thave to.
So, what’s inside?The usual stuff...
JVMJavaSpringJerseyJacksonCassandra
JVMJavaSpringJerseyJacksonCassandra ???
Cassandra shouldbe the only one thatgives you pause
What else could Ihave used?MySQL?Oracle?MongoDB?
Not so hot for this...App   App   App   App   App   App  Team        Team        Team
Schema     Separate Database Shared DatabaseShared                Lame             HmmSeparateSchema                 No   ...
CREATEDATABASE ALTER TABLE
Sharding SQL is toomuch work.Oracle is too muchmoney.
Most NoSQL worksat the wrongabstraction level.
So Cassandra...
Cassandra sucks.But you can teach itgreat tricks.
Everything you hateabout CassandraI love
Build your ownindexes!
Build your ownquery system!
Build your ownstorage format!
Build your ownmulti-tenancystrategy!
Time to assemble:2 months
Times I’ve regretteddoing this:0
What else sucked?
1. Consistency2. API Design3. Permissions4. Built-In Logic5. Operations
1. ConsistencyZooKeeper andAmazonWhitepapers won’tsave you
2. API Design
“Surrender to aHigher Power(whatever it mightbe)”All hail Roy Fielding
REST drove thedesign
REST drove thescalability
REST drove thescalabilityAccess Model
REST drove thescalabilityAccess ModelQuery Model
REST drove thescalabilityAccess ModelQuery ModelDenormalization Strategy
3. Permissions
3. PermissionsOAuthTokenManagementPer-requestOverhead
4. Built-in Logic
4. Built-in LogicSign-in FlowsActivity StreamsUser/Group Management
5. Operations
Keep it simple andelastic                            Tomcat                           Tomcat                         Tomca...
Runningwith it.
Projects havea will of their own
Counters
Logs
Admin UI
HyperMedia API
SenchajQueryBackbonePhoneGapTiggzi
What do wewant in 2013?
Take it for grantedand run with it.
Use the ideasUse the codeUse the cloud
usergrid.comgit.io/usergrid
Mobile Client
Mobile Experience
API
Web Version
Building apps in2005was very different
LAMPis not multi-tenant
LAMPis not multi-server
LAMPdoes too little
LAMPdoes too much
Rails, Django, Nodedon’t change theoverall architecture
NOSQL works at thewrong abstractionlevel.
PaaS is still thesame thing(to some extent)
Designing and Implementing a Multiuser Apps Platform
Upcoming SlideShare
Loading in …5
×

Designing and Implementing a Multiuser Apps Platform

2,248 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,248
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
78
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Designing and Implementing a Multiuser Apps Platform

  1. 1. Designing &Implementing a MultiuserApps Platform
  2. 2. Hi I’mEd Anuffapigee
  3. 3. ApigeeAPI ManagementAPI AnalyticsAPI Tools
  4. 4. UsergridBackend-as-a-Service& Open SourceMobile and
  5. 5. App, Cloud, & HTTP
  6. 6. No Web Stack Page Templates MVC Logic Database
  7. 7. Just Apps and APIs User Management! Datastore! Analytics! Location! Social Graph! Activity Streams! Messaging!
  8. 8. What do wereally want in 2012?
  9. 9. /users/groups/users/me/followers
  10. 10. /restaurants/products/car-washes/<whatever>
  11. 11. POST /devices/<id>
  12. 12. POST /events{ “category” : “ads”, “counters” : { “ad_clicks” : 5 }}
  13. 13. /users/bieber/friends/s/users/ed/likes/foods/
  14. 14. GET /restaurants?near=37.803, -122.404
  15. 15. GET /restaurants?ql=name contains‘pizza’ and within5m of 39.962,-105.114
  16. 16. POST/users/me/activities{ “title”: “look”, “location”: …}
  17. 17. GET /users/me/feed[{ “title”: “Ed ate aslice of pizza”,“location”: …}]
  18. 18. postUserActivity(me,activity)[clientpostUserActivity:“me” activity:activityObj]
  19. 19. /token?grant_type=.../auth/facebook?fb_access_token=…
  20. 20. /users?filter=facebook.first_neq john
  21. 21. /users?ql=name eqjohn andfacebook.education.school.namecontains ...
  22. 22. That’s whatUsergrid is.
  23. 23. Building aPush-ButtonPlatform
  24. 24. Not about singleapps Page Templates MVC Logic Database
  25. 25. Not about singleapps Page Templates MVC Logic Database
  26. 26. Lots of Teams...Team Team Team
  27. 27. Lots of Apps...App App App Team
  28. 28. And App Users... App Team
  29. 29. And data anddevices App Team
  30. 30. It’s really hard tobuild for this...
  31. 31. It’s about seamlessdata sharding...
  32. 32. and designing forunpredicable APItraffic...
  33. 33. and it’s about doinga lot of hard stuff soother people don’thave to.
  34. 34. So, what’s inside?The usual stuff...
  35. 35. JVMJavaSpringJerseyJacksonCassandra
  36. 36. JVMJavaSpringJerseyJacksonCassandra ???
  37. 37. Cassandra shouldbe the only one thatgives you pause
  38. 38. What else could Ihave used?MySQL?Oracle?MongoDB?
  39. 39. Not so hot for this...App App App App App App Team Team Team
  40. 40. Schema Separate Database Shared DatabaseShared Lame HmmSeparateSchema No Ugh
  41. 41. CREATEDATABASE ALTER TABLE
  42. 42. Sharding SQL is toomuch work.Oracle is too muchmoney.
  43. 43. Most NoSQL worksat the wrongabstraction level.
  44. 44. So Cassandra...
  45. 45. Cassandra sucks.But you can teach itgreat tricks.
  46. 46. Everything you hateabout CassandraI love
  47. 47. Build your ownindexes!
  48. 48. Build your ownquery system!
  49. 49. Build your ownstorage format!
  50. 50. Build your ownmulti-tenancystrategy!
  51. 51. Time to assemble:2 months
  52. 52. Times I’ve regretteddoing this:0
  53. 53. What else sucked?
  54. 54. 1. Consistency2. API Design3. Permissions4. Built-In Logic5. Operations
  55. 55. 1. ConsistencyZooKeeper andAmazonWhitepapers won’tsave you
  56. 56. 2. API Design
  57. 57. “Surrender to aHigher Power(whatever it mightbe)”All hail Roy Fielding
  58. 58. REST drove thedesign
  59. 59. REST drove thescalability
  60. 60. REST drove thescalabilityAccess Model
  61. 61. REST drove thescalabilityAccess ModelQuery Model
  62. 62. REST drove thescalabilityAccess ModelQuery ModelDenormalization Strategy
  63. 63. 3. Permissions
  64. 64. 3. PermissionsOAuthTokenManagementPer-requestOverhead
  65. 65. 4. Built-in Logic
  66. 66. 4. Built-in LogicSign-in FlowsActivity StreamsUser/Group Management
  67. 67. 5. Operations
  68. 68. Keep it simple andelastic Tomcat Tomcat Tomcat TomcatTomcat Tomcat Tomcat Cassandra Cluster
  69. 69. Runningwith it.
  70. 70. Projects havea will of their own
  71. 71. Counters
  72. 72. Logs
  73. 73. Admin UI
  74. 74. HyperMedia API
  75. 75. SenchajQueryBackbonePhoneGapTiggzi
  76. 76. What do wewant in 2013?
  77. 77. Take it for grantedand run with it.
  78. 78. Use the ideasUse the codeUse the cloud
  79. 79. usergrid.comgit.io/usergrid
  80. 80. Mobile Client
  81. 81. Mobile Experience
  82. 82. API
  83. 83. Web Version
  84. 84. Building apps in2005was very different
  85. 85. LAMPis not multi-tenant
  86. 86. LAMPis not multi-server
  87. 87. LAMPdoes too little
  88. 88. LAMPdoes too much
  89. 89. Rails, Django, Nodedon’t change theoverall architecture
  90. 90. NOSQL works at thewrong abstractionlevel.
  91. 91. PaaS is still thesame thing(to some extent)

×