Comenzando con los servicios móviles en AWS

71
© 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

Transcript of Comenzando con los servicios móviles en AWS

Page 1: 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

Page 2: Comenzando con los servicios móviles en AWS

Desarrollando aplicaciones

móviles hoy...

Usted se enfoca en dos tipos de

componentes…

Page 3: 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

Page 4: Comenzando con los servicios móviles en AWS

AWS Mobile Services hace que la

complejidad del backend sea más

simple

Page 5: Comenzando con los servicios móviles en AWS

Para que usted se enfoque en lo

que hace su aplicación única!

Page 6: Comenzando con los servicios móviles en AWS

Capacidad de

ESCALAR

Page 7: Comenzando con los servicios móviles en AWS

Backend - Web Server

+ Control

- Escalabilidad

- Alta disponibilidad

- Pago por instancias (sean

usadas o no)

Page 8: Comenzando con los servicios móviles en AWS

Backend - API Gateway

+ Pago por uso

+ Escalabilidad

+ Alta disponibilidad

+ Reúso del Backend

Page 9: Comenzando con los servicios móviles en AWS

Backend - Mobile SDK

+ Pago por uso

+ Escalabilidad

+ Alta disponibilidad

- Complejidad

Page 10: Comenzando con los servicios móviles en AWS

Complejidades del backend

Page 11: Comenzando con los servicios móviles en AWS

Códig

o d

e c

liente

Complejidades del backend

Page 12: Comenzando con los servicios móviles en AWS

Códig

o d

e s

erv

idor

Códig

o d

e c

liente

Complejidades del backend

Page 13: Comenzando con los servicios móviles en AWS

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

Page 14: Comenzando con los servicios móviles en AWS

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

Page 15: Comenzando con los servicios móviles en AWS

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

Page 16: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 17: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 18: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 19: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 20: Comenzando con los servicios móviles en AWS

AWS Mobile Services

LET’S

SEE

HOW

IT’S

DONE

Page 21: Comenzando con los servicios móviles en AWS

Autenticación de Usuarios:

Amazon Cognito

Page 22: Comenzando con los servicios móviles en AWS

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

Page 23: Comenzando con los servicios móviles en AWS

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

Page 24: Comenzando con los servicios móviles en AWS

Sign in with

Facebook

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

Page 25: Comenzando con los servicios móviles en AWS

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

Page 26: Comenzando con los servicios móviles en AWS

Sincronice datos entre dispositivos: Amazon Cognito Sync

Page 27: Comenzando con los servicios móviles en AWS

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

Page 28: Comenzando con los servicios móviles en AWS

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.

Page 29: Comenzando con los servicios móviles en AWS

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

Page 30: Comenzando con los servicios móviles en AWS

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);

Page 31: Comenzando con los servicios móviles en AWS

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

Page 32: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 33: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 34: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 35: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 36: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Veamos

cómo se

hace

Page 37: Comenzando con los servicios móviles en AWS

Almacene y Comparta medios:

Amazon S3

Page 38: Comenzando con los servicios móviles en AWS

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

Page 39: Comenzando con los servicios móviles en AWS

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);

Page 40: Comenzando con los servicios móviles en AWS

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];

Page 41: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 42: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 43: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Veamos

cómo se

hace

Page 44: Comenzando con los servicios móviles en AWS

Backend sin servidores

Optimizado para Móvil

Page 45: Comenzando con los servicios móviles en AWS

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.

Page 46: Comenzando con los servicios móviles en AWS

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

Page 47: Comenzando con los servicios móviles en AWS

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

};

Page 48: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 49: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Veamos

como se

hace

Page 50: Comenzando con los servicios móviles en AWS

Envío de Push Notifications: Amazon SNS Mobile

Push

Page 51: Comenzando con los servicios móviles en AWS

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

Page 52: Comenzando con los servicios móviles en AWS

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.

Page 53: Comenzando con los servicios móviles en AWS

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

Page 54: Comenzando con los servicios móviles en AWS

AWS Mobile Services

Page 55: Comenzando con los servicios móviles en AWS

Aplicación con

CALIDADCapacidad de

ESCALAR

Page 56: Comenzando con los servicios móviles en AWS
Page 57: Comenzando con los servicios móviles en AWS
Page 58: Comenzando con los servicios móviles en AWS

http://www.tricolorcat.com/

Page 59: Comenzando con los servicios móviles en AWS

http://www.tricolorcat.com/

Page 60: Comenzando con los servicios móviles en AWS

Analice el comportamiento del

usuario: Amazon Mobile

Analytics

Page 61: Comenzando con los servicios móviles en AWS

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.

Page 62: Comenzando con los servicios móviles en AWS

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

Page 63: Comenzando con los servicios móviles en AWS

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

Page 64: Comenzando con los servicios móviles en AWS

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

Page 65: Comenzando con los servicios móviles en AWS

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

Page 66: Comenzando con los servicios móviles en AWS

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 +

Page 67: Comenzando con los servicios móviles en AWS

Desarrollo

SIMPLEAplicación con

CALIDADCapacidad de

ESCALAR

Page 68: Comenzando con los servicios móviles en AWS

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

Page 69: Comenzando con los servicios móviles en AWS
Page 70: Comenzando con los servicios móviles en AWS

AWS Mobile Hub

Page 71: Comenzando con los servicios móviles en AWS

Gracias