Share
Embed
AWS Mobile Services
Como apresentado no AWS Summit Rio de Janeiro 2016
Julio Faerman
September 22, 2016
Transcript
82 slides
-
© 2016, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. Julio Faerman @jmfaerman Construindo apps móveis com AWS Mobile Hub -
1. As complexidades dos componentes do backend de um aplicativo
móvel 2. As funcionalidades que fazem sua aplicação seja única -
Backend - Web Server + Controle - Escalabilidade - Alta
disponibilidade - Pago por instancias -
Backend - API Gateway + Controle de acesso unificado +
Pago por uso + Escalabilidade + Alta disponibilidade + Reuso do Backend -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Lógica própria do aplicativo. • Armazenamento de dados -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app App News -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app App News • Armazenamento de dados -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de dados -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de multimídia • Armazenamento de dados -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de multimídia • Armazenamento de dados • Lógica própria do aplicativo. Noticia publicada com sucesso -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Armazenamento de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News Destaque: Noticia perto de você! -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App Banking Compra 1 Compra 2 Compra 3 Compra 4 -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App Banking Criação de conta -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App Banking Criação de conta -
Amazon Cognito Amazon Mobile Analytics Amazon Identity & Access Management
Amazon S3 Transfer Manager Amazon Kinesis Recorder Amazon DynamoDB Object Mapper Amazon CloudFront AWS Lambda Amazon SNS Mobile Pus USERS DATA MEDIA LOGIC MESSAGING Authenticate Users Authorize Users Analyze User Behavior Synchronize User Data Store Shared Data Capture Real-time Stream Data Store & Share Media Deliver Media Run Server-Side Business Logic Send Push Notifications Gerenciamento de intermitência de rede Complexidades do backend Código no servidor Código no cliente -
Amazon Cognito Amazon Mobile Analytics Amazon Identity & Access Management
Amazon S3 Transfer Manager Amazon Kinesis Recorder Amazon DynamoDB Object Mapper Amazon CloudFront AWS Lambda Amazon SNS Mobile Pus USERS DATA MEDIA LOGIC MESSAGING Authenticate Users Authorize Users Analyze User Behavior Synchronize User Data Store Shared Data Capture Real-time Stream Data Store & Share Media Deliver Media Run Server-Side Business Logic Send Push Notifications Complexidades do backend Código no servidor Código no cliente Gerenciamento de intermitência de rede AWS Mobile Services -
AWS Mobile SDK: Totalmente integrado • Único mecanismo de autenticação
para todos os serviços • Gerencia automaticamente intermitências da rede • Suporte multiplataforma: Andoid, iOS, Fire OS, Unity, e JavaScript • SDKs nativos, otimizados para SO móveis, por exemplo o uso de arquiteturas de cache local. • Uso de memoria reduzido; selecione somente os serviços que você precisa. • Continuamente atualizado com as utimas atualizações das plataformas iOS Android Fire OS Unity Xamarin -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil App News Amazon Cognito AWS IAM -
Provedores de identidades Identidades únicas Joe Anna Bob Qualquer dispositivo
ou plataforma Qualquer Serviço AWS Ajuda na implantação das melhores práticas em segurança Aceso a qualquer serviço AWS com segurança desde um dispositivo móvel. Integração simplificada com o AWS IAM. Suporta múltiplos provedores de Log-In Fácil integração com os principais provedores de log-in para autenticação. Usuários Únicos vs. Dispositivos Gerencia identidades únicas. Reconhece automaticamente usuários únicos entre diversos dispositivos e plataformas. Amazon Cognito Identity Amazon Mobile Analytics Amazon S3 Amazon 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 -
Sincronização e dados entre múltiplos dispositivos com o Amazon Cognito
Sincronize estados de jogos entre OS/devices Transições de estado (vincule múltiplas contas) Sincronize perfis de Usuário entre OS/devices/web -
Amazon Cognito Cloud Save and Sync Armazena dados e os
sincroniza Qualquer plataforma iOS/Android/FireOS Armazena dados de aplicação, preferencias e estados Armazene dados da aplicação e dispositivo na nuvem Sincronização Cross-Device Cross-OS Sincronização de dados de usuário e preferencias entre múltiplos dispositivos com uma línea de código. Funciona off-line Dados sempre armazenados primeiro num BD SQLite local. Trabalha sem problemas quando a rede tem intermitências ou off-line. k/v data Identity Pool Sem Back End Cliente do SDK simples, elimina a necessidade de código server side. -
Integração da funcionalidade do Amazon Cognito Sync é muito simples!
Inicialize o CredentialsProvider e o CognitoClient Chame a sincronização do dataset Crie ou abra o dataset e agregue chaves e 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); -
Inicialize o AWSCognitoSyncClient Chame a sincronização do dataset Crie ou
abra o dataset e agregue chaves e 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 Integração da funcionalidade do Amazon Cognito Sync é muito simples! -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app Amazon Cognito AWS IAM Amazon Mobile Analytics -
Amazon Mobile Analytics Escalável e com uma generosa Free Tier
Foque-se nas métricas que são importantes. Use os relatórios disponíveis dentro dos seguintes 60 minutos de ter recebido os dados da sua aplicação. Rápido Escale para milhões de eventos por dia, de milhões de usuários. Você é dono dos seus dados “Colete e analise dados de uso da sua aplicação de forma simples y custo eficiente” Os dados coletados não são compartilhados, agregados ou reutilizados. -
Métricas importantes do negocio 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 -
Acompanhe a retenção A retenção de usuários e um indicador
importante para julgar o resultado de uma campanha de marketing, introdução de uma nova caraterística, mudanças na interface, atualizações, etc. Mobile Analytics prove quatro gráficos para acompanhar diariamente ou semanalmente o ritmo do retorno dos usuários, desde a primeira utilização da -
Quantidade de likes, num artigo numa app de noticias Entender
quanto um jogador aborta por nível de um jogo móvel. Músicas reproduzidas pelo usuário numa app de música Popularidade de um item numa app de loja virtual Acompanhe Eventos Personalizados -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app App News • Armazenamento de dados Amazon Cognito AWS IAM Amazon Mobile Analytics -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app App News • Armazenamento de dados Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de dados Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de dados Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de multimídia • Armazenamento de dados Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de multimídia • Armazenamento de dados Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis Amazon S3 -
Amazon Kinesis AWS Mobile SDK Conetores Móveis Otimizados (AWS Mobile
SDK) Amazon S3 Integrado com o AWS Mobile SDK Otimizado para SO nativos 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]; -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de multimídia • Armazenamento de dados • Lógica própria do aplicativo. Noticia publicada com sucesso Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis Amazon S3 -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Captura de dados do dispositivo App News • Armazenamento de multimídia • Armazenamento de dados • Lógica própria do aplicativo. Noticia publicada com sucesso Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis Amazon S3 AWS Lambda -
AWS Lambda Auto Scaling (nunca aprovisiona mais ou menos do
necessário) Foque-se na lógica do seu negocio, não na infraestrutura. Carregue o seu código e AWS Lambda faze o resto. Sem gerenciamento de infraestrutura Lambda escala a infraestrutura segundo seja necessário para acompanhar a quantidade de eventos e pagar somente pelo Traga o seu próprio código “Rode o seu código na nuvem, em resposta a eventos e escale sem gerenciar servidor nenhum” Inicialmente JavaScript, Python e Java, porém, mais linguagens no futuro. Crie threads e processos, rode scripts batch ou outros executáveis. -
Como utilizar um backend Lambda no seu aplicação móvel Inicialize
o LambdaFactory e defina a interface Chame a função Criem / Carreguem a função Lambda na console de gerenciamento da 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 }; -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis Amazon S3 AWS Lambda -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis Amazon S3 AWS Lambda Amazon CloudFront -
CloudFront (Content Delivery Network / CDN) • Rede de entrega
de conteúdo • Infraestrutura Global (55 pontos de presença) • Otimizada para alta performance • Escalabilidade massiva • Altamente segura • Self Service • Precificada para minimizar custo -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News Destaque: Noticia perto de você! Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis AWS Lambda Amazon S3 Amazon CloudFront -
Complexidades do backend • Gerenciamento de usuários • Armazenamento do
perfil • Acompanhamento de uso da app • Notificações ao usuário • Armazenamento de multimídia • Entrega de multimídia • Captura de dados do dispositivo • Armazenamento de dados • Lógica própria do aplicativo. App News Destaque: Noticia perto de você! Amazon Cognito AWS IAM Amazon Mobile Analytics Amazon DynamoDB Amazon Kinesis AWS Lambda Amazon S3 Amazon CloudFront Amazon SNS -
Amazon SNS Cross-Platform Mobile Push Internet Apple APNS Google GCM
Amazon ADM Windows WNS and MPNS Baidu CP Com o Amazon SNS, os desenvolvedores podem enviar push notifications para múltiplas plataformas e notificar usuários móveis no mundo todo Novas funcionalidades: Entrega de métricas via CloudWatch Chame funções Lambda desde notificações 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 -
AWS Mobile Services Amazon Cognito Amazon Mobile Analytics Amazon Identity
& Access Management Amazon S3 Transfer Manager Amazon Kinesis Recorder Amazon DynamoDB Object Mapper Amazon CloudFront AWS Lambda Amazon SNS Mobile Push USERS DATA MEDIA LOGIC MESSAGING Authenticate Users Authorize Users Analyze User Behavior Synchronize User Data Store Shared Data Capture Real-time Stream Data Store & Share Media Deliver Media Run Server-Side Business Logic Send Push Notifications AWS Identity & Access Management -
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. Teste o seu app em dispositivos reais na nuvem da AWS In minutes, view detailed, actionable reports that pinpoint bugs, performance problems, and other issues. YOUR APP + -
Custo e complexidade de testes efetivos Manter um laboratório de
aparelhos é um grande desafio. Manter a frota atualizada em HW e SW Testes manuais não são escaláveis Automação da frota é complexa 74 -
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