choosing a backend for your mobile app? don’t roll the dice!
TRANSCRIPT
studiomagnolia.comCesare Rocchi
Choosing a back end for your mobile app:don’t roll the dice!
_funkyboy
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Needs when choosing a backend
• Features
• Overview of different approaches
Outline
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Who am I?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
UX designer and developer
Saturday, November 30, 13
SWIPE CONFERENCE 2012
upbeat.it
Saturday, November 30, 13
SWIPE CONFERENCE 2012
@_funkyboy
Saturday, November 30, 13
SWIPE CONFERENCE 2012
@funkyboy
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Who are you?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Not apps where mobile is “just a view”
• Apps which are inherently mobile
• From web to app
• App needs a back-end
App Target
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Questions
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Have I to manage it?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• At which level?
• Am I able to do it?
• Have I time to learn?
• Is it worth it?
Have I to manage it?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
What’s the synch model?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Does it match my goals?
• Can I change it if needed?
•What about protocols?
What’s the synch model?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Have I to pay?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Have I to pay?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Who is to pay?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Impact on UX?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Does it break any flow?
• How frequently?
• is it “ok” with that?
Impact on UX?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Lock-in?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• How to migrate data?
• Switching cost?
• Code front-end
• Data compatibility
Lock-in?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• iCloud
• Dropbox
• Custom
• Back-end as a Service (BaaS)
Options
Saturday, November 30, 13
SWIPE CONFERENCE 2012
What is iCloud?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Synchs stuff
Saturday, November 30, 13
SWIPE CONFERENCE 2012
It just works ...
Saturday, November 30, 13
SWIPE CONFERENCE 2012
... when it works.
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Have I to manage it?
•What’s the synch model?
•Who’s to pay?
• Impact on UX?
• Lock-in?
Questions
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Learn the API
• Apple takes care of
• installation
• scalability
Have I to manage it?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
What’s the synch model?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
•Monitors changes
•Works on metadata
• Shreds files
• Supports conflict resolution
Daemon
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Special folder, synched
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Synched when “appropriate”
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Key-value
• Documents
• Core Data
Types of Information
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• The final user
• Your app will use his quota
• 5Gb for free
Who’s to pay?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Impact on UX?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• User expectation
• No control on upload
• “Why isn’t there?”
• Open the app to synch
• User turns off iCloud?
Impact on UX?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Lock-in• Huge
• Only on iOS
• No way to migrate
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Dropbox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• File-based
• Special folder
• Synchronized across devices
• Supports other platforms
Dropbox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Already set up
• installation
• bandwidth
• scalability
Have I to manage it?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Desktop synchronizes continuously
•Mobile apps have to query the backend
• HTTP API
• SDKs for iOS, Android, Ruby, Python
What’s the synch model?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• No conflict resolution (revision #)
• Data serialization is up to you
• No file shredding
What’s the synch model?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• The final user
• Your app will use his disk quota
• 2 Gb for free
Who’s to pay?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Authentication the first time
• User might modify files
• Control on the upload
Impact on UX?
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Lock-in• None
• Each user owns his data
• Personal/team usage
• ... but nothing more
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• box.net
• sugarsync.com
• google drive
• amazon S3
Similar
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Custom
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Saturday, November 30, 13
SWIPE CONFERENCE 2012
IaaS PaaS SaaS
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Data
• Application
IaaS PaaS SaaS• Data
• Application
• Runtime
•Middleware
• OS
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Data
• Application
IaaS PaaS SaaS• Data
• Application
• Runtime
•Middleware
• OS
AWS, Rackspace, ... Heroku, Appfog, ... BaasBox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Data
• Application
• Data
• Application
• Runtime
•Middleware
• OS
IaaS PaaS
AWS, Rackspace, ... Heroku, Appfog, ...
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Data
• Application
PaaS
Saturday, November 30, 13
SWIPE CONFERENCE 2012
•Which language?
•Which DB?
PaaS Questions
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Heroku
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Ruby
• Python
• Java
• Scala
• Closure
• Node.js
Languages
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Postgres
•MySQL (via addon)
•MongoDB (via addon)
DBs
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Essentially a process
•Web
•Worker
• # of dynos + db profile + addons = backend cost
Dyno
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Data
• Application
IaaS PaaS• OS
•Middleware
• Runtime
• Data
• Application
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• OS
•Middleware
• Runtime
• Data
• Application
IaaS
Saturday, November 30, 13
SWIPE CONFERENCE 2012
•Which OS?
•Which language?
•Which DB?
• How many machines?
Questions
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Amazon Web Services
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• CDN
• Storage
• Networking
• DBs
• Services: email, queue managers
• Con: cost estimation
Amazon Web Services
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Buy a server
• pick the hardware
• install OS
• rent space/bandwidth in a farm
Good old way
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Server side frameworks
Saturday, November 30, 13
SWIPE CONFERENCE 2012
BaaS
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Backend for mobile apps
• Files, DB, key-value
• API SDK
• Push notifications
• Analytics
BaaS
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• User management
• account creation/verification
• Login with Twitter/Facebook
• ACL
Baas
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Time to market
• Focus on the front end
Baas
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• cloudmine.me
• stackmob.com
• kinvey.com
• parse.com
• sencha.io
Services
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Blood pact
Saturday, November 30, 13
SWIPE CONFERENCE 2012
BaasBox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• No application server
• No database server
• JVM only requirement
• Runs everywhere
BaasBox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• User management
• ACL
• Assets
• Collections
• Push notifications
BaasBox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
• Download
•./start
BaasBox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
BaasBox on CentOS
yum install java-1.7.0-openjdk
scp baasbox-xx.tar.gz user@host:remotepath
cd remotepath
./start
Saturday, November 30, 13
SWIPE CONFERENCE 2012
PizzaBox
BaasBox
Pizzaiolo Clients
Dev
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Asset
curl --form [email protected] --form name=margherita --user admin:admin -H X-BAASBOX-APPCODE:1234567890 http://localhost:9000/admin/asset
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Menu
curl -d "name=menu&meta=[ { "name": "Margherita", "id" : "margherita", "price": 5, "ingredients": "Pizza con pomodoro e mozzarella" }, ... ]" --user admin:admin -H X-BAASBOX-APPCODE:1234567890 http://localhost:9000/admin/asset
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Create ordercurl -d "{ "list": {"margherita": 2,"quattrostagioni": 2}, "user": { "name": "Cesare", "surname": "Rocchi", "address": "Via delle vie 12, Roma", ... }, "time": "2013-01-02Z14:21", "total": 12.5, }"
-H X-BAASBOX-APPCODE:1234567890 --user cesare:cesare http://localhost:9000/document/orders
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Now we are working on• Service
• Business analytics
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Contacts• http://www.baasbox.com
• twitter.com/baasbox
• facebook.com/baasbox
• github.com/baasbox
Saturday, November 30, 13
SWIPE CONFERENCE 2012
Saturday, November 30, 13