Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Mobile Services

Julio Faerman
September 22, 2016

AWS Mobile Services

Como apresentado no AWS Summit Rio de Janeiro 2016

Julio Faerman

September 22, 2016
Tweet

More Decks by Julio Faerman

Other Decks in Technology

Transcript

  1. © 2016, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Julio Faerman @jmfaerman Construindo apps móveis com AWS Mobile Hub
  2. 1. As complexidades dos componentes do backend de um aplicativo

    móvel 2. As funcionalidades que fazem sua aplicação seja única
  3. Backend - Web Server + Controle - Escalabilidade - Alta

    disponibilidade - Pago por instancias
  4. Backend - API Gateway + Controle de acesso unificado +

    Pago por uso + Escalabilidade + Alta disponibilidade + Reuso do Backend
  5. 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
  6. Complexidades do backend • Gerenciamento de usuários • Armazenamento do

    perfil • Acompanhamento de uso da app App News
  7. Complexidades do backend • Gerenciamento de usuários • Armazenamento do

    perfil • Acompanhamento de uso da app App News • Armazenamento de dados
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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ê!
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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.
  24. 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);
  25. 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!
  26. Complexidades do backend • Gerenciamento de usuários • Armazenamento do

    perfil • Acompanhamento de uso da app Amazon Cognito AWS IAM Amazon Mobile Analytics
  27. 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.
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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);
  39. 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];
  40. 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
  41. 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
  42. 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.
  43. 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 };
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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 +
  52. 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
  53. 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