Download - Comenzando con los servicios móviles en AWS
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Henry Alvarado, Solutions Architect
Abril 2016
Comenzando con los servicios
móviles en AWS
1. La complejidad de los componentes de backend que una aplicación móvil necesitay
2. Las grandiosas funcionalidades que ustedes crean para que su aplicación sea única
Manejo
de inesta
bili
dad d
e r
ed
Códig
o d
e s
erv
idor
Códig
o d
e c
liente
Complejidades del backend
AWS Mobile Services
Manejo
de inesta
bili
dad d
e r
ed
Códig
o d
e s
erv
idor
Códig
o d
e c
liente
AWS Mobile
Services
AWS Mobile Services
ServerlessClient-Side
SDK
Mobile
Aware
El SDK
provee de
librerías
client-side
que hacen
interfaz con
los
servicios
usando una
mínima
cantidad de
código
El código es
automáticamen
te optimizado
para manejar
las
inestabilidades
y intermitencias
de red
Infraestructura
totalmente
administrada
Aprovisionamiento
y escalabilidad
automática
Basta con cargar
su código sin
desplegar
servidores
Manejo
de inesta
bili
dad d
e r
ed
Códig
o d
e s
erv
idor
Códig
o d
e c
liente
AWS Mobile
Services
AWS Mobile SDK: Completamente integrado
• Mecanismo común de autenticación ante
todos los servicios
• Automáticamente administra intermitencias
de red
• Soporte multi plataforma: Android, iOS, Fire
OS, Unity, and JavaScript
• SDKs nativos optimizados para SO móviles,
por ejemplo el uso de arquitecturas de caché
locales
• Consumo de memoria reducido; seleccione
solo los servicios que necesita
• Continuamente actualizado con las últimas
mejores de las plataformas
iOS Android Fire OS Unity
Xamarin
Amazon Cognito
Simplifies Identity and
Access Management
Acceda a todos los
servicios AWS desde
un dispositivo móvil
de forma segura
Cross-device and
cross-platform syncImplement security best
practices
“Los datos de su aplicación seguros, disponibles offline y sincronizados entre
múltiples dispositivos”
Sincronice los datos de
usuario entre diferentes
dispositivos y
plataformas
Administre usuarios
como identidades
únicas entre múltiples
proveedores de
identidad
Or, Your Own
Auth
Proveedores
de
identidades
Identidades
únicasJoe Anna Bob
Cualquier
dispositivo o
plataforma
Cualquier
servicio AWS
Ayuda a implementar las mejores
prácticas de seguridadAcceso a cualquier servicio AWS de forma
segura desde un dispositivo móvil. Integración
simplificada con AWS IAM.
Soporta múltiples proveedores de Log-
InFácil de integrar con los principales proveedores
de log-in para autenticación.
Usuarios Únicos vs. DispositivosAdministra identidades únicas. Reconoce
automáticamente usuarios únicos entre
dispositivos y plataformas.
Amazon Cognito Identity
Amazon
Mobile Analytics
Amazon
S3Amazon
DynamoDB
Amazon
Kinesis
Amazon Cognito Flow(Any OpenID Connect Token)
Amazon Cognito ID
(Temp Credentials)
Amazon
DynamoDB
End Users
Developer
App with
AWS Mobile
SDK
Access
to AWS
Services
Amazon Cognito
Identity Broker
User Name
Password
Amazon Cognito ID,
Temp Credentials
Amazon S3
Amazon Mobile
Analytics
Amazon Cognito
Sync Store
AWS
Management
Console
OIDC Token
Pool ID
Role ARNs
User Authentication
System
(Running on AWS or not)
OIDC Token
Amazon Cognito Flow(Any OpenID Connect Token)
Amazon Cognito ID
(Temp Credentials)
Amazon
DynamoDB
End Users
Developer
App with
AWS Mobile
SDK
Access
to AWS
Services
Amazon Cognito
Identity Broker
Get OpenID Token
User Name
Password
Amazon Cognito ID,
Temp Credentials
Amazon S3
Amazon Mobile
Analytics
Amazon Cognito
Sync Store
AWS
Management
Console
OIDC Token
Pool ID
Role ARNs
User Authentication
System
(Running on AWS or not)
OIDC Token
OIDC Token
Amazon Cognito
Cloud Save and Sync
Almacena
datos y los
sincroniza
Cualquier
plataforma
iOS/Android/FireOS
Almacena datos de aplicación, preferencias
y estadosAlmacene datos de la aplicación y el dispositivo, en la
nube y únalos tras el login.
Sincronización Cross-Device Cross-OSSincronización de datos de usuario y preferencias
entre múltiples dispositivos con una línea de
código.
Funciona offlineDatos siempre almacenados primero en una BD
SQLite local. Trabaja sin problemas sin
conectividad o intermitencias de red.
k/v data
Identity Pool
Sin Back EndCliente de SDK simple, elimina la necesidad de
código server side.
Sincronización de datos entre múltiples
dispositivos con Amazon Cognito
Sincronice estados de
juegos entre
OS/devices
Transición de estado
(vincule múltiples
cuentas)
Sincronice perfiles de
Usuario entre
OS/devices/web
Modelo de sincronización Amazon Cognito
Identity Pool: Grupo de usuarios de la aplicación. Puede ser compartido entre múltiples aplicaciones.
Identity: Un único usuario. Consistente entre proveedores de identidad. Puede ser un usuario ”guest”.
Dataset: Por datos de agrupamiento de usuario. El nivel más granular de sincronización. Hasta 1MB.
Record: Par de Llave - Valor.
AWS Account
Dataset
IdentityIdentityIdentity
DatasetDataset
Identity
Pool
1:60
1:n
1:20
DatasetDatasetRecord
1:1024
Usted
Su aplicación
Usuarios de suaplicación
Contenedor de datos de usuario.
Dato del usuario
Integrando la funcionalidad Amazon Cognito
Sync es extremadamente simple
Inicialice el CredentialsProvider y el CognitoClient
Llame la sincronización en el dataset
Cree o abra el dataset y agregue llaves y valores
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);
Integrando la funcionalidad Amazon Cognito
Sync es extremadamente simple
Inicialice el AWSCognitoSyncClient
Llame sincronizar en el dataset
Cree o abra el dataset y agrege llaves y valores
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
Amazon Mobile Analytics
Escalable y con una
generosa capa gratuita
Enfóquese en las métricas que
importan. Use los reportes
disponibles dentro de los 60
minutos de haber recibido los
datos de su aplicación.
Rápido
Escale a millones de
eventos por día, de
millones de usuarios.
Usted es dueño de
sus datos
“Colecte y analice datos de uso de su aplicación de forma simple y costo
eficiente”
Los datos colectados no
son compartidos,
agregados o reusados.
Inicie a usar Amazon Mobile Analytics
en tres pasos
Inscríbase a una cuenta AWS y cree o use un Amazon Cognito ID
existente en la consola de administración de AWS
Revise los reportes de uso y actividad de sesiones en
la consola de administración AWS en minutos
Descargue e integre el Mobile SDK usando una línea
de código (Android/FireOS, iOS)
Métricas clave de
negocio
(con solo una línea de
código)
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
Rastree la retención
La retención de usuarios es
un indicador clave para
juzgar el resultado de una
campaña de marketing,
introducción de una nueva
característica, cambios en la
interfaz, actualizaciones, etc.
Mobile Analytics provee
cuatro gráficos para rastrear
diariamente o semanalmente
el ritmo de retorno de
usuarios, desde el primer
uso de la aplicación
Obtenga una mirada al comportamiento de
acciones específicas de sus usuarios en la
aplicación.
”Reports” provee una visión de qué tan
seguido los eventos personalizados
ocurren. Sus datos agregan contexto con
atributos y métricas para cada evento
personalizado.
Ejemplos:
Número de likes, por
artículo en una app de
noticias
Entender qué tanto el
jugador aborta por nivel
de un juego móvil.
Número de canciones
reproducidas por
usuario en app de
música
Popularidad de un ítem
en una app de tienda
virtual
Rastree Eventos
Personalizados
Amazon KinesisAWS
Mobile SDK
Conectores Móviles Optimizados (AWS Mobile
SDK)
Amazon S3
Integrado con AWS Mobile SDKOptimizado para SO nativos
Carga de medios en multi-partes
Descarga tolerante a fallas
Re intentos automáticos
Funciones de Pause, resume,
cancel
Sistema de batching genérico
Manejo de conexiones de red
intermitentes
Utilización de batería optimizada
Amazon DynamoDB
Amazon S3 Connector: Transfer Manager
S3 Connector
Carga multi-parte de medios (fotos, videos,
audio)
Descargas tolerantes a fallos (ej. assets)
Sin necesidad de backend
Reintentos automáticos
Funciones de pause, resume, cancel
Optimizado para SO nativos
Amazon S3 Connector: Transfer Manager in Android
// Creating the transfer manager
TransferManager = new TransferManager(credentialProvider);
// Upload image
Upload upload = transferManager.upload(BUCKET_NAME, fileName, file);
// Download image
Download download = transferManager.download(BUCKET_NAME, mKey,
file);
// Pause, and Resume
try {
PersistableDownload = download.pause();
//do something if we didn’t abort
} catch(PauseException e) {
//do something if we aborted
}
download = transferManager.resumeDownload(persistableDownload);
Amazon S3 Connector: Transfer Manager in iOS
// Creating the transfer manager
self.transferManager = [S3TransferManager new];
self.transferManager.s3 = s3client;
// Upload image
[self.transferManager uploadFile:fileName bucket:bucketName
key:objectName];
// Download image
[self.transferManager downloadFile:fileName bucket:bucketName
key:objectName];
// Pause, Resume, Cancel
[self.transferManager pauseAllTransfers];
[self.transferManager resumeAllTransfers];
[self.transferManager cancelAllTransfers];
AWS Lambda
Auto Scaling
(nunca aprovisiona más o
menos de lo necesario)
Enfóquese en la lógica
de negocio, no en la
infraestructura. Cargue
su código y AWS Lambda
se encarga del resto.
Cero administración
Lambda escala la
infraestructura según
sea necesario para
atender la cantidad de
eventos y pagar según
el uso.
Traiga su propio
código
“Ejecute su código en la nube, en respuesta a eventos y escale sin administrar
ningún servidor”
Inicialmente JavaScript,
Python y Java, pero más
lenguajes en un futuro. Cree
threads y procesos, ruede
scripts batch u otros
ejecutables.
Responde a eventos en tiempo real
Mapee funciones locales a funciones lambda dentro del SDK
Dirija, filtre y enrute notificaciones de Amazon SNS
Aplique lógica personalizada a las preferencias de usuarios o estados de un juego
Integración con AWS CloudTrail, métricas mejoradas y logs vía Amazon CloudWatch
S3 event
notifications
DynamoDB
Streams
Amazon
Kinesis
events
Amazon
Cognito
eventsSNS
events
Custom
events
AWS Lambda
Agregando un backend Lambda a su aplicación móvil
es simple
Inicialice el LambdaFactory y defina la interfaz a las funciones
Llame la función
Cree / Cargue la función Lambda en la consola de administración AWS
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
};
Amazon SNS
Cross-Platform
Mobile Push
Internet
Apple APNS
Google GCM
Amazon ADM
Windows WNS and
MPNS
Baidu CP
Con Amazon SNS, los desarrolladores pueden enviar push notifications a
múltiples plataformas y alcanzar usuarios móviles en todo el mundo
Nuevas características:
Entrega de métricas vía CloudWatch
Llame funciones Lambda desde notificaciones SNS
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
Push confiable a Escala Requiere Trabajo
Constante35 AWS EC2 m3.xlarge instances
Home-rolled code based on Tornado
6 Load
BalancersTratando constantemente
de escalar tanto a nivel de
procesos como a nivel de
servidores
Luchando para maximizar
el througput a nivel de
paquetes por segundo
Nunca realmente seguro
de cuantos push fueron
enviados o descartados.
Ahora Usando Amazon SNS Mobile Push
De cero a +500m de
push notifications
diarias casi de un día
para otro
Más rápido, confiable y
disponible
Fácil migración
$1 por millón de
entregas
mobile push
10m
170m
500m
Day 1 Day 2 Day 3
Daily SNS Mobile Push
Deliveries (millions)
…Rising
Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push
Amazon
Kinesis Recorder
Amazon
DynamoDB Mapper
Amazon S3
Transfer Mgr
Amazon
SQS Client
Amazon
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, AWS Management Console
Compute Storage Networking Analytics Databases
Integrated SDK
AWS Mobile Services
AWS Lambda
AWS Lambda
Functions
λ λλλ
AWS Mobile Hub
1. Single integrated console
2. Pre-built features
3. Auto-provisioned services
4. Auto-generated app
Result: Build apps on AWS in minutes
Costo y complejidad de test efectivos
Mantener un laboratorio de dispositivos es
todo un desafío.
• Mantener flota actualizada en HW y SW
Test manuales son imprácticos
Automatización de la flota de dispositivos es
muy compleja.
68