2. Who am I?
• @paulmaddox – feel free to reach out
- Mixture of Dev
• Building highly scalable infrastructure since 2002
- Mixture of Dev & Ops. Linux, LAMP, Java, C, Go, Docker etc.
• Building mobile applications, APIs and backends since 2012
• Solutions Architect @ AWS focusing on Mobile since 2014
4. When developing mobile apps today, you want to focus on ...
The great stuff that makes your app unique
Not…
The heavy lifting needed to manage back-end infrastructure
AWS Mobile Services eliminate the heavy lifting
6. “Mobile” growing in all directions
Published mobile apps
continue to grow…
…As “mobile” platforms
expand to new domains
TV
Watch
Car
*Source: App Annie
7. Apps are also getting more complex
…To cloud-connected appsFrom basic client apps…
Sign-in/Social
Push notifications
Usage analytics
Cloud storage
Crash analytics
Ads
Attribution
analytics Config management
Custom back ends
A/B testing
8. AWS Mobile SDKs
AWS Mobile Hub
Authenticate users
Analyze user behavior
Store and share media
Synchronize data
Deliver media
Amazon Cognito
(Sync)
Amazon Cognito
(Identity)
Amazon S3
Amazon CloudFront
Store data
Amazon DynamoDB
Amazon RDS
Track retention
Amazon Mobile
Analytics
Send push notifications
Amazon SNS
Mobile Push
Server-side logic
AWS Lambda
AWS Device Farm
Test your app
Build and scale your apps on AWS
Amazon Mobile
Analytics
9. “AWS has what we need, but…it’s complex”
1. Which services should I use? 2. How do I connect them?
Identity provider SDKs
+
=
Example:
Login screen & integration code
+
SDK
12. High performance at any scale;
Cost-effective and efficient
No Infrastructure to manage
Pay only for what you use: Lambda
automatically matches capacity to
your request rate. Purchase
compute in 100ms increments.
Bring Your Own Code
Lambda functions: Stateless, trigger-based code execution
Run code in a choice of standard
languages. Use threads, processes,
files, and shell scripts normally.
Focus on business logic, not
infrastructure. You upload code; AWS
Lambda handles everything else.
Cloud Logic with AWS Lambda
13. AWS Lambda Console
Develop, test and
publish your Lambda
functions either by the
AWS Management
Console, AWS CLI or
our SDKs.
Or use community
frameworks such as
serverless.com,
gosparta.io and
more…
14. Pricing Example
AWS Lambda (our example = $1.80/month):
Free tier: 1,000,000 invocations/month
$0.20/million thereafter
plus $0.00001667 per GB/second of memory
Our mobile backend services 10,000,000 requests/month, each request
invokes a Lambda function that takes 100ms and uses 128MB of memory.
$1.80
per month
17. Instrumentation
UI Automation
UI Automator
Your app
Improve the quality of your apps by testing against real devices in the AWS cloud
Automated testing on AWS Device Farm
(native, hybrid, web)
XCTest
XCTest UI
18. Select a device View historical sessionsInteract with the device
Introducing Device Farm:
Remote access
20. “If you can’t measure it, you can’t improve it”
-Lord Kelvin
21. 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
Simply and cost-effectively collect and analyze your application usage data
Data collected are not
shared, aggregated,
or reused.
Amazon Mobile Analytics
23. Fast, flexible, global messaging to any device or endpoint
Global and fast at
high scale
Send messages to any
device or endpoint
Support for multiple
platforms or frameworks
Amazon Simple Notification Service
25. Retrospective
Analyze historical
trends to know
what's happening in
the app
Predictive
Anticipate user
behavior to enhance
experience
Inquisitive
Discover latent user
behavior to shape
product or marketing
decisions
Three Types of Data-Driven Decision Making
26. How many users use the app and how often?
What are key user behaviors in the app?
Your
Mobile
App
How to predict user behavior and use those
predictions to enhance their experience ?
In the Context of a Mobile App
27. Three Types of Data Driven Decision Making
Retrospective
Analyze historical
trends to know
what's happening in
the app
Predictive
Anticipate user
behavior to
enhance experience
Inquisitive
Discover latent user
behavior to shape
product or marketing
decisions
31. Retrospective
Analyze historical
trends to know
what's happening in
the app
Predictive
Anticipate user
behavior to enhance
experience
Inquisitive
Discover latent user
behavior to shape
product or marketing
decisions
Three Types of Data Driven Decision Making
33. How does usage pattern vary for users with different demographic profiles ?
Who are the most engaged users and what are their usage patterns ?
How does user population distribute across countries and platform ?
How much time does it takes for a user to convert to a paying user ?
Music App
Few Questions That Will Help You Understand Your
Users Better
39. Retrospective
Analyze historical
trends to know
what's happening in
the app
Predictive
Anticipate user
behavior to enhance
experience
Inquisitive
Discover latent user
behavior to shape
product or marketing
decisions
Three Types of Data Driven Decision Making
41. Let’s say we have been observing high user churn
in the music app. Now, we want to identify these
users in advance so that we could reach out to
users before they leave the app
Predictive Application by Example
Music
App
42. Let’s say we have been observing high user churn
in the music app. Now, we want to identify these
users in advance so that we could reach out to
users before they leave the app
How could you identify users who have high probability
to churn away from the app?
Music
App
Predictive Application by Example
43. SELECT e.unique_id,
Count(distinct session_id)
FROM events e
WHERE event_type = ‘_session.start’
HAVING e.date> GETDATE() - 30
You can start by looking at
usage patterns of all users in the
last 30 days
One Way To Do is…
44. SELECT e.unique_id,
Count(distinct session_id)
FROM events e
WHERE event_type = ‘_session.start’
AND
date_part (dow,e.date ) in (6,7)
HAVING e.date> GETDATE() - 30
But usage pattern changes on
weekends.
You can edit the query to filter
for weekends only
One Way To Do is…
45. SELECT e.unique_id,
Count(distinct session_id)
FROM events e
WHERE event_type = ‘_session.start’
AND
date_part (dow,e.date ) in (6,7)
HAVING e.date> GETDATE() - 60
Pattern is not clear. You can go
back in time to get a more clear
pattern
One Way To Do is…
46. SELECT e.unique_id,
Count(distinct session_id),
e.music_genre , e.subscription_type ,
e.locale
FROM events e
WHERE event_type = ‘_session.start’
AND
date_part (dow,e.date ) in (6,7)
HAVING e.date> GETDATE() - 60
You want to learn not only from
usage data but from custom
behavior in the app
One Way To Do is…
48. SELECT e.unique_id, Count(distinct session_id)
, e.music_genre , e.subscription_type , e.locale
FROM events e
WHERE event_type = ‘_session.start’
AND date_part (dow,e.date ) in (6,7)
HAVING e.date> GETDATE() - 120
Use machine learning technology to
learn business rules from your data
49. Machine learning automatically finds patterns
in your data and uses them to make predictions
Better Way To Do it is…
Users with High
probability to churn
Users with Low
probability to churn
50. Machine learning automatically finds patterns
in your data and uses them to make predictions
Your data + Machine Learning
Predictive applications in the app
Better Way To Do it is…
Users with High
probability to churn
Users with Low
probability to churn
51. Predict users with low probability to purchase in the app and send discount coupon
via in-app notification
Predict users with high probability to churn from the app and send push them
notification to re-engage
Identify users with high probability to share the app and reach out to them to do
the same
Recommend relevant content to users based on similar user’s behavioral
patterns
A Few Examples of Leveraging Mobile App Data with
Machine Learning