Comenzando con los servicios móviles en AWS
-
Upload
amazon-web-services-latam -
Category
Technology
-
view
661 -
download
3
Transcript of Comenzando con los servicios móviles en AWS
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Henry Alvarado, Solutions Architect
Mayo 2016
Comenzando con los servicios
móviles en AWS
Desarrollando aplicaciones
móviles hoy...
Usted se enfoca en dos tipos de
componentes…
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
AWS Mobile Services hace que la
complejidad del backend sea más
simple
Para que usted se enfoque en lo
que hace su aplicación única!
Capacidad de
ESCALAR
Backend - Web Server
+ Control
- Escalabilidad
- Alta disponibilidad
- Pago por instancias (sean
usadas o no)
Backend - API Gateway
+ Pago por uso
+ Escalabilidad
+ Alta disponibilidad
+ Reúso del Backend
Backend - Mobile SDK
+ Pago por uso
+ Escalabilidad
+ Alta disponibilidad
- Complejidad
Complejidades del backend
Códig
o d
e c
liente
Complejidades del backend
Códig
o d
e s
erv
idor
Códig
o d
e c
liente
Complejidades del backend
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 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
AWS Mobile Services
AWS Mobile Services
AWS Mobile Services
AWS Mobile Services
AWS Mobile Services
LET’S
SEE
HOW
IT’S
DONE
Autenticación de Usuarios:
Amazon Cognito
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
Sign in with
Or
Username
Password
Sign In
Or
Start as a guest
Autenticación vía
proveedores de
identidad de terceros
Amazon Cognito Identity
Acceso Guest
Su Pool de Usuarios
en Coignito
Amazon Cognito
Identity provee
credenciales
temporales para
acceder de forma
segura a sus recursos
AWS
DynamoDB
S3
API Gateway
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
Sincronice datos entre dispositivos: Amazon Cognito Sync
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
Amazon Cognito
Guarda en la nube y Sincroniza
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.
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
AWS Mobile Services
AWS Mobile Services
AWS Mobile Services
AWS Mobile Services
AWS Mobile Services
Veamos
cómo se
hace
Almacene y Comparta medios:
Amazon S3
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 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 Mobile Services
AWS Mobile Services
AWS Mobile Services
Veamos
cómo se
hace
Backend sin servidores
Optimizado para Móvil
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
};
AWS Mobile Services
AWS Mobile Services
Veamos
como se
hace
Envío de Push Notifications: Amazon SNS Mobile
Push
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
AWS Mobile Services
Aplicación con
CALIDADCapacidad de
ESCALAR
http://www.tricolorcat.com/
http://www.tricolorcat.com/
Analice el comportamiento del
usuario: Amazon Mobile
Analytics
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.
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
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.
65
Upload your Android, iOS, or Fire
OS app, configure a test, and
select devices.
We simultaneously test
your app across your
selected devices in our
datacenters.
Testing your app on real devices
In minutes, view detailed,
actionable reports that
pinpoint bugs, performance
problems, and other issues.
YOUR
APP +
Desarrollo
SIMPLEAplicación con
CALIDADCapacidad de
ESCALAR
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
AWS Mobile Hub
Gracias