02 cloud poweredmobileappsonaws_short
TRANSCRIPT
Cloud-powered Cross-platformMobile Apps on AWSDanilo Poccia ‒ AWS Technical Evangelist
@danilop
How to build a mobile app today?
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
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
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
λ λ λλ
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
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
Authenticate users: Amazon Cognito
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
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
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
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
Authorize access: Amazon Cognito + AWS IAM + Fine-grained access control
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
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
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
Synchronize data across devices : Amazon Cognito (Sync)
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
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
Use case: Game State
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.
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
Use Case: Unique Identity across the web and mobile
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)
Analyze User Behavior: Amazon Mobile Analytics
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
28Live score VotingPush notifications
AMAZON MOBILE ANALYTICS + REDSHIFTVISUALIZE DATA THAT MATTERS TO YOU
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
DEVICESIN FORZA FOOTBALL
31
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
Run Stateless Cloud Functions
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,
Endless possibilities - not just for mobile
Data Triggers
Stream Processing
Indexing & Synchronization
Server-free Back-end IoT
Store and share media: Amazon S3
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
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.
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)
Send Push Notifications: Amazon SNS Mobile Push
Each platform works differently, and push gets even more complex as you scale to support millions of devices.
Cloud App
Platform Services Mobile Apps
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
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
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
Now Path Uses SNS Mobile Push
Amazon SNSMobile Push
Store Shared Data: Amazon DynamoDB
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
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);
Collect real-time click-stream data: Amazon Kinesis Mobile Connector
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
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
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
Demo - Sample App
Put your notes on a map, add a picture, share them
Summary
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
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
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
@danilop