Transcript
Page 1: Cloud-powered Cross-platform Mobile Apps on AWS

Cloud-powered Cross-platformMobile Apps on AWSDanilo Poccia ‒ AWS Technical Evangelist

@danilop

Page 2: Cloud-powered Cross-platform Mobile Apps on AWS

How to build a mobile app today?

Page 3: Cloud-powered Cross-platform Mobile Apps on AWS

Authenticate users

Authorize access

Analyze User Behavior

Store and share media

Synchronize data

Deliver media

Store shared data

Stream real-time dataTrack Retention

Send push notifications

Manage users and identity providers

Securely access cloud resources

Sync user prefs across devices

Track active users, engagement

Manage funnels, Campaign performances

Store user-generated photos Media and share them

Automatically detect mobile devices Deliver content quickly globally

Bring users back to your app by sending messages reliably

Store and query fast NoSQL data across users and devices

Collect real-time clickstream logs and take actions quickly

Your Mobile

App

Page 4: Cloud-powered Cross-platform Mobile Apps on AWS

Authenticate users

Authorize access

Analyze User Behavior

Store and share media

Synchronize data

AWS Mobile SDK

Amazon Mobile Analytics

Deliver media

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker)

Amazon S3 Transfer Manager

Amazon CloudFront (Device Detection)

Store shared dataAmazon DynamoDB (Object Mapper)

Stream real-time dataAmazon Kinesis (Recorder)

Track RetentionAmazon Mobile Analytics

Send push notificationsAmazon SNS Mobile Push

Your Mobile

App

Page 5: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push

Kinesis Recorder DynamoDB Mapper S3 Transfer Mgr SQS Client SES Client

AWS Global Infrastructure (Regions, Availability Zones, Edge Locations)

Core Building Block Services

Mobile Optimized Connectors

Mobile Optimized Services

Your Mobile App, Game or Device App

AWS Mobile SDK, API Endpoints, Management Console

Compute Storage Networking Analytics Databases

Integrated SDK

AWS Mobile Services

AWS Lambda

Lambda Functions

λ λ λλ

Page 6: Cloud-powered Cross-platform Mobile Apps on AWS

Cross-platform, Optimized for MobileUser identity & data synchronization service

Store any NoSQL data and also map mobile OS specific objects to DynamoDB tables

Fast cross-platform Analytics & reporting Service

Powerful Cross-platform Push notification service

Recorder that can handle intermittent network connection

Easily upload, download to S3 and also pause, resume, and cancel these operations

Send email reliably from device

Access distributed buffering and queuing service

Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push

Kinesis Recorder DynamoDB Mapper S3 Transfer Mgr SQS Client SES ClientAWS Lambda

Lambda Functions

λ λ λλNot limited to Mobile.

Run stateless cloud Functions without any Backend servers to Manage or scale

Page 7: Cloud-powered Cross-platform Mobile Apps on AWS

Fully Integrated AWS Mobile SDK• Common authentication mechanism across all

services • Automatically handle intermittent network

connections • Cross-platform Support:

Android, iOS, Fire OS, Unity, Xamarin (beta) • Native SDKs optimized for Mobile OS, for

example, uses the local offline caching architecture

• Reduced memory footprint; Pick and choose the service jars you need

Page 8: Cloud-powered Cross-platform Mobile Apps on AWS

Authenticate users: Amazon Cognito

Page 9: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Cognito

Simplifies Identity and Access Management

Securely access all AWS services from

Mobile device

Cross-device and Cross-platform Sync

Implement security best practices

“Your App data is secure, available offline, and kept in sync between devices”

Synchronize user’s data across devices and

platforms

Manage users as unique identities across identity

providers

Guest Your own Auth

Page 10: Cloud-powered Cross-platform Mobile Apps on AWS

Identity Providers

Unique IdentitiesJoe Anna Bob

Any Device Any Platform

Any AWS Service

Helps implement security best practices Securely access any AWS Service from mobile device. It simplifies the interaction with AWS Identity and Access Management

Support Multiple Login Providers Easily integrate with major login providers for authentication.

Unique Users vs. Devices Manage unique identities. Automatically recognize unique user across devices and platforms.

Amazon Cognito Identity

Mobile Analytics

S3 DynamoDB Kinesis

Page 11: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Cognito for Unauthenticated Identities

Unique Identifier for Your “Things” “Headless” connected devices can also securely access cloud services.

Save Data to the Cloud Save app and device data to the cloud and merge them after login

Guest User Access Securely access AWS resources and leverage app features without the need to create an account or logging in

Visitor Preferences

Cognito Store

Guest

EC2 S3 DynamoDB Kinesis

Page 12: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Cognito Security Architecture

End Users

App with AWS Mobile SDK Access

to AWS Services

Login OAUTH/OpenID Access Token

Cognito ID, Temp

Credentials

Access Token Pool ID

Role ARNs

Cognito ID (Temp

Credentials)

DynamoDB

Developer

Cognito Identity Broker

S3

Mobile Analytics

Cognito Sync Store

AWS Management

Console

Page 13: Cloud-powered Cross-platform Mobile Apps on AWS

Authorize access: Amazon Cognito + AWS IAM + Fine-grained access control

Page 14: Cloud-powered Cross-platform Mobile Apps on AWS

Access Policy for the IAM Role

{ "Effect":"Allow", "Action":["s3:*"], "Resource":"*"} { "Effect": ”Deny", "Action": ["dynamodb:*"], "Resource": "*"}

{ "Effect": "Allow", "Action": [”cognito-sync:*"], "Resource": "*"}

Allow Actions: All S3, Sync store Operations Resource: All resources within these services

Deny Actions: All DDB Operations Resource: All resources

Page 15: Cloud-powered Cross-platform Mobile Apps on AWS

Access Policy Restriction (Policy Variables)

{"Effect": "Allow”,"Action": ["s3:GetObject", "s3:PutObject"],"Resource": ["arn:aws:s3:::myBucket/amazon/snakegame/${cognito-identity.amazonaws.com:sub}"]

}

Allow Actions: S3 Get/Put operations Resource: Only to a specific part of bucket to that identity

Page 16: Cloud-powered Cross-platform Mobile Apps on AWS

Access Policy Restriction (Policy Variables)

{ "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:<AWS_ACCOUNT_ID>:

table/<TABLE_NAME>" ], "Condition": { "ForAllValues:StringEquals":

{"dynamodb:LeadingKeys": ["${cognito-identity.amazonaws.com:sub}"]}

} }

Allow Actions: DynamoDB "Write" ops Resource: Only if your identity is in the hash key

Page 17: Cloud-powered Cross-platform Mobile Apps on AWS

Synchronize data across devices : Amazon Cognito (Sync)

Page 18: Cloud-powered Cross-platform Mobile Apps on AWS

Cognito Cloud Save and Sync

User Data Storage and Sync

Any Platform

iOS/Android/FireOS

Store App Data, Preferences and State Save app and device data to the cloud and merge them after login

Cross-device Cross-OS Sync Sync user data and preferences across devices with one line of code

Work Offline Data always stored in local SQLite DB first. Works seamlessly when intermittent or no connectivity

k/v data

Identity pool

Page 19: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Cognito SyncOffline: The client SDK manages a local SQLite data store to allow the app to work even when connectivity is not available.

Fast: The methods to read and write data only interact with the local SQLite database. Intelligent Sync: The sync method compares the local version of the data to the cloud sync store, pushes up deltas and pulls down new changes. Flexible Conflict resolution: The sync method first reads the changes then writes its local changes to the cloud sync store By default Cognito assumes that the last write wins. Developers can override and implement their own conflict resolution programmatically

Local SQLite Cache

Page 20: Cloud-powered Cross-platform Mobile Apps on AWS

Use case: Game State

Page 21: Cloud-powered Cross-platform Mobile Apps on AWS

Concrete Software builds cross platform mobile games

Concrete Software has been making hit mobile games like Jellyflop and PBA Bowling Challenge since 2003.

With Amazon Cognito, We can build games much faster and provide great user experience

to our customers.

Keith A. Pichelman CEO, Concrete Software

“• Provide a seamless user experience across devices

and platforms to our users. • Store save games in the cloud and synchronize them

across all of a user’s devices without creating or hosting a backend.

The Challenge

The solution• Amazon Cognito helps us securely access our AWS

resources. • Cognito Sync gives us flexibility to save data in the

cloud, and cache it on a user’s devices, without managing any backend infrastructure.

Page 22: Cloud-powered Cross-platform Mobile Apps on AWS

Just Launched: Javascript SyncUnique identity across web and mobile Uniquely identify your user on your website and mobile devices

Sync your profiles across web and mobile Sync user data and preferences across web and devices with one line of code

JS/HTML5 Mobile Applications Data always stored in local SQLite DB first. Works seamlessly when intermittent or no connectivity

Page 23: Cloud-powered Cross-platform Mobile Apps on AWS

Use Case: Unique Identity across the web and mobile

Page 24: Cloud-powered Cross-platform Mobile Apps on AWS

Analyze User Behavior

Store and share media

Deliver media

Store shared data

Stream real-time dataTrack Retention

Send push notifications

Track active users, engagement

Manage funnels, Campaign performances

Store user-generated photos Media and share them

Automatically detect mobile devices Deliver content quickly globally

Bring users back to your app by sending messages reliably

Store and query fast NoSQL data across users and devices

Collect real-time clickstream logs and take actions quickly

Your Mobile

App

Authenticate users

Authorize access

Synchronize dataAmazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker)

Page 25: Cloud-powered Cross-platform Mobile Apps on AWS

Analyze User Behavior: Amazon Mobile Analytics

Page 26: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Mobile Analytics

Scalable and Generous Free Tier

Focus on metrics that matter. Usage reports

available within 60 minutes of receiving data from an

app

Fast

Scale to billions of events per day from millions of

users.

Own Your Data

“Easily collect, visualize and understand your app usage data at scale”

Data collected are not shared, aggregated, or

reused

Page 27: Cloud-powered Cross-platform Mobile Apps on AWS
Page 28: Cloud-powered Cross-platform Mobile Apps on AWS

28Live score VotingPush notifications

Page 29: Cloud-powered Cross-platform Mobile Apps on AWS

AMAZON MOBILE ANALYTICS + REDSHIFTVISUALIZE DATA THAT MATTERS TO YOU

Page 30: Cloud-powered Cross-platform Mobile Apps on AWS

SEGMENTATION BASED ON ACTIVITYWE WANT TO SEE WHICH GROUP USE EACH FUTURE

30

Low activity Medium activity High activity

1-4 days 5-12 days 13-14 days

Page 31: Cloud-powered Cross-platform Mobile Apps on AWS

DEVICESIN FORZA FOOTBALL

31

Page 32: Cloud-powered Cross-platform Mobile Apps on AWS

Store and share media

Deliver media

Store shared data

Stream real-time data

Send push notifications

Store user-generated photos Media and share them

Automatically detect mobile devices Deliver content quickly globally

Bring users back to your app by sending messages reliably

Store and query fast NoSQL data across users and devices

Collect real-time clickstream logs and take actions quickly

Your Mobile

App

Authenticate users

Authorize access

Analyze User Behavior

Synchronize data

Amazon Mobile Analytics

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker)

Track RetentionAmazon Mobile Analytics

Page 33: Cloud-powered Cross-platform Mobile Apps on AWS

Run Stateless Cloud Functions

Page 34: Cloud-powered Cross-platform Mobile Apps on AWS

AWS Lambda

Auto Scaling (Never under or over

provision)

Focus on business logic, not infrastructure. Upload your code; AWS Lambda handles everything else

Zero Administration

Lambda scales the infrastructure as needed to match the event rate and pay as you go

Bring Your Own Code

“Run stateless functions in the cloud and scale without any servers to manage”

Starting with Javacript but later bring your own code, Create threads and processes, run

batch scripts or other executables,

Page 35: Cloud-powered Cross-platform Mobile Apps on AWS

Endless possibilities - not just for mobile

Data Triggers

Stream Processing

Indexing & Synchronization

Server-free Back-end IoT

Page 36: Cloud-powered Cross-platform Mobile Apps on AWS

Store and share media: Amazon S3

Page 37: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon S3 Connector: Transfer Manager

S3 Connector

Multipart upload media (photos, videos, audio) Fault tolerant download (e.g. assets) No backend required Automatic retries Pause, resume, cancel functions Optimized for native OS

Page 38: Cloud-powered Cross-platform Mobile Apps on AWS

Outplay Entertainment – Amazon S3 Connector via AWS Mobile SDK

Outplay Entertainment is mobile-focused game developer on a mission to deliver fun, free and innovative games for

smartphones, tablets, and social networks.

With Amazon S3 connector, we can improve the users experience by

dynamically downloading game assets in the background. No long up-front

delays for our users.

Douglas Hare CEO, Outplay Entertainment

“ • Improved User Experience. Using the Mobile SDK, they can download the game assets in background while the user starts playing the game. No limits on downloading extra assets.

• Dynamic updates. They can update the assets dynamically and avoid AppStore release cycles.

• Unquestioned Scalability. Different assets for multiple screen densities go up to 170 MB+. By storing this data on S3 and directly downloading to the mobile device, they can scale seamlessly.

• Excellent Performance. Highest resolution devices end up downloading about 90MB of extra content.

Page 39: Cloud-powered Cross-platform Mobile Apps on AWS

Store shared data

Stream real-time data

Send push notificationsBring users back to your app by sending messages reliably

Store and query fast NoSQL data across users and devices

Collect real-time clickstream logs and take actions quickly

Your Mobile

App

Authenticate users

Authorize access

Analyze User Behavior

Synchronize data

Amazon Mobile Analytics

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker)

Track RetentionAmazon Mobile Analytics

Store and share media

Deliver media

Amazon S3 Transfer Manager

Amazon CloudFront (Device Detection)

Page 40: Cloud-powered Cross-platform Mobile Apps on AWS

Send Push Notifications: Amazon SNS Mobile Push

Page 41: Cloud-powered Cross-platform Mobile Apps on AWS

Each platform works differently, and push gets even more complex as you scale to support millions of devices.

Cloud App

Platform Services Mobile Apps

Page 42: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon SNS Cross-platform

Mobile Push

Internet

Apple APNS

Google GCM

Amazon ADM

Windows WNS and MPNS

Baidu CP

With Amazon SNS, developers can send push notifications on multiple platforms and reach mobile users around the world

New features:

Message Expiry Time

Message Attributes

Amazon SNS Mobile Push

Android Phones and Tablets

Apple iPhones and iPads

Kindle Fire Devices

Android Phones and Tablets in China

iOS

Windows Desktop and Windows Phone Devices

Page 43: Cloud-powered Cross-platform Mobile Apps on AWS

Mobile push lets our users live life together in the moment, even when they are miles apart.

Founded in San Francisco in 2010

Social networking and messaging designed for close friends and family

Two apps, Three platforms, 20 languages

5M+ DAU worldwide creating billions of monthly impressions

Page 44: Cloud-powered Cross-platform Mobile Apps on AWS

Reliable push at scale takes constant work35 AWS EC2 m3.xlarge instances Home-rolled code based on Tornado

6 Load Balancers

Constantly trying to scale out, both at process level and server level

Fighting to maximize throughput at packets per second level

Never certain how many pushes we were sending or dropping

Page 45: Cloud-powered Cross-platform Mobile Apps on AWS

Now Path Uses SNS Mobile Push

Amazon SNSMobile Push

Page 46: Cloud-powered Cross-platform Mobile Apps on AWS

Store Shared Data: Amazon DynamoDB

Page 47: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon DynamoDB Example @DynamoDBTable(tableName = "Bookstore") public static class Book { private int id; private String isbn, title; private Boolean hardCover;

@DynamoDBHashKey(attributeName = "id") public int getId() { return id; } public void setId(int id) { this.id = id; } @DynamoDBAttribute(attributeName="isbn") public String getIsbn() { return isbn; } ...}

Id isbn Title hardCover1 22-22222 My First Book Yes

2 43-43234 My Favorite Book No

3 55-12345 My New Book Yes

Table: Bookstore

Page 48: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon DynamoDB Example// Build a book objectBook book = new Book(); book.setId(17); book.setIsbn("222-2222222222"); book.setTitle("Some Title"); book.setHardCover(true); // Save book object to dynmaoDBmapper.save(book); // Update item and save object againbook.setTitle("Updated Title"); book.setHardCover(false); mapper.save(book); // Load another bookBook anotherBook = mapper.load(Book.class,7);

Page 49: Cloud-powered Cross-platform Mobile Apps on AWS

Collect real-time click-stream data: Amazon Kinesis Mobile Connector

Page 50: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Kinesis RedshiftS3Kinesis

enabled Apps on EC2

AWS Mobile SDK

Amazon Kinesis Connector for Mobile Apps

For sophisticated User Behavior

Real-time Analysis

Integrated AWS Mobile SDK

Generic batching system that handles intermittent network connection and also optimize

battery utilization

Page 51: Cloud-powered Cross-platform Mobile Apps on AWS

Hardlight (A SEGA Networks Studio) – Amazon Kinesis

Hardlight (SEGA) is known for bringing SEGA’s much loved blue mascot to the mobile domain. AWS Mobile SDK Amazon Kinesis

Sonic Series

Page 52: Cloud-powered Cross-platform Mobile Apps on AWS

Authenticate users

Authorize access

Analyze User Behavior

Store and share media

Synchronize data

AWS Mobile SDK

Amazon Mobile Analytics

Deliver media

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker)

Amazon S3 Transfer Manager

Amazon CloudFront (Device Detection)

Store shared dataAmazon DynamoDB (Object Mapper)

Stream real-time dataAmazon Kinesis (Recorder)

Track RetentionAmazon Mobile Analytics

Send push notificationsAmazon SNS Mobile Push

Your Mobile

App

Page 53: Cloud-powered Cross-platform Mobile Apps on AWS

Demo - Sample App

Put your notes on a map, add a picture, share them

Page 54: Cloud-powered Cross-platform Mobile Apps on AWS

Summary

Page 55: Cloud-powered Cross-platform Mobile Apps on AWS

Authenticate users

Authorize access

Analyze User Behavior

Store and share media

Synchronize data

AWS Mobile SDK

Amazon Mobile Analytics

Deliver media

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito (Identity Broker)

Amazon S3 Transfer Manager

Amazon CloudFront (Device Detection)

Store shared dataAmazon DynamoDB (Object Mapper)

Stream real-time dataAmazon Kinesis (Recorder)

Track RetentionAmazon Mobile Analytics

Send push notificationsAmazon SNS Mobile Push

Your Mobile

App

Page 56: Cloud-powered Cross-platform Mobile Apps on AWS

Key Takeaways

Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push

Kinesis Connector DynamoDB Connector S3 Connector SQS ConnectorSES Connector

AWS Global Infrastructure (10 Regions, Availability Zones, 51 Edge Locations)

Core Building Block Services

Mobile Optimized Connectors

Mobile Optimized Services

Your Mobile App, Game or Device App

AWS Mobile SDK, API Endpoints, Management Console

Compute Storage Networking Analytics Databases

Integrated SDK

Page 57: Cloud-powered Cross-platform Mobile Apps on AWS

Amazon Cognito Amazon Mobile Analytics

Amazon SNS Mobile Push

Free Tier: 1 Million push messages every month

Free Tier (for first 12 months): 1 Million syncs/month + 10GB of storage for Amazon Cognito

Free Tier: 100 Million events every month

Get Started for Free!

http://aws.amazon.com/mobile

Page 58: Cloud-powered Cross-platform Mobile Apps on AWS

@danilop