SlideShare a Scribd company logo
1 of 42
Download to read offline
Usergrid
Open Source Mobile
       Backend on
        Cassandra
Hi I’m
Ed Anuff
API Management
API Analytics
API Tools
Usergrid
Backend-as-a-Service
& Open Source
Mobile and
Rich client apps
App, Cloud, & HTTP
No Web Stack

         Page

       MVC Logic

       Database
Just Apps and APIs

                    User Management!           Datastore!




      Analytics!                                                      Location!




           Social Graph!                                    Activity Streams!




                                  Messaging!
Key Capabilities

A platform not a single app
Flexible data model
Easy to use from any language
Why should Cassandra
developers care about
Usergrid?
Open Source (APLv2)
Built on Hector
Multi-tenant (Virtual Keyspaces)
JSON and full-text indexing
Rich permissions model
REST API
Multi-tenant data for
Apps
Lots of Teams...




 Team     Team     Team
Lots of Apps...


  App      App    App

          Team
And App Users...


          App

         Team
And data and devices


         App

         Team
Multi-tenancy at scale


App   App   App   App   App   App

  Team        Team        Team
Schema     Separate Database Shared Database


              - Scalability     + Scalability
Shared




               + Isolation     - No Isolation
                + Simple       - Complicated
Separate
Schema




              - Scalability      - Scalability
               + Isolation     - No Isolation
           + Not Complicated   - Complicated
CREATE DATABASE



  ALTER TABLE
Sharding SQL is too
much work.
Oracle is too much
money.
What about NoSQL?
Most NoSQL works at
the wrong abstraction
level.
Does Cassandra
provide any more
options?
Sort of
Schema     Separate Keyspace Shared Keyspace
Shared




              Expensive       Interesting
Separate
Schema




               Very
                               Unwieldy
             Expensive
How would Shared
Schema/Shared
Keyspace work?
Users = {
  "4e3c0423-…" : {
    username: "edanuff",
    email: "ed@anuff.com",
    … : …
  },
  "e5d61f2b-…" : {
    username: "jdoe",
    email: "john.doe@gmail.com",
    … : …
  }
}
Users = {
  "4e3c0423-…" : {
    username: "edanuff",
    email: "ed@anuff.com",
    … : …
  },
  "e5d61f2b-…" : {
    username: "jdoe",
    email: "john.doe@gmail.com",
    … : …
  }
}
Conventional Row Keys In Single Keyspace

                 Row UUID
                 Row UUID
                 Row UUID
                 Row UUID
                 Row UUID
                 Row UUID
Multi-tenant Row Keys In Shared Keyspace

      Tenant ID             Row UUID
      Tenant ID             Row UUID
      Tenant ID             Row UUID
      Tenant ID             Row UUID
      Tenant ID             Row UUID
      Tenant ID             Row UUID
“Wonderful, more
things for me to build
myself in the app tier...”
Hold that thought...
Shared Schema/
Shared Keyspace is
“Virtual Keyspaces”
Part of Hector Client
public static <E> Keyspace
 createVirtualKeyspace(
  String keyspace,
  E keyPrefix,
  Serializer<E> kps,
  Cluster cluster);
Hector hides the Tenant Prefixes


               Prepend Tenant UUID




   Hector                            Cassandra


               Remove Tenant UUID
What about indexes?
Hector doesn’t filter results
Don’t add a tenant column
App-tier CF indexes
preferable
What about CQL?
See previous slide for index
limitations
Hector doesn’t currently support
Virtual Keyspaces via CQL
I don’t actually ever use CQL
So what else is in
there?
JSON
Full JSON values, fully
indexed, using Jackson
and stuff from Lucene
Permissions
Fine grained, per user,
built on Shiro
REST
Full REST API, built on
Jersey
Anything else?
Mongo Compatible API
Experimental Mongo
API emulation via Netty
Mongo binary wire
protocol compatible
That’s what
Usergrid is.
Use the ideas
Use the code
Use the cloud
usergrid.com
git.io/usergrid

Thanks!

More Related Content

What's hot

Discover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset APIDiscover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset APIAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Learn Developing REST API in Node.js using LoopBack Framework
Learn Developing REST API  in Node.js using LoopBack FrameworkLearn Developing REST API  in Node.js using LoopBack Framework
Learn Developing REST API in Node.js using LoopBack FrameworkMarudi Subakti
 
Building Mobile Apps With Ionic & Loopback
Building Mobile Apps With Ionic & LoopbackBuilding Mobile Apps With Ionic & Loopback
Building Mobile Apps With Ionic & LoopbackChibuzor Obiora
 
Working with LoopBack Models
Working with LoopBack ModelsWorking with LoopBack Models
Working with LoopBack ModelsRaymond Feng
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Matt Raible
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRaymond Camden
 
Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with SwaggerTony Tam
 
HATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleHATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleApigee | Google Cloud
 
Building a Node.js API backend with LoopBack in 5 Minutes
Building a Node.js API backend with LoopBack in 5 MinutesBuilding a Node.js API backend with LoopBack in 5 Minutes
Building a Node.js API backend with LoopBack in 5 MinutesRaymond Feng
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopJimmy Guerrero
 
Андрей Саксонов «Разработка плагинов для Atlassian JIRA»
Андрей Саксонов «Разработка плагинов для Atlassian JIRA»Андрей Саксонов «Разработка плагинов для Atlassian JIRA»
Андрей Саксонов «Разработка плагинов для Atlassian JIRA»DataArt
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudAtlassian
 
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence EditorSupercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence EditorAtlassian
 
Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...
Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...
Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...Codemotion Tel Aviv
 
What's New with Confluence Connect
What's New with Confluence ConnectWhat's New with Confluence Connect
What's New with Confluence ConnectAtlassian
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API💻 Spencer Schneidenbach
 
Akka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based ApplicationsAkka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based ApplicationsNLJUG
 
Rails as iOS Application Backend
Rails as iOS Application BackendRails as iOS Application Backend
Rails as iOS Application Backendmaximeguilbot
 

What's hot (20)

Discover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset APIDiscover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset API
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Learn Developing REST API in Node.js using LoopBack Framework
Learn Developing REST API  in Node.js using LoopBack FrameworkLearn Developing REST API  in Node.js using LoopBack Framework
Learn Developing REST API in Node.js using LoopBack Framework
 
Building Mobile Apps With Ionic & Loopback
Building Mobile Apps With Ionic & LoopbackBuilding Mobile Apps With Ionic & Loopback
Building Mobile Apps With Ionic & Loopback
 
Working with LoopBack Models
Working with LoopBack ModelsWorking with LoopBack Models
Working with LoopBack Models
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoop
 
Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with Swagger
 
HATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleHATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API Style
 
Building a Node.js API backend with LoopBack in 5 Minutes
Building a Node.js API backend with LoopBack in 5 MinutesBuilding a Node.js API backend with LoopBack in 5 Minutes
Building a Node.js API backend with LoopBack in 5 Minutes
 
Seattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js WorkshopSeattle StrongLoop Node.js Workshop
Seattle StrongLoop Node.js Workshop
 
Андрей Саксонов «Разработка плагинов для Atlassian JIRA»
Андрей Саксонов «Разработка плагинов для Atlassian JIRA»Андрей Саксонов «Разработка плагинов для Atlassian JIRA»
Андрей Саксонов «Разработка плагинов для Atlassian JIRA»
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software Cloud
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
 
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence EditorSupercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence Editor
 
Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...
Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...
Loopback: An Easy and Robust Mobile Backend - Michael Hantler & Aviv Callande...
 
What's New with Confluence Connect
What's New with Confluence ConnectWhat's New with Confluence Connect
What's New with Confluence Connect
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API
 
Akka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based ApplicationsAkka in Practice: Designing Actor-based Applications
Akka in Practice: Designing Actor-based Applications
 
Rails as iOS Application Backend
Rails as iOS Application BackendRails as iOS Application Backend
Rails as iOS Application Backend
 

Similar to Open Source Mobile Backend on Cassandra

Computer Science And Engineering, Amity University, Noida...
Computer Science And Engineering, Amity University, Noida...Computer Science And Engineering, Amity University, Noida...
Computer Science And Engineering, Amity University, Noida...Asia Grover
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformAntonio Peric-Mazar
 
Composable Parallel Processing in Apache Spark and Weld
Composable Parallel Processing in Apache Spark and WeldComposable Parallel Processing in Apache Spark and Weld
Composable Parallel Processing in Apache Spark and WeldDatabricks
 
Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?Roberto Franchini
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar SlidesDuraSpace
 
Ibm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopIbm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopShubhra Kar
 
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....Michele Orselli
 
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....Alessandro Cinelli (cirpo)
 
FOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDBFOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDBArangoDB Database
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformApigee | Google Cloud
 
ElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersBen van Mol
 
The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015rvagg
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Pierre Joye
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011YoungSu Son
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
Docker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&ADocker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&ADocker, Inc.
 
Writing a REST Interconnection Library in Swift
Writing a REST Interconnection Library in SwiftWriting a REST Interconnection Library in Swift
Writing a REST Interconnection Library in SwiftPablo Villar
 
Porting VisualWorks code to Pharo
Porting VisualWorks code to PharoPorting VisualWorks code to Pharo
Porting VisualWorks code to PharoESUG
 
qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...
qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...
qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...Sri Ambati
 

Similar to Open Source Mobile Backend on Cassandra (20)

Computer Science And Engineering, Amity University, Noida...
Computer Science And Engineering, Amity University, Noida...Computer Science And Engineering, Amity University, Noida...
Computer Science And Engineering, Amity University, Noida...
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
Composable Parallel Processing in Apache Spark and Weld
Composable Parallel Processing in Apache Spark and WeldComposable Parallel Processing in Apache Spark and Weld
Composable Parallel Processing in Apache Spark and Weld
 
Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?Where are yours vertexes and what are they talking about?
Where are yours vertexes and what are they talking about?
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
 
Ibm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopIbm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshop
 
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
 
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
BDD - Buzzword Driven Development - Build the next cool app for fun and for.....
 
FOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDBFOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDB
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
 
ElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersElasticSearch for .NET Developers
ElasticSearch for .NET Developers
 
The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
Docker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&ADocker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&A
 
Writing a REST Interconnection Library in Swift
Writing a REST Interconnection Library in SwiftWriting a REST Interconnection Library in Swift
Writing a REST Interconnection Library in Swift
 
NodeJS
NodeJSNodeJS
NodeJS
 
Porting VisualWorks code to Pharo
Porting VisualWorks code to PharoPorting VisualWorks code to Pharo
Porting VisualWorks code to Pharo
 
qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...
qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...
qconsf 2013: Top 10 Performance Gotchas for scaling in-memory Algorithms - Sr...
 

Recently uploaded

Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 

Recently uploaded (20)

Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 

Open Source Mobile Backend on Cassandra

Editor's Notes

  1. \n
  2. Hi, I&amp;#x2019;m Ed Anuff, I do our mobile platform over at Apigee\nI&amp;#x2019;m also part of the Hector project\nI spoke here last year about indexing techniques, some of you may have caught that\n
  3. Quick Apigee plug, we do API management and analytics\nand we also do a backend as a service - Usergrid\nA lot of this stuff is powered by Cassandra, we&amp;#x2019;ve got a few guys from the Hector team at the company and a lot of Java devs using Cassandra for various stuff (yes, we&amp;#x2019;re hiring)\nAs I said, I work on our mobile platform, Usergrid\nIt&apos;s actually something that became part of Apigee at the start of the year,\nbut it&apos;s been under development for a couple of years\n\n
  4. Usergrid is a backend-as-a-service\nYou may have heard that term, I don&apos;t love it, but you don&apos;t always get to name the category\nThe idea is to power mobile apps or web apps via web services, no direct access to DB, all via APIs\nNow, this is not a product pitch, remember everything I talk about today is open source, Apache licensed\nbut I&amp;#x2019;m going to show a couple of slides to talk about how we envisioned this being used\n\n
  5. So, the idea is a backend data platform that you can build apps against,\nmobile apps, rich client apps, apps running devices\nand have all the data on demand via HTTP REST APIs\n\n\n
  6. No monolithic server web stacks, LAMP, Ruby on Rails. etc.\nNo MVC, no sessions, no cookies, no page flows\n\n
  7. Just cool, interactive, responsive apps doing their thing\ngetting the data they need when they need it from the cloud\n\n
  8. So, for us, our priorities in building this are are:\nWe want to run this in the cloud as a service, so it&amp;#x2019;s a platform\nWe want to offer a very flexible data model that we can build things like user management on top of\nWe want to make it very accessible from any language\n
  9. Now, a lot of this is designed to appeal to people doing stuff in Javascript or Objective-C or Android\nalthough we&amp;#x2019;re finding that people using dynamic languages like Ruby or Python like it a lot too\nBut even if you&amp;#x2019;re a Java developer, there&amp;#x2019;s a lot of important stuff here\nIn fact, especially if you&amp;#x2019;re a Java developer, because if you look under the hood, you&amp;#x2019;ll find some really interesting things about doing some complicated stuff in Cassandra\n
  10. So, lets take a look at the important things for Usergrid for you folks\nOpen source - everything I&amp;#x2019;m talking about is on GitHub\nBut, if you&amp;#x2019;re trying to build on Hector, if you want to implement multi-tenancy, work with JSON data, figure out permissions, or use REST, then this might be a good starting point\n
  11. So the main thing I&amp;#x2019;m going to talk about today is the foundation of everything that Usergrid does\nwhat lets us provide it as a service and a way to power lots of apps\n
  12. The idea is a platform service with lots of teams, each with lots of devs\nThink something like the GitHub model\nThis is the basic foundation, lots of software-as-a-service needs this\n
  13. And the idea is that each team can build as many apps as they want\neach app is going to get a dataspace of its own\n
  14. and those apps could have a lot of users, the people who actually interact with the app\nand 10 millions users has to be as easy as ten thousand\n
  15. and every user has a device and a bunch of data \n
  16. So this is the goal\nNow that&amp;#x2019;s a lot of data, and it&amp;#x2019;s &amp;#x201C;big data&amp;#x201D;, but it&amp;#x2019;s also kind of a hard data model\nan inherently relational data model\nso lots of people start with relational DBs\n
  17. Now this is the textbook guide to database multi-tenancy\nLots of pros and cons to each approach with scalability tradeoffs\n
  18. Well, we&amp;#x2019;re not going to do separate databases\nand we&amp;#x2019;re not going to do separate schemas\nI&amp;#x2019;ve been down this road before\n
  19. And even if you get it working, the assumption is that you&amp;#x2019;re going to end up sharding your database\nIf I&amp;#x2019;m Salesforce, I can write a big check to Oracle, but it&amp;#x2019;s still a hell of a lot of work\n
  20. Most of the NoSQL solutions don&amp;#x2019;t help\nthey&amp;#x2019;re still at the sweet spot of &amp;#x201C;fire up a copy of node and mongo and power my app&amp;#x201D;, sort of LAMP reloaded\n
  21. So, is Cassandra any better\nWell, at least it gets rid of the sharding issue, but it&amp;#x2019;s constructs in this area are still pretty heavy\n
  22. Lets look at it for Cassandra\nI want to be clear here, I&amp;#x2019;m not talking about one of those situations where you&amp;#x2019;re saying &amp;#x201C;can I do 10 apps&amp;#x201D; on a cluster. You can, honestly, I&amp;#x2019;ve had issues with unit tests that run out of memory doing that. This is really about unbound scale, meaning, can you honestly with a straight face say, I don&amp;#x2019;t really care how many apps I have on this\nLike if your business guys are saying they want to do a freemium business model or whatever\nOr you&amp;#x2019;re an IT group that wants to run a centralized internal platform as a service and don&amp;#x2019;t want to be running a hundred separate Mongo servers for every team that needs a datastore\nSo that&amp;#x2019;s the lens I&amp;#x2019;m looking at this through\nand when I do that, I realize that there are some limitations here\nKeyspaces are not flyweight nor are CFs in the keyspace, they will add up and use a lot of memory\nI know some people are doing this, doing hosted Cassandra this way, but then again a lot of people are providing shared MySQL hosting using the same mechanisms\n\n\n
  23. \n
  24. So, lets go with a typical set of rows\n
  25. and your key is typically just a UUID\n
  26. And you&amp;#x2019;ll have a bunch of them as rows in your keyspace\n
  27. What we do is just used a single shared keyspace and prefix the rows with a tenant ID.\nThis is how we create the virtual keyspace.\n
  28. \n
  29. So, Cassandra&amp;#x2019;s built in options are probably not great.\nSo, we introduced something into Hector some time back, a feature called Virtual Keyspaces\nThis is in the code, we&amp;#x2019;ve used it in production for a while\n
  30. This is Hector&amp;#x2019;s call for creating a Virtual Keyspace. Once you do this, all normal operations will act on the virtual keyspace.\nNote that &amp;#x201C;createKeyspace&amp;#x201D; and &amp;#x201C;createVirtualKeyspace&amp;#x201D; in Hector don&amp;#x2019;t actually create the Keyspace in Cassandra, they create an access object for operating on the Keyspace\n
  31. The magic here, though, is how we do this behind the scenes in Hector\nSo the app calls Hector and it&amp;#x2019;s basically a 1 line change of code to switch from actual keyspaces to virtual keyspaces\n
  32. So what&amp;#x2019;s the catch\nwell, the first casualty of this is native secondary indexes\nso if you&amp;#x2019;re doing this, Hector currently doesn&amp;#x2019;t filter the results to discard the ones not in the current virtual keyspace\nThat&amp;#x2019;s actually something we should do and will probably get to\nBut the way we did this was to use app-tier indexes, using the CF-based indexes\n
  33. Now, what about CQL?\nWell, Hector doesn&amp;#x2019;t support this yet either\nNow, if you&amp;#x2019;re using the UG code, it doesn&amp;#x2019;t matter, UG has a query language that&amp;#x2019;s a superset of CQL\n
  34. So, that&amp;#x2019;s the multi-tenancy\n
  35. \n
  36. \n
  37. \n
  38. One more thing\n
  39. Surprise!\nThis one is kind of fun, bit of a skunkworks project, but we can actually connect to this thing using the Mongo binary wire protocol and do queries and stuff\n
  40. So, lots of good stuff in here\n
  41. remember, it&amp;#x2019;s all open source, check it out\n
  42. \n