From the Amazon Web Services Singapore & Malaysia Summits 2015 Track 1 Breakout, 'Build Your Mobile App Faster with AWS Mobile Services' - Presented by Dhruv Parpia – Principal Solutions Architect, Amazon Web Services
3. We asked two questions to our mobile customers:
What makes your mobile apps unique?
Where are you spending most of your time?
4. We asked two questions to our mobile customers:
What makes your mobile apps unique?
Where are you spending most of your time?
5. What Our Mobile Customers Have Told Us
Problems developers face today
Fragmentation across platforms
Sync scalability is extremely hard
Expensive to manage and operate
Distracts them from building core UX
Managing unique user identities is difficult
“Table stakes” for every app
Undifferentiated Heavy Lifting
Developer’s Mobile App Code
User Identity Mgmt. and Auth
User Data Synchronization
Asynchronous Communication
Active Device Analytics
User Behavior Analytics
Engagement Analytics
Push Notifications
Event Triggers
Platform agnostic Mobile Backend
Data Validation and Transformation
File and Media Storage
Shared Database Storage
Data Collection
And More….
AWS Cloud Infrastructure
6. What Our Mobile Customers Have Told Us
Developer’s Mobile App Code
User Identity Mgmt. and Auth
User Data Synchronization
Asynchronous Communication
Active Device Analytics
User Behavior Analytics
Engagement Analytics
Push Notifications
Event Triggers
Platform agnostic Mobile Backend
Data Validation and Transformation
File and Media Storage
Shared Database Storage
Data Collection
And More….
AWS Cloud Infrastructure
Amazon Cognito
Amazon Mobile Analytics
Amazon SNS Mobile Push
Amazon Lambda New!
Mobile-optimized Connectors
(Kinesis, S3, DynamoDB, SQS)
7. 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
λ λ
λ
λ
8. Cross-platform, Optimized for Mobile
User 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
10. Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
Deliver media
Store shared data
Stream real-time dataRun Business Logic
Send push notifications
Manage users and
identity providers
Securely access
cloud resources
Sync user prefs
across devices
Track active users,
Engagement, retention
Run stateless custom
Code without managing servers
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
11. 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 data
Amazon DynamoDB
(Object Mapper)
Stream real-time data
Amazon Kinesis
(Recorder)
Run Business Logic
AWS Lambda
Send push notifications
Amazon SNS
Mobile Push
Your
Mobile
App
13. 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
14. 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
15. 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
16. Getting Started with Cognito in 3 steps
Sign up for AWS Account and login to AWS Management Console
Download and integrate the Mobile SDK and store and
sync user data in a dataset
Create identitypool for authenticated and
unauthenticated users in the AWS Console
17. Amazon Cognito Security
Set granular access permissions on AWS
resources
Get fine-grained access control to cloud
resources.
Safeguard AWS Credentials
No need to embed credentials in the app
anymore. Get least-privileged temporary
credentials.
Helps implement security best practices
Securely access any AWS Service. It simplifies
the interaction with Security Token Service and
removes the need of Token Vending Machine
EC2
S3
DynamoDB
Kinesis
18. Developer-Authenticated Identities
Your
own
Username
And
Password
Your own user authentication system
Several apps prefer to have their own username
and password instead of public identity providers
for authentication.
Manage mappings easily
Cognito manages the mappings across login
systems (public or private) using a unique
Cognito ID
Easily integrate with existing systems
Implement GetOpenIdTokeForDeveloperIdentity()
using our server-side SDKs like Java, Python,
Ruby etc.
20. Amazon Cognito (Identity Broker)
Identitypool
Identity
Providers
Pool of identities that
share the same trust policy
Access
Policy
Access to
AWS
Services
identitypool
Unauthenticated
Identities
authenticated
identities
AWS IAM Roles
AWS
Account
Web Identity
Federation
S3
DynamoDB
Get Delete Put
22. 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
No Backend
Simple client SDK eliminates need for server
side code
23. Synchronize data across devices with Cognito
Sync Game States
Across OS/devices
State Transition
(link multiple accounts)
Sync User Profiles
across OS/devices/web
24. 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.
25. Amazon Cognito Sync
Offline: 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
26. Integrating Cognito Sync functionality is simple
Initialize the CredentialsProvider and CognitoClient
Call synchronize on the dataset
Create or open Dataset and Add Key Values
provider = new CognitoCachingCredentialsProvider (context, AWS_ACCOUNT_ID,
COGNITO_POOL_ID, COGNITO_ROLE_UNAUTH, COGNITO_ROLE_AUTH, Regions.US_EAST_1);
cognito = new CognitoSyncManager (context, Regions.US_EAST_1, provider);
dataset.synchronize(new SyncCallback(){..});
cognito.openOrCreateDataset(datasetName);
dataset.put(key, value);
27. Integrating Cognito Sync functionality is simple
Initialize the AWSCognitoSyncClient
Call synchronize on the dataset
Create or open Dataset and Add Key Values
DataSet *dataset = [syncClient openOrCreateDataSet:@"myDataSet"];
NSString *value = [dataset readStringForKey:@"myKey"];
[dataset putString:@"my value" forKey:@"myKey"];
AWSCognitoSyncClient *syncClient = [[AWSCognitoSyncClient alloc]
initWithConfiguration: configuration];
[dataset synchronize];
iOS
29. 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
30. Getting Started with Mobile Analytics in 3 steps
Sign up for AWS Account and create or use existing Cognito ID in
the AWS Management Console
View engagement and session activity reports in the
AWS Management console within minutes
Download and integrate the Mobile SDK with one line of
code (Android/FireOS, iOS)
31.
32. Key Business Metrics
(with one line of code)
1. Monthly Active Users
(MAU)
2. Daily Active Users
(DAU)
3. New Users,
4. Daily Sessions,
5. Sticky Factor,
6. 1-Day Retention,
7. Avg. Revenue per DAU,
8. Daily Paying Users,
9. Avg. Paying DAU
33. Track Retention
User retention is a key
indicator to judge the
outcome of a marketing
campaign, new feature
introduction, UX changes,
app updates, etc.
Mobile Analytics provide four
charts to track daily or
weekly rate of returning
users, after first use of the
app
34. Get behavioral insights into app specific
actions that your users take
Reports provide a view of how often custom
events occur. You can add further context
with Attributes and Metrics, to each custom
event
Examples
Track the number of
Likes/Shares, per
article, in a news app
Understand player
abort rates per
level, in a game
Number of songs
played, per user
session, in a music
app
In-app item popularity
in a shopping app
Track Custom Events
35. Integrating Mobile Analytics is super simple
Initialize the MobileAnalyticsManager. That’s it! Get Session
Activity in the AWS Management Console.
For Custom Events activity reports, add events.
Add OnResume() and OnPause()
private static MobileAnalyticsManager analytics;
analytics = MobileAnalyticsManager.getOrCreateInstance(
this.getApplicationContext(),"yourCompany.yourAppId",
Regions.YOUR_REGION, config, cognitoProvider );
EventClient eventClient = analytics.getEventClient();
MobileAnalyticsEvent visitEvent = eventClient.createEvent("speedSet");
eventClient.recordEvent(visitEvent);
analytics.getSessionClient().resumeSession();
analytics.getSessionClient().pauseSession();
Analytics.getEventClient().submitEvents();
36. Integrating Mobile Analytics is super simple
Initialize the AWSMobileAnalytics object. That’s it! Get Session
Activity in the AWS Management Console.
Submit the event. If we don't call submitEvents, events
will automatically be submitted at periodic intervals.
Create add Custom Events
[eventClient submitEvents];
id<AWSMobileAnalyticsEventClient> eventClient =
analytics.eventClient;
id<AWSMobileAnalyticsEvent> level1Event = [eventClient
createEventWithEventType:@"level1Complete"];
AWSMobileAnalytics* analytics = [AWSMobileAnalytics
defaultAWSMobileAnalyticsWithIdentifier:@"someuniqueid"];
iOS
41. Export to S3, Process Data Anywhere
mobile
client
Amazon
S3
Amazon
Redshift
Amazon Mobile
Analytics
Hadoop/Spark
Amazon EMR
Amazon
Glacier
archive
batch
42. Export to Redshift (Managed)
mobile
client
Amazon
S3
Amazon
Redshift
Amazon Mobile
Analytics
External data
50. 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)
Run Business Logic
Run stateless custom
Code without managing servers
52. 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 your code in the cloud in response to events and scale without any
servers to manage”
Starting with JavaScript but
later any language, Create
threads and processes, run
batch scripts or other
executables,
53. How
can
you
put
AWS
Lambda
to
work?
Stream
processing
Data triggersBack-end
service
Mobile/IoT Indexing &
synchronization
54. Case
Study:
Social
Media
AggregaAon
CommandPost is CMP.LY’s patented
Monitoring, Measurement & Insights (MMI)
tool for managed social communications.
Increase the amount of data
processed while reducing(!)
the resources (instances)
required to do it
55. Respond
to
events
in
real-‐0me
Map
local
func0ons
to
lambda
func0ons
from
within
the
SDK
Target,
Filter,
and
Route
Amazon
SNS
No0fica0ons
Apply
Custom
Logic
to
User
Preferences
and
Game
State
Java
Support
(Coming
soon),
CloudTrail
integra0on,
Enhanced
metrics
and
logging
via
CloudWatch
S3 event
notifications
DynamoDB
Streams
Kinesis
events
Cognito
events
SNS
events
Custom
events
AWS Lambda Now Ready for Production at Scale
56. Amazon
Cognito Sync
Dataset
Amazon
DynamoDB
Table
Map local
functions to
invoke
Lambda
Functions
synchronously
Maintain
Intelligence
in the cloud
and not the
device
Chain
multiple
Functions or
call them in
Parallel
J
SNS Push
notification
Personalize your
notification for
every user
57. Adding a Lambda Backend to your Mobile App is
simple
Initialize the LambdaFactory and define the Interface for the functions
Call synchronize on the dataset
Create/Upload the Lambda Function to the AWS Management Console
lambda = new LambdaInvokerFactory(context, Regions.US_WEST_2, provider);
//interface
@LambdaFunction(functionName="cloudFunction”)
String localFunction(String nameInfo);
lambda.localFunction(“Hello From “); // this will output “Hello From Lambda”
exports.handler = function(event, context) {
context.done(null, event + 'Lambda'); // SUCCESS with message
};
58. Authenticate users
Authorize access
Analyze User Behavior
Synchronize data
AWS Mobile SDK
Amazon Mobile
Analytics
Amazon Cognito
(Sync)
AWS Identity and
Access Management
Amazon Cognito
(Identity Broker)
Run Business Logic
AWS Lambda
Your
Mobile
App
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
62. 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
63. 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.
64. 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)
Run Business Logic
AWS Lambda
Your
Mobile
App
Store shared data
Stream real-time data
Send push notifications
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
66. What Customers Told Us About “Push Notifications”
Sending large-scale push notifications, cross-platform is still hard.
Developers want to be able to reach their customers globally and
across all devices.
67. Each platform works differently, and push gets even more
complex as you scale to support millions of devices.
Cloud App
Platform Services Mobile Apps
68. 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:
Delivery Metrics via
CloudWatch
Trigger Lambda
Functions from SNS
notifications
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
69. 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
70. Reliable push at scale takes constant work
35 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
71. Now Path Uses SNS Mobile Push
Amazon SNS
Mobile Push
72. Now Path Uses SNS Mobile Push
Zero to 500m+ daily
push notifications
almost overnight
Highest available
reliability and speed
Easy migration
$1 per million
mobile push deliveries 10m
170m
500m
Day 1 Day 2 Day 3
Path Daily SNS Mobile
Push Deliveries
(millions)
…Rising
73. Developers Love Cross-Platform Features of SNS
Fast reliable
notification for every
Email received is
powered by SNS
Customers love
high scale and
Reliability of SNS
High-profile Startups
trust SNS for their
high-profile launches
Secret.ly
Advanced targeted
notifications
bring players back into
the game
Mature games increase
retention using SNS
Launched its Android
App with SNS, no
provisioning required
Jetpack Joyride
Fruit ninja
74. 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)
Run Business Logic
AWS Lambda
Send push notifications
Amazon SNS
Mobile Push
Your
Mobile
App
Store shared data
Stream real-time data
Store and query fast NoSQL data
across users and devices
Collect real-time clickstream logs
and take actions quickly
76. Joe Anna Bob
High Scores
Joe 1500
Anna 800
Bob 750
Amazon DynamoDB Connector: Object Mapper
Simplifies access to Amazon
DynamoDB in you app
Map client-side classes to Amazon
DynamoDB tables
Removes the need to transform
objects into tables and vice versa
77. HitPoint Studios Uses AWS to Grow Audience and Cut Costs by 45%
HitPoint is an independent casual online game
developer with games on Facebook and mobile.
HitPoint Studios uses AWS to grow
our player base and cut hosting
costs. We are also building our new
mobile gaming platform on its
infrastructure.
• Reduced hosting and content delivery costs by over 45%
• Delivers new game content weekly to 250,000+ MAU
• Reduced server deployment, maintenance, and
monitoring time to a single engineer
• Allows us to do large marketing spends for UA without
concern for server load from new users
• Provides us with the infrastructure needed to build our
new game platform with a small, focused team
Chris Vigorito
Technical Director, HitPoint Inc.
”
“
79. 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 data
Amazon DynamoDB
(Object Mapper)
Run Business Logic
AWS Lambda
Send push notifications
Amazon SNS
Mobile Push
Your
Mobile
App
Stream real-time data
Collect real-time clickstream logs
and take actions quickly
82. 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
83. 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 data
Amazon DynamoDB
(Object Mapper)
Stream real-time data
Amazon Kinesis
(Recorder)
Run Business Logic
AWS Lambda
Send push notifications
Amazon SNS
Mobile Push
Your
Mobile
App
85. Fully Integrated AWS Mobile SDK
• Common authentication mechanism across
all services
• Automatically handle intermittent network
connections
• Cross-platform Support: Android, iOS, Fire
OS
• 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
• Continuously updated with latest platform
enhancements
iOS
Android
JavaScript
Unity
Xamarin
Download the latest
versions of the SDKs
86. Mobile Services Work Better Together
SNSCognito
Cognito
Cognito
SNS
Lambda
Lambda Lambda
Lambda
Any
Analytics S3/Redshift
Kinesis
DynamoDB
Cognito KinesisLambdaS3
87. How are AWS Mobile Services different?
Flexible and Work
Better Together
Serverless and
Scales automatically
Fully Integrated and
easy to get started
88. Amazon
Cognito
Mobile
Analytics
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
AWS
Lambda
Free Tier : 1M free
requests per month
400,000 GB-
seconds of compute
time per month