comenzando con los servicios móviles en aws

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

Upload: amazon-web-services-latam

Post on 20-Jan-2017

513 views

Category:

Technology


2 download

TRANSCRIPT

© 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

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!

Complejidades del backend

Complejidades del backend

Complejidades del backend

Complejidades del backend

Complejidades del backend

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

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

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

Synchronize Data Across Devices: Amazon Cognito (Sync)

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

AWS Mobile Services

AWS Mobile Services

Veamos

cómo se

hace

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.

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

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

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

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

AWS Mobile Hub

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

Gracias