AWS @ QConSP 2015 Sem Servidores: Mobile Backendas-a-Service na plataforma AWS Fábio Silva e Henry Alvarado Arquitetos de Solução @ Amazon Web Services LATAM São Paulo, 27 de Março de 2015 © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Agenda Agenda • Amazon Web Services • Mobile Backend-as-a-Service (MBaaS) • Arquitetura MBaaS na AWS • Demo • Próximos Passos Amazon Web Services Infraestrutura Global A cada dia, a AWS adiciona capacidade computacional equivalente ao que era necessário para suportar a Amazon.com quando ela era um negócio de $7 bilhões Mais de 1 milhão de clientes ativos em mais de 190 países Mais de 800 agências governamentais Mais de 3,000 instituições educacionais 11 regiões 29 zonas de disponibilidade 52 pontos de presença O Diferencial da AWS Experiência Construindo e gerenciando nuvem desde 2006 Variedade de serviços Mais de 40 serviços para suportar qualquer workload Inovação Histórico de releases rápidos e orientados aos clientes Presença Global 11 regiões, 29 zonas, 52 pontos de presença Filosofia de Precificação 45 reduções proativas de preço até hoje Ecossistema Mais de 8,000 SIs e ISVs e 2,000 produtos no marketplace O Diferencial da AWS Enterprise Applications Virtual Desktops Analytics Collaboration and Sharing App Services Deployment & Management Queuing & Notifications Hadoop Mobile Services One-click web app deployment Identity Workflow Platform Services Real-time Streaming Data Data Warehouse Sync App streaming Dev/ops resource management Transcoding Mobile Analytics Email Data Pipelines Administration & Security Core Services Infrastructure Identity Management Search Access Control Compute Storage (VMs, Auto-scaling and Load Balancing) (Object, Block and Archival) Regions Push Notifications Resource Templates Usage Auditing CDN Availability Zones Monitoring and Logs Key Storage Databases Networking (Relational, NoSQL, Caching) (VPC, DX, DNS) Points of Presence Mobile Backend-as-a-Service (MBaaS) O Que é MBaaS? • Mobile Backend-as-a-Service • Modelo para provimento de serviços de backend via cloud para aplicações web e mobile • Notificações via push, integração com redes sociais, armazenamento, banco de dados, busca, etc. • Agilidade e desenvolvimento mais rápido (foco na aplicação e não em serviços de no backend) • Baixo custo e alta disponibilidade e escalabilidade • Menos Infraestrutura para manter (servidores, SO, web e app server, BD, storage, redes, etc.) Aplicações e Casos de Uso • • • • • Jogos, Apps de Live Score, Votação, etc. Aplicações Mobile Aplicações Web Aplicações Multi-plataforma Aplicações Híbridas (parte MBaaS e parte tradicional com servidores) • Aplicações 100% sem servidores Caso de Uso: Transição de Estado Perfil do usuário inicialmente como “anônimo” ou “guest” Caso de Uso: Transição de Estado Posterior registro da conta • A transição deveria ser tranquila Caso de Uso: Transição de Estado Múltiplas contas podem ser vinculadas ao mesmo perfil • Usuário deveria ter um identificador padronizado e único Caso de Uso: Estado em Jogos Arquitetura MBaaS na AWS Um Exemplo na AWS: Aplicação Sem Servidor, Backend 100% através de MBaaS • Nenhum servidor • Mini-CMS Web para cadastro de categorias e itens • Publicação (geração de versões estáticas das páginas para as múltiplas plataformas de visualização – Web Browser, Android e IOS) • Perfil do usuário (Favoritos) em datastore sincronizado entre as plataformas • Geração de Thumbnail, Busca, Notificações SNS e Analytics Sem MBaaS, o que seria necessário? • Webservers para entrega de conteúdo estático (i.e. nginx ou apache) • Application Servers para conteúdo dinâmico (i.e. tomcat ou jboss) • Banco de Dados (i.e. mysql ou mongodb) • Engine de Busca (i.e. solr ou elasticsearch) • Implementação de Datastore • Instalação e manutenção de toda essa infraestrutura! • Muito, mas muito mais código do que com serviços S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT COGNITO ROUTE 53 CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA MOBILE ANALYTICS END USER MOBILE (IOS) END USER MOBILE (ANDROID) AWS MOBILE SDK IOS DYNAMODB INDEXI NG END USER WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 CLOUDSEARCH COGNITO AWS MOBILE SDK ANDROID COGNITO SYNC STORE (FAVORITES) SNS COGNITO PUSH SYNC SEARC HING EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CMS CMS EDITOR WEB BROWSER CMS EDITOR WEB BROWSER AWS SDK JAVASCRIPT SDK Javascript AWS • Acesso aos serviços da AWS diretamente do browser • Não requer servidores • Fácil de instalar • Fácil de aprender (javascript!) • Login em redes sociais com Cognito • Dados persistentes com Dynamodb • Armazenamento de arquivos com o S3 • Suporte a todos os browser modernos SDK Mobile AWS • Mecanismo comum de autenticação entre diversas plataformas • Tratamento automático de intermitências de rede • Suporte a múltiplas plataformas: Android, IOS, Unity e FireOS • SDKs nativos otimizados para OS móvel, como por exemplo, através do uso de arquitetura local para cache offline • Footprint de memória otimizado; Escolha e use apenas os jars que necessitar Outros SDKs AWS AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS EDITOR WEB BROWSER Route 53 • Serviço de DNS altamente disponível e escalável. • Tradução de nome para IP com excelente custo benefício. • Múltiplos tipos de roteamento: • • • • Roteamento Baseado em Latência. Geo DNS. Round Robin por Peso. DNS Failover com healthchecks. • Registro de domínio (compra de domínios). • Pode ser usado também para redirecionar usuários para infraestrutura fora da AWS. EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS CLOUDFRONT CloudFront (Content Delivery Network / CDN) • • • • • • • Rede de entrega de conteúdo Infraestrutura Global (52 pontos de presença) Otimizada para alta performance Escalabilidade massiva Altamente segura Self Service Precificada para minimizar custo CloudFront (Content Delivery Network / CDN) • • • • • • • Arquivos estáticos Media e Entretenimento Jogos eCommerce Publicidade Digital Downloads de Softwares Websites Dinâmicos e Aplicações EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS CLOUDFRONT S3 S3 (Simple Storage Service) • • • • • Armazenamento de objetos acessível via Web Pague exatamente e apenas pelo que usar Altamente durável (desenhado para 99.999999999%) Escalabilidade virtualmente ilimitada Nativamente online S3 (Simple Storage Service) • • • • Objetos armazenados no S3 são URLs Transfira o trabalho de servir arquivos estáticos para o Amazon S3 Redução de uso de disco físico Características: • • • • • I/O paralelizado para máxima velocidade Permissões a nível de recursos via IAM Listas de controle e políticas de acesso Envio direto das aplicações ao S3 Criptografia server-side S3 Code Snippet (Javascript) var bucket = new AWS.S3({ params : { Bucket : 'pairarchitecture' } }); var fileChooser = document.getElementById('add-file-chooser'); var file = fileChooser.files[0]; Var fileName = file.name.toLowerCase(); var params = { Key : 'images/' + fileName, ContentType : file.type, Body : file }; bucket.upload(params, function(err, data) { ... }); EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS CLOUDFRONT S3 S3 AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS CLOUDFRONT COGNITO Cognito (Autenticação e Data Store) “Dados da sua aplicação seguros, disponíveis offline e sincronizados entre diferentes dispositivos” Sincronização Crossdevice e Crossplataforma Simplifica o gerenciamento de acesso e identidades Implementa melhores práticas de segurança Guest Sua própria Autenticação Sincroniza dados do usuário entre as plataformas e dispositivos Gerencia usuários com identidade única entre diferentes provedores Acesso seguro a todos os serviços da AWS Cognito Code Snippet (Javascript) var params = { AccountId : "98XXXXXX48490", RoleArn : "arn:aws:iam::982433XXXXXX90:role/Cognito_pairarchitecturecmsAuth_Role", IdentityPoolId : "us-east-1:4eXXXXXX40-16df-4ad8-a55f-c0a68616e585", Logins : { 'graph.facebook.com' : response.authResponse.accessToken } }; AWS.config.region = 'us-east-1'; AWS.config.credentials = new AWS.CognitoIdentityCredentials(params); AWS.config.credentials.get(function(err) { if (!err) { console.log("Cognito Identity Id: ” + AWS.config.credentials.identityId); } }); S3 AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS CLOUDFRONT COGNITO CATEGORIES AND ITEMS CREATION DYNAMODB DynamoDB Serviço de banco NoSQL em nuvem • Não-relacional • Performance previsível • Escalabilidade sem esforço • Fácil administração DynamoDB Code Snippet (Javascript) var db = new AWS.DynamoDB(); var params = { KeyConditions : { category_name : { ComparisonOperator : 'EQ', AttributeValueList : [ { S : ‘Categoria1’ } ] } }, TableName : 'pairarchitecture_items', ConsistentRead : true }; db.query(params, function(err, data) { ... }); S3 AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS CLOUDFRONT COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA Lambda “Execute funções stateless na nuvem e escale automaticamente sem ter de gerenciar nenhum servidor” Nenhuma Administração Foco na lógica do negócio, não na infraestrutura. Suba seu código e deixe o Lambda fazer o resto. Escalabilidade automática Lambda escala a infraestrutura conforme necessário e você paga conforme usa Traga seu próprio Código Lamba está começando com Javascript (node.js), mas em breve teremos suporte a outras linguagens. Lambda Back-end sem servidor Gatilhos a partir de Dados IoT Processamento de Streams de dados Indexação & sincronização Lambda Code Snippet (Node.js) var var var var var aws = require('aws-sdk'); AWS_REGION = "us-east-1"; CLOUDSEARCH_DOC_ENDPOINT = "doc-mbaasdemo- ... cloudsearch.amazonaws.com"; sdf1; params = {query: '-foobar’, size: 10000}; exports.handler = function(event, context) { csd = new aws.CloudSearchDomain({endpoint: CLOUDSEARCH_DOC_ENDPOINT,region: AWS_REGION}); csd.search(params, function(err, data) { data.hits.hit.forEach (function(item, index) { sdf1.push({type: "delete", id: item.id}); }); }); csd.uploadDocuments({documents: JSON.stringify(sdf1),contentType: "application/json"}, function(err, data){ if (err) { console.log("Error Deleting Documents: ” + err); }); }); } Lambda Code Snippet (Javascript) var lambda = new AWS.Lambda(); thumb = fileName.split(".")[0] + "_thumb." + fileName.split(".")[1]; var params = { FunctionName : 'ThumbCreator', InvokeArgs : "{\"bucket\":\"pairarchitecture\",\"key\":\"" + "images/" + fileName + "\"}” }; lambda.invokeAsync(params, function(err, data) { ... }); S3 CLOUDFRONT AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS THUMBNAILS COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA S3 CLOUDFRONT AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS THUMBNAILS COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING LAMBDA S3 CLOUDFRONT AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS THUMBNAILS COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING LAMBDA S3 CLOUDFRONT AUTH EDITOR WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 BACKEND (MBaaS) CMS THUMBNAILS COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) CMS THUMBNAILS CLOUDSEARCH CloudSearch • Engine de Busca 100% gerenciada • Fácil setup e operação • Escalável • Confiável • Alta Performance • Não tenha mais que adivinhar capacidade • Funcionalidades • • Busca facetada, sugestões, relevância, busca geo-localizada, suporte a multilíngua, etc. Custo • Pague apenas aquilo que utilizar S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH S3 CLOUDFRONT AUTH END USER WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH S3 CLOUDFRONT AUTH END USER WEB BROWSER AWS SDK JAVASCRIPT AWS SDK JAVASCRIPT ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH S3 CLOUDFRONT AUTH END USER WEB BROWSER AWS SDK JAVASCRIPT AWS SDK JAVASCRIPT ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS END USER MOBILE (IOS) CLOUDSEARCH S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH AWS MOBILE SDK ANDROID S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) ROUTE 53 COGNITO DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS ROUTE 53 CLOUDSEARCH AWS MOBILE SDK ANDROID S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS ROUTE 53 CLOUDSEARCH AWS MOBILE SDK ANDROID S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS ROUTE 53 CLOUDSEARCH AWS MOBILE SDK ANDROID S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS ROUTE 53 CLOUDSEARCH AWS MOBILE SDK ANDROID S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA ROUTE 53 COGNITO AWS MOBILE SDK ANDROID DYNAMODB INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH Cognito Code Snippet (Android) private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CognitoSyncClientManager.init(this); } private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (state.equals(SessionState.OPENED)) { setFacebookSession(session); } } private void setFacebookSession(Session session) { CognitoSyncClientManager.addLogins("graph.facebook.com”, session.getAccessToken()); } S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA ROUTE 53 COGNITO AWS MOBILE SDK ANDROID DYNAMODB INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS CLOUDSEARCH S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA ROUTE 53 COGNITO AWS MOBILE SDK ANDROID DYNAMODB INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS COGNITO SYNC STORE (FAVORITES) SNS COGNITO PUSH SYNC CLOUDSEARCH SNS (Simple Notification Service) iOS Celulares e Tablets Apple Apple APNS Celulares e Tablets Android Google GCM Baidu CP Internet Amazon SNS Mobile Push Crossplataforma Amazon ADM Windows WNS e MPNS Dispositivos Kindle Dispositivos Windows Desktop e Windows Phone Com o Amazon SNS, desenvolvedores podem mandar notificações push para múltiplas plataformas e usuários mobile ao redor do mundo S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT END USER WEB BROWSER AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) COGNITO ROUTE 53 CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA ROUTE 53 COGNITO AWS MOBILE SDK ANDROID DYNAMODB INDEXI NG EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS COGNITO SYNC STORE (FAVORITES) SNS COGNITO PUSH SYNC CLOUDSEARCH S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT AWS SDK JAVASCRIPT END USER MOBILE (IOS) AWS MOBILE SDK IOS END USER MOBILE (ANDROID) DYNAMODB CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA INDEXI NG END USER WEB BROWSER COGNITO ROUTE 53 ROUTE 53 CLOUDSEARCH COGNITO AWS MOBILE SDK ANDROID COGNITO SYNC STORE (FAVORITES) SNS COGNITO PUSH SYNC SEARC HING EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS S3 CLOUDFRONT AUTH AWS SDK JAVASCRIPT COGNITO ROUTE 53 CATEGORIES AND ITEMS CREATION LAMBDA CALL FOR THUMBNAIL CREATION LAMBDA CALL FOR JSON + HTML PUBLISHING AND INDEXING CLOUDFRONT S3 JSON + HTML THUMBNAILS LAMBDA MOBILE ANALYTICS END USER MOBILE (IOS) END USER MOBILE (ANDROID) AWS MOBILE SDK IOS DYNAMODB INDEXI NG END USER WEB BROWSER AWS SDK JAVASCRIPT ROUTE 53 CLOUDSEARCH COGNITO AWS MOBILE SDK ANDROID COGNITO SYNC STORE (FAVORITES) SNS COGNITO PUSH SYNC SEARC HING EDITOR WEB BROWSER BACKEND (MBaaS) FRONTEND CMS THUMBNAILS Mobile Analytics “Fácil de coletar, visualizar e interpretar os dados de uso da sua aplicação mobile em larga escala” Rápido Foco em métricas que importam. Relatórios de utilização disponíveis a cada 60 minutos a partir do recebimento dos dados Free Tier escalável e generoso Escale até bilhões de eventos por dia partir de milhões de usuários Tome posse dos seus dados Dados coletados não são compartilhados, agregados ou reutilizados. Demo Próximos passos Comece a usar sem pagar aws.amazon.com/free/ Blogs https://aws.amazon.com/blogs/aws/ http://aws.typepad.com/brasil/ http://blogs.aws.amazon.com/application-management http://blogs.aws.amazon.com/php/ http://blogs.aws.amazon.com/net/ http://ruby.awsblog.com/ http://mobile.awsblog.com/ http://java.awsblog.com/ http://blogs.aws.amazon.com/security/ https://medium.com/aws-activate-startup-blog https://blogs.aws.amazon.com/bigdata/ https://aws.amazon.com/blogs/apn/ https://aws.amazon.com/blogs/compute/ http://sesblog.amazon.com/ Documentações (Getting Started) Amazon Route53: http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html Amazon CloudFront: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.html Amazon S3: http://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html Amazon Cognito http://aws.amazon.com/documentation/cognito/ Amazon DynamoDB http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamo DB.html AWS Lambda http://docs.aws.amazon.com/lambda/latest/dg/getting-started.html Amazon CloudSerach http://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started.html Amazon SNS http://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html Obrigado! Fábio Silva [email protected] Henry Alvarado [email protected]