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]