1 Desenvolvendo para Dispositivos Móveis Luiz Miranda Programas & Soluções Informática.
Desenvolvendo aplicações móveis na Nuvem
-
Upload
jose-papo -
Category
Technology
-
view
1.139 -
download
2
description
Transcript of Desenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações
Móveis na Nuvem da AWS
José Papo
AWS Tech Evangelist
@josepapo
Suportando as principais aplicações Móveis
5 bilhões de celulares no mundo
Mais de 1 milhão de apps nas App Stores
32 bilhões de apps serão baixadas em 2012
50 bilhões de dólares em apps e músicas
O problema Onde hospedar os dados
de meus usuários?
Infraestrutura Tradicional é Cara e Complexa
Negociação de Contratos
Provedores Lentos para Atender a Demanda de Infra
Instalação de Patches
Data Center sem Espaço
Preços Altos para Infraestrutura de TI
Implantações Demoradas
Altos Investimentos de Capital
Recursos de TI com Baixa Utilização
Falta de foco no negócio
Gerenciar Crescimento Físico
“TI gasta 80% de seu tempo e recursos mantendo as luzes acesas”
Gartner Press Release, 2006
O que realmente
precisamos é…
…capacidade ajustável
http://www.flickr.com/photos/purecaffeine/30268245
6/
Escalabilidade simples e automática
App de Vídeos com Amazon EC2:
De 50 a 5,000 servidores em 3 dias! N
úm
ero
de I
nstâ
ncia
s E
C2
5,000
0 Segunda Terça Quarta Quinta Sexta Sábado Domingo
Conteúdo Dinâmico da
Aplicação Móvel
Amazon EC2 Servidores on-demand
Precificação por
hora
Exemplo
Servidor Micro On-demand 100% - A partir de 15 dólares
Reservado 100% - A partir de 6,5 dólares
Bancos de Dados Relacional e NoSQL
Opções de Bancos de Dados
Relacional NoSQL
Modelos de Bancos de Dados
Banco de Dados no
Amazon EC2
Sua escolha de software
de banco de dados
Bring Your Own License
(BYOL)
Amazon Relational
Database Service (RDS)
Oracle ou MySQL
oferecidos como serviço
Licenciamento Flexível:
BYOL ou Licença Incluída
Amazon DynamoDB
NoSQL
Modelo não relacional
Overhead zero de
administração
Auto-gestão Database as a Service
Conteúdo Estático da
Aplicação Móvel
Amazon S3 Armazenamento Elástico
Q4 2007 Q4 2008 Q4 2009 Q4 2010 Q4 2011 Q2 2012
14 Bilhões 40 Bilhões
102 Bilhões
262 Bilhões
762 Bilhões
Crescimento do Amazon S3 Número de Objetos Armazenados no Amazon S3 1
Trilhão
1b Tb
SLA
99,999999999%
Durabilidade
Amazon S3
Amazon CloudFront Rede de Distribuição de Conteúdo Flexível
Locais Edge AWS (CloudFront & Route 53)
Benefícios da Nuvem
para aplicações móveis
Aberta e flexível
Sistemas Operacionais Linguagens e Bibliotecas Aplicações Certificadas
Infraestrutura Global
US West (Northern
California)
US East (Northern
Virginia)
EU (Ireland)
Asia
Pacific (Singapore)
Asia
Pacific (Tokyo)
Regiões AWS
Pontos Edge AWS
GovCloud (US ITAR
Region)
US West (Oregon)
South
America (Sao Paulo)
Construída com altos padrões de segurança
Infraestrutura de Segurança AWS
SOC 1/SSAE 16/ISAE 3402,
ISO 27001, PCI DSS, HIPAA, ITAR,
FISMA Moderate, FIPS 140-2
Suas
Apps
Exemplos de aplicações
móveis na Nuvem
SDKs para os principais smartphones
REST
SOAP
DynamoDBKeySchemaElement *kse = [[[DynamoDBKeySchemaElement alloc]
initWithAttributeName:@"userNo"
andAttributeType:@"N"] autorelease];
DynamoDBKeySchema *ks = [[[DynamoDBKeySchema alloc]
initWithHashKeyElement:kse] autorelease];
DynamoDBProvisionedThroughput *pt = [[[DynamoDBProvisionedThroughput alloc] init]
autorelease];
pt.readCapacityUnits = [NSNumber numberWithInt:10];
pt.writeCapacityUnits = [NSNumber numberWithInt:5];
DynamoDBCreateTableRequest *request = [[DynamoDBCreateTableRequest alloc]
initWithTableName:TEST_TABLE_NAME
andKeySchema:ks
andProvisionedThroughput:pt];
DynamoDBCreateTableResponse *response = [[AmazonClientManager ddb]
createTable:request];
[request release];
AmazonDynamoDBClient ddb = UserPreferenceDemoActivity.clientManager.ddb();
KeySchemaElement kse = new KeySchemaElement().withAttributeName(
"userNo").withAttributeType(ScalarAttributeType.N);
KeySchema ks = new KeySchema().withHashKeyElement(kse);
ProvisionedThroughput pt = new ProvisionedThroughput()
.withReadCapacityUnits(10l).withWriteCapacityUnits(5l);
CreateTableRequest request = new CreateTableRequest()
.withTableName(PropertyLoader.getInstance().getTestTableName())
.withKeySchema(ks).withProvisionedThroughput(pt);
ddb.createTable(request);
RegisterDeviceRequest registerDeviceRequest = new RegisterDeviceRequest(
this.endpoint, this.useSSL, uid, key);
ResponseHandler handler = new ResponseHandler();
response = this.processRequest(registerDeviceRequest, handler);
if (response.requestWasSuccessful()) {
AmazonSharedPreferencesWrapper.registerDeviceId(
this.sharedPreferences, uid, key);
}
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];
AmazonS3Client *s3 = [[[AmazonS3Client alloc]
initWithAccessKey:MY_ACCESS_KEY_ID withSecretKey:MY_SECRET_KEY]
autorelease];
S3PutObjectRequest *por = [[[S3PutObjectRequest alloc]
initWithKey:MY_PICTURE_NAME inBucket:MY_PICTURE_BUCKET] autorelease];
por.contentType = @"image/jpeg";
por.data = imageData;
[s3 putObject:por];
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, PHOTO_SELECTED);
AmazonS3Client s3Client = new AmazonS3Client( new BasicAWSCredentials(
MY_ACCESS_KEY_ID, MY_SECRET_KEY ) );
PutObjectRequest por = new PutObjectRequest( Constants.getPictureBucket(),
Constants.PICTURE_NAME, new java.io.File( filePath) );
s3Client.putObject( por );
Nuvem é Democracia!
Nuvem é Liberdade!
OFERTA
GRATUITA! aws.amazon.com/pt/free
OBRIGADO! aws.typepad.com/brasil
slideshare.net/jpapo
José Papo
AWS Tech Evangelist
@josepapo