Backend as a Service: Parse - Moriconi

Post on 12-May-2015

355 views 3 download

description

Slides from Maurizio Moriconi talk @ codemotion roma 2014

Transcript of Backend as a Service: Parse - Moriconi

ROME 11-12 april 2014ROME 11-12 april 2014

Backend as a Service: Parse

maurizio.moriconi@mobilesoft.it

Maurizio Moriconi

ROME 11-12 april 2014 - Maurizio Moriconi

Maurizio Moriconi

2

• CTO @ Mobilesoft

• Mobile Developer

• Co-founder

• Main Developer

http://www.facebook.com/maurizio.moriconi

http://www.linkedin.com/in/bugman

@bugman79

- Maurizio Moriconi

ROME 11-12 april 2014 - Maurizio Moriconi

Develop an app Push Notification

Analytics

User management

Social integration

Shared data

Web Hosting

Database hosting

3

ROME 11-12 april 2014 - Maurizio Moriconi

Challenges

!

• Time • Skill • Scalability • Cost

4

ROME 11-12 april 2014 - Maurizio Moriconi

Backend as a Service (Baas)

• MBaaS (mobile backend as a service) !

• Link application to backend cloud storage • Custom software development kit (SDK) • Custom application programming interfaces (APIs)

!

Global Market • $216.5 million in 2012 • $7.7 billion by 2017

5

ROME 11-12 april 2014 - Maurizio Moriconi

Baas Service

• Custom objects • model, relationships and store/retrieve from central databases

• File storage • images, large documents, association with a custom object

• Geolocation • query object near a certain location

• Users • creation, integration with Facebook/Twitter, ACL for objects

• Push notifications • single way to push many platforms

6

ROME 11-12 april 2014 - Maurizio Moriconi

Some examples

7

ROME 11-12 april 2014 - Maurizio Moriconi

8

ROME 11-12 april 2014 - Maurizio Moriconi

One backend to rule them all

9

ROME 11-12 april 2014 - Maurizio Moriconi

Parse pricing

10

BASIC PRO ENTERPRISE

free $199 per month askRequests

1 Million/monthRequests

15 Million/monthCustom

Pushes 1 Million/month

Pushes 5 Million/month

Custom

File Storage 1 GB

File Storage 10 GB

Custom

App open metrics 1 concurrent background jobs !

2 App collaboratorAdvanced Push Targeting Push Scheduling …

Phone support Enterprise SLA Individual Push opens metrics …

ROME 11-12 april 2014 - Maurizio Moriconi

11

Parse Services

ROME 11-12 april 2014 - Maurizio Moriconi

Parse Core

!

• Parse Dashboard

• Save data in the cloud

• Make your app social

• Run custom app code in the Parse Cloud

• Background jobs

12

ROME 11-12 april 2014 - Maurizio Moriconi

Parse Push

!

• Push for: • iOS, Android, Windows, Windows Phone

• Send notification via: • web console, REST API, client SDKs !!!

• Advanced targeting (PRO, ENTERPRISE)

• Advanced scheduling (PRO, ENTERPRISE)

!

! 13

ROME 11-12 april 2014 - Maurizio Moriconi

Parse Analytics

• Measure App usage

• Optimize Push Campaign

• Track Custom Analytics

• Powerful Dashboard

14

ROME 11-12 april 2014 - Maurizio Moriconi

Let’s start!

15

ROME 11-12 april 2014 - Maurizio Moriconi

1 - Sign up for Parse

16

ROME 11-12 april 2014 - Maurizio Moriconi

2 - Create your first app

17

ROME 11-12 april 2014 - Maurizio Moriconi

3 - Dashboard

18

ROME 11-12 april 2014 - Maurizio Moriconi

Setup SDK on iOS

• Download SDK • Latest version 1.2.18 • Support Xcode (5.0+) iOS 5.0 or higher

19

ROME 11-12 april 2014 - Maurizio Moriconi

Connect you app to Parse

20

ROME 11-12 april 2014 - Maurizio Moriconi

Data Browser

21

ROME 11-12 april 2014 - Maurizio Moriconi

Parse Object

• Contains key-valued pairs of JSON-compatible data

• This data is schema-less • Each Parse Object has a class name !

PFObject in iOS • ParseObject in Android/Windows

22

ROME 11-12 april 2014 - Maurizio Moriconi

Save an object

23

Auto generate Class!!!

ROME 11-12 april 2014 - Maurizio Moriconi

Save an object

24

ROME 11-12 april 2014 - Maurizio Moriconi

Special Class Name

• User • for authentication, log in, sign up and more

• Installation • store push notification subscriptions for each device

• Role • to specify groups of users with shared permissions

• Product • stores your in-app product data

25

ROME 11-12 april 2014 - Maurizio Moriconi

Data Types

26

ROME 11-12 april 2014 - Maurizio Moriconi

Some features

!Saving objects offline

!

!!!!Relational Data

27

ROME 11-12 april 2014 - Maurizio Moriconi

Some features

28

!!!!!!Queries

!

!!!!

ROME 11-12 april 2014 - Maurizio Moriconi

User

• specialized user class called PFUser in iOS • several properties

• username (required) • password (required on signup) • email (optional)

• basic functionality: • sign up • login • email verification

29

ROME 11-12 april 2014 - Maurizio Moriconi

Signing up

30

ROME 11-12 april 2014 - Maurizio Moriconi

Loggin in

31

ROME 11-12 april 2014 - Maurizio Moriconi

PFLogInViewController

• Manage Login via PFLogInViewControllerDelegate !

- (BOOL)logInViewController:(PFLogInViewController *)logInController shouldBeginLogInWithUsername:(NSString *)username password:(NSString *)password; !- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user; !- (void)logInViewController:(PFLogInViewController *)logInController didFailToLogInWithError:(NSError *)error; !- (void)logInViewControllerDidCancelLogIn:(PFLogInViewController *)logInController;

32

ROME 11-12 april 2014 - Maurizio Moriconi

PFSignUpViewController

33

• Manage Sign up via PFSignUpViewControllerDelegate !

- (BOOL)signUpViewController:(PFSignUpViewController *)signUpController shouldBeginSignUp:(NSDictionary *)info; !- (void)signUpViewController:(PFSignUpViewController *)signUpController didSignUpUser:(PFUser *)user; !- (void)signUpViewController:(PFSignUpViewController *)signUpController didFailToSignUpWithError:(NSError *)error; !- (void)signUpViewControllerDidCancelSignUp:(PFSignUpViewController *)signUpController;

ROME 11-12 april 2014 - Maurizio Moriconi

Facebook / Twitter integration

34

ROME 11-12 april 2014 - Maurizio Moriconi

Facebook

• Setup FB application on developer.facebook.com

• Add App ID and App Secret on Parse settings

• Setup application follow https://developers.facebook.com/docs/ios/getting-started

• Adding this line on application:didFinishLaunchingWithOptions

!• Add also:

35

ROME 11-12 april 2014 - Maurizio Moriconi

Facebook// Create the log in view controller PFLogInViewController *logInViewController = [[PFLogInViewController alloc] init]; [logInViewController setFacebookPermissions:[NSArray arrayWithObjects:@"friends_about_me", nil]]; ![logInViewController setFields: PFLogInFieldsTwitter | PFLogInFieldsFacebook | PFLogInFieldsDismissButton];

36

ROME 11-12 april 2014 - Maurizio Moriconi

User

37

ROME 11-12 april 2014 - Maurizio Moriconi

Facebook / Twitter integration

• Login • Sign up • Linking existing PFUser to Twitter/Facebook • Unlinking existing PFUser to Twitter/Facebook • After authentication is possible to use:

• Query Graph on Facebook • Twitter API on Twitter

38

ROME 11-12 april 2014 - Maurizio Moriconi

• A bit of logic that running in the Cloud • Javascript SDK (same for apps) • You don't have to wait for a new release of

your application • Schedule jobs • Cloud Modules for integrate your Parse app

with third-party services and libraries39

ROME 11-12 april 2014 - Maurizio Moriconi

Cloud Code

curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash

40

• Install the command line tool

• Create new project

$ parse new MyCloudCode Email: ninja@gmail.com Password: 1:MyApp Select an App: 1 $ cd MyCloudCode

• A simple function in cloud/main.js

Parse.Cloud.define("hello", function(request, response) { response.success("Hello world!"); });

ROME 11-12 april 2014 - Maurizio Moriconi

Cloud Code

41

$ parse deploy

• Deploy

• Run function on iOS

[PFCloud callFunctionInBackground:@"hello" withParameters:@{} block:^(NSString *result, NSError *error) { if (!error) { // result is @"Hello world!" } }];

• Response

{ "result": "Hello world!" }

ROME 11-12 april 2014 - Maurizio Moriconi

Cloud Code

42

ROME 11-12 april 2014 - Maurizio Moriconi

Web hosting

43

/public

index.html

Cloud Parse PRJ

ROME 11-12 april 2014 - Maurizio Moriconi

and now?

44

Parse Analytics

File storage

Push notifications Data relations

Users ACL

Geopoint

File storage

In-app purchase

Web hosting

Query

Email-verification

ROME 11-12 april 2014 - Maurizio Moriconi

Thank You!

45

Backend as a Service: