Slide 1

Slide 1 text

studiomagnolia.com Cesare Rocchi Choosing a backend for your mobile application _funkyboy Tuesday, September 11, 12

Slide 2

Slide 2 text

SWIPE CONFERENCE 2012 Outline •Needs when choosing a backend •Features •Overview of different approaches Tuesday, September 11, 12

Slide 3

Slide 3 text

SWIPE CONFERENCE 2012 Who am I? Tuesday, September 11, 12

Slide 4

Slide 4 text

SWIPE CONFERENCE 2012 UX designer and developer Tuesday, September 11, 12

Slide 5

Slide 5 text

SWIPE CONFERENCE 2012 mnml Tuesday, September 11, 12

Slide 6

Slide 6 text

SWIPE CONFERENCE 2012 < is > Tuesday, September 11, 12

Slide 7

Slide 7 text

SWIPE CONFERENCE 2012 execution matters Tuesday, September 11, 12

Slide 8

Slide 8 text

SWIPE CONFERENCE 2012 lean approach Tuesday, September 11, 12

Slide 9

Slide 9 text

SWIPE CONFERENCE 2012 Who are you? Tuesday, September 11, 12

Slide 10

Slide 10 text

SWIPE CONFERENCE 2012 Quick version Tuesday, September 11, 12

Slide 11

Slide 11 text

SWIPE CONFERENCE 2012 It’s complicated Tuesday, September 11, 12

Slide 12

Slide 12 text

SWIPE CONFERENCE 2012 Thank you! Tuesday, September 11, 12

Slide 13

Slide 13 text

SWIPE CONFERENCE 2012 •twitter.com/_funkyboy •app.net/funkyboy •[email protected] •http://studiomagnolia.com Tuesday, September 11, 12

Slide 14

Slide 14 text

SWIPE CONFERENCE 2012 App Target •Not apps where mobile is “just a view” •Apps which are inherently mobile •Personal usage •Backup or synchronization Tuesday, September 11, 12

Slide 15

Slide 15 text

SWIPE CONFERENCE 2012 Examples Tuesday, September 11, 12

Slide 16

Slide 16 text

SWIPE CONFERENCE 2012 dayoneapp.com Tuesday, September 11, 12

Slide 17

Slide 17 text

SWIPE CONFERENCE 2012 culturedcode.com/things Tuesday, September 11, 12

Slide 18

Slide 18 text

SWIPE CONFERENCE 2012 iawriter.com Tuesday, September 11, 12

Slide 19

Slide 19 text

SWIPE CONFERENCE 2012 Questions Tuesday, September 11, 12

Slide 20

Slide 20 text

SWIPE CONFERENCE 2012 Have I to manage it? Tuesday, September 11, 12

Slide 21

Slide 21 text

SWIPE CONFERENCE 2012 Have I to manage it? •At which level? •Am I able to do it? •Have I time to learn? •Is it worth it? Tuesday, September 11, 12

Slide 22

Slide 22 text

SWIPE CONFERENCE 2012 What’s the synch model? Tuesday, September 11, 12

Slide 23

Slide 23 text

SWIPE CONFERENCE 2012 What’s the synch model? •Does it match my goals? •Can I change it if needed? •What about protocols? Tuesday, September 11, 12

Slide 24

Slide 24 text

SWIPE CONFERENCE 2012 Have I to pay? Tuesday, September 11, 12

Slide 25

Slide 25 text

SWIPE CONFERENCE 2012 Have I to pay? Tuesday, September 11, 12

Slide 26

Slide 26 text

SWIPE CONFERENCE 2012 Who is to pay? Tuesday, September 11, 12

Slide 27

Slide 27 text

SWIPE CONFERENCE 2012 Impact on UX? Tuesday, September 11, 12

Slide 28

Slide 28 text

SWIPE CONFERENCE 2012 Impact on UX? •Does it break any flow? •How frequently? •is it “ok” with that? Tuesday, September 11, 12

Slide 29

Slide 29 text

SWIPE CONFERENCE 2012 Security? Tuesday, September 11, 12

Slide 30

Slide 30 text

SWIPE CONFERENCE 2012 Security? •How data are transferred? •Is encryption implemented? Tuesday, September 11, 12

Slide 31

Slide 31 text

SWIPE CONFERENCE 2012 Options •iCloud •Dropbox •Parse & co. •Custom Tuesday, September 11, 12

Slide 32

Slide 32 text

SWIPE CONFERENCE 2012 What is iCloud? Tuesday, September 11, 12

Slide 33

Slide 33 text

SWIPE CONFERENCE 2012 6028 Startown Rd, Maiden, NC Tuesday, September 11, 12

Slide 34

Slide 34 text

SWIPE CONFERENCE 2012 Stores and synchs stuff Tuesday, September 11, 12

Slide 35

Slide 35 text

SWIPE CONFERENCE 2012 It just works ... Tuesday, September 11, 12

Slide 36

Slide 36 text

SWIPE CONFERENCE 2012 ... when it works. Tuesday, September 11, 12

Slide 37

Slide 37 text

SWIPE CONFERENCE 2012 Tuesday, September 11, 12

Slide 38

Slide 38 text

SWIPE CONFERENCE 2012 Tuesday, September 11, 12

Slide 39

Slide 39 text

SWIPE CONFERENCE 2012 seamlessness can be a limit Tuesday, September 11, 12

Slide 40

Slide 40 text

SWIPE CONFERENCE 2012 Questions •Have I to manage it? •What’s the synch model? •Who’s to pay? •Impact on UX? •Security? Tuesday, September 11, 12

Slide 41

Slide 41 text

SWIPE CONFERENCE 2012 Have I to manage it? •Learn the API •Apple takes care of •installation •scalability •security Tuesday, September 11, 12

Slide 42

Slide 42 text

SWIPE CONFERENCE 2012 What’s the synch model? Tuesday, September 11, 12

Slide 43

Slide 43 text

SWIPE CONFERENCE 2012 Daemon •Monitors changes •Works on metadata •Shreds files •Supports conflict resolution Tuesday, September 11, 12

Slide 44

Slide 44 text

SWIPE CONFERENCE 2012 Special folder, synched Tuesday, September 11, 12

Slide 45

Slide 45 text

SWIPE CONFERENCE 2012 Synched when “appropriate” Tuesday, September 11, 12

Slide 46

Slide 46 text

SWIPE CONFERENCE 2012 Appropriate •Which OS? •Which connection? •Battery status? Tuesday, September 11, 12

Slide 47

Slide 47 text

SWIPE CONFERENCE 2012 Types of Information •Key-value •Documents •CoreData Tuesday, September 11, 12

Slide 48

Slide 48 text

SWIPE CONFERENCE 2012 Who’s to pay? •The final user •Your app will use his quota •5Gb for free Tuesday, September 11, 12

Slide 49

Slide 49 text

SWIPE CONFERENCE 2012 Impact on UX? Tuesday, September 11, 12

Slide 50

Slide 50 text

SWIPE CONFERENCE 2012 Impact on UX? •User expectation •No control on upload •“Why isn’t there?” •Open the app to synch •User turns off iCloud? Tuesday, September 11, 12

Slide 51

Slide 51 text

SWIPE CONFERENCE 2012 Security http://support.apple.com/kb/HT4865?viewlocale=en_US&locale=en_US Tuesday, September 11, 12

Slide 52

Slide 52 text

SWIPE CONFERENCE 2012 Security •Using the same API •Mostly safe •But ... Tuesday, September 11, 12

Slide 53

Slide 53 text

SWIPE CONFERENCE 2012 Security •Using the same API •Mostly safe •But ... Tuesday, September 11, 12

Slide 54

Slide 54 text

SWIPE CONFERENCE 2012 Notes •> iOS5 “Documents” folder is backed up •You can prevent files from being backed up •App might be rejected https://developer.apple.com/library/ios/#qa/qa1719/_index.html Tuesday, September 11, 12

Slide 55

Slide 55 text

SWIPE CONFERENCE 2012 Dropbox Tuesday, September 11, 12

Slide 56

Slide 56 text

SWIPE CONFERENCE 2012 Dropbox •File-based •Special folder •Synchronized across devices •Supports other platforms Tuesday, September 11, 12

Slide 57

Slide 57 text

SWIPE CONFERENCE 2012 Have I to manage it? •Already set up •installation •bandwidth •scalability Tuesday, September 11, 12

Slide 58

Slide 58 text

SWIPE CONFERENCE 2012 What’s the synch model? •Desktop synchronizes continuously •Mobile apps have to query the backend •HTTP API •SDKs for iOS, Android, Ruby, Python Tuesday, September 11, 12

Slide 59

Slide 59 text

SWIPE CONFERENCE 2012 What’s the synch model? •No conflict resolution (revision #) •Data serialization is up to you •No file shredding Tuesday, September 11, 12

Slide 60

Slide 60 text

SWIPE CONFERENCE 2012 Who’s to pay? •The final user •Your app will use his disk quota •2 Gb for free Tuesday, September 11, 12

Slide 61

Slide 61 text

SWIPE CONFERENCE 2012 Impact on UX? •Authentication the first time •User might modify files •Control on the upload Tuesday, September 11, 12

Slide 62

Slide 62 text

SWIPE CONFERENCE 2012 Security https://www.dropbox.com/help/27/en Tuesday, September 11, 12

Slide 63

Slide 63 text

SWIPE CONFERENCE 2012 Security •Https required •3rd party apps are “sandboxed” •Apps are reviewed Tuesday, September 11, 12

Slide 64

Slide 64 text

SWIPE CONFERENCE 2012 Similar •box.net •sugarsync.com •google drive •amazon S3 Tuesday, September 11, 12

Slide 65

Slide 65 text

SWIPE CONFERENCE 2012 Parse Tuesday, September 11, 12

Slide 66

Slide 66 text

SWIPE CONFERENCE 2012 Parse •Backend for mobile apps •Files, key-value •API for iOS, Android, Javascript and REST •Push notifications Tuesday, September 11, 12

Slide 67

Slide 67 text

SWIPE CONFERENCE 2012 Parse •User management •account creation/verification •Login with Twitter/Facebook •ACL Tuesday, September 11, 12

Slide 68

Slide 68 text

SWIPE CONFERENCE 2012 Have I to manage it? •Just learn the API •Parse takes care of •Installation •Bandwidth •Scalability Tuesday, September 11, 12

Slide 69

Slide 69 text

SWIPE CONFERENCE 2012 What’s the synch model? •ORM approach on steroids •No need to serialize/deserialize Tuesday, September 11, 12

Slide 70

Slide 70 text

SWIPE CONFERENCE 2012 steroids? Tuesday, September 11, 12

Slide 71

Slide 71 text

SWIPE CONFERENCE 2012 PFObject *note = [PFObject objectWithClassName:@"Note"]; [note setObject:@"Ciao" forKey:@"title"]; [note setObject:@"Note on Parse" forKey:@"content"]; [note save]; //[note saveInBackground]; //[note saveInBackgroundWithBlock:^( ){ }]; //[note saveEventually]; <- steroids Tuesday, September 11, 12

Slide 72

Slide 72 text

SWIPE CONFERENCE 2012 PFObject *note = [PFObject objectWithClassName:@"Note"]; [note setObject:@"Ciao" forKey:@"title"]; [note setObject:@"Note on parse" forKey:@"content"]; PFObject *myTag = [PFObject objectWithClassName:@"Tag"]; [myTag setObject:@"important" forKey:@"tagName"]; // Add a relation [note setObject:myTag forKey:@"tag"]; // Saves both [note saveInBackground]; Tuesday, September 11, 12

Slide 73

Slide 73 text

SWIPE CONFERENCE 2012 Who’s to pay? •You •Pay as you use •Limit of calls/mo Tuesday, September 11, 12

Slide 74

Slide 74 text

SWIPE CONFERENCE 2012 Who’s to pay? •You •Pay as you use •Limit of calls/mo Tuesday, September 11, 12

Slide 75

Slide 75 text

SWIPE CONFERENCE 2012 Security •Uses SSL to transmit •ACL is up to you •DBs are snapshotted every 30min •You own data Tuesday, September 11, 12

Slide 76

Slide 76 text

SWIPE CONFERENCE 2012 Similar services •cloudmine.me •stackmob.com •kinvey.com •buddy.com Tuesday, September 11, 12

Slide 77

Slide 77 text

SWIPE CONFERENCE 2012 Custom Tuesday, September 11, 12

Slide 78

Slide 78 text

SWIPE CONFERENCE 2012 Tuesday, September 11, 12

Slide 79

Slide 79 text

SWIPE CONFERENCE 2012 IaaS PaaS SaaS Tuesday, September 11, 12

Slide 80

Slide 80 text

SWIPE CONFERENCE 2012 •Data •Application •Runtime •Middleware •OS •Data •Application IaaS PaaS SaaS Tuesday, September 11, 12

Slide 81

Slide 81 text

SWIPE CONFERENCE 2012 •Data •Application IaaS PaaS SaaS •Data •Application •Runtime •Middleware •OS Tuesday, September 11, 12

Slide 82

Slide 82 text

SWIPE CONFERENCE 2012 •Data •Application IaaS PaaS •Data •Application •Runtime •Middleware •OS Tuesday, September 11, 12

Slide 83

Slide 83 text

SWIPE CONFERENCE 2012 •Data •Application PaaS Tuesday, September 11, 12

Slide 84

Slide 84 text

SWIPE CONFERENCE 2012 PaaS Questions •Which language? •Which DB? Tuesday, September 11, 12

Slide 85

Slide 85 text

SWIPE CONFERENCE 2012 Heroku Tuesday, September 11, 12

Slide 86

Slide 86 text

SWIPE CONFERENCE 2012 Languages •Ruby •Python •Java •Scala •Closure •Node.js Tuesday, September 11, 12

Slide 87

Slide 87 text

SWIPE CONFERENCE 2012 DBs •Postgres •MySQL (via addon) •MongoDB (via addon) Tuesday, September 11, 12

Slide 88

Slide 88 text

SWIPE CONFERENCE 2012 Dyno •Essentially a process •Web •Worker •# of dynos + db profile + addons = backend cost Tuesday, September 11, 12

Slide 89

Slide 89 text

SWIPE CONFERENCE 2012 •OS •Middleware •Runtime •Data •Application •Data •Application IaaS PaaS Tuesday, September 11, 12

Slide 90

Slide 90 text

SWIPE CONFERENCE 2012 •OS •Middleware •Runtime •Data •Application IaaS Tuesday, September 11, 12

Slide 91

Slide 91 text

SWIPE CONFERENCE 2012 Questions •Which OS? •Which language? •Which DB? •How many machines? Tuesday, September 11, 12

Slide 92

Slide 92 text

SWIPE CONFERENCE 2012 Amazon Web Services Tuesday, September 11, 12

Slide 93

Slide 93 text

SWIPE CONFERENCE 2012 Amazon Web Services •CDN •Storage •Networking •DBs •Services: email, queue managers Tuesday, September 11, 12

Slide 94

Slide 94 text

SWIPE CONFERENCE 2012 Good old way •Buy a server •pick the hardware •install OS •rent space/bandwidth in a farm Tuesday, September 11, 12

Slide 95

Slide 95 text

SWIPE CONFERENCE 2012 Server side frameworks Tuesday, September 11, 12

Slide 96

Slide 96 text

SWIPE CONFERENCE 2012 Ruby •http://rubyonrails.org •http://www.sinatrarb.com •http://www.padrinorb.com Tuesday, September 11, 12

Slide 97

Slide 97 text

SWIPE CONFERENCE 2012 Python •https://www.djangoproject.com •http://www.pylonsproject.org •http://flask.pocoo.org Tuesday, September 11, 12

Slide 98

Slide 98 text

SWIPE CONFERENCE 2012 Node.js •http://expressjs.com •http://geddyjs.org •http://flatironjs.org •http://railwayjs.com •http://towerjs.org Tuesday, September 11, 12

Slide 99

Slide 99 text

SWIPE CONFERENCE 2012 ORM •ActiveRecord •DataMapper •Sequel •SQLAlchemy Tuesday, September 11, 12

Slide 100

Slide 100 text

SWIPE CONFERENCE 2012 Client side frameworks Tuesday, September 11, 12

Slide 101

Slide 101 text

SWIPE CONFERENCE 2012 Networking •AFNetworking •MKNetworkKit •RestKit •DataKit Tuesday, September 11, 12

Slide 102

Slide 102 text

SWIPE CONFERENCE 2012 To have a cake ... Tuesday, September 11, 12

Slide 103

Slide 103 text

SWIPE CONFERENCE 2012 Use a box mix •Choose between flavors •Add basic ingredients •Bake Tuesday, September 11, 12

Slide 104

Slide 104 text

SWIPE CONFERENCE 2012 Do it from scratch •Choose all the elements •Preparation •Bake Tuesday, September 11, 12

Slide 105

Slide 105 text

SWIPE CONFERENCE 2012 In conclusion ... Tuesday, September 11, 12

Slide 106

Slide 106 text

SWIPE CONFERENCE 2012 “You can’t always get what you want but if you try sometime, you just might find ...” Tuesday, September 11, 12

Slide 107

Slide 107 text

SWIPE CONFERENCE 2012 Rolling Stones “You can’t always get what you want but if you try sometime, you just might find ...” Tuesday, September 11, 12

Slide 108

Slide 108 text

SWIPE CONFERENCE 2012 •twitter.com/_funkyboy •app.net/funkyboy •http://studiomagnolia.com •http://www.icloudfordevelopers.com Tuesday, September 11, 12