Desenvolvendo aplicacoes moveis com a Nuvem

47
Desenvolvendo aplicações Móveis com a Nuvem da AWS José Papo AWS Tech Evangelist @josepapo

Transcript of Desenvolvendo aplicacoes moveis com a Nuvem

Page 1: Desenvolvendo aplicacoes moveis com a Nuvem

Desenvolvendo aplicações

Móveis com a Nuvem da AWS

José Papo

AWS Tech Evangelist

@josepapo

Page 2: Desenvolvendo aplicacoes moveis com a Nuvem

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

Page 3: Desenvolvendo aplicacoes moveis com a Nuvem
Page 4: Desenvolvendo aplicacoes moveis com a Nuvem
Page 5: Desenvolvendo aplicacoes moveis com a Nuvem

O problema Uma em cada 4 apps móveis baixadas só é usada uma vez

Page 6: Desenvolvendo aplicacoes moveis com a Nuvem

Como melhorar suas chances?

Recursos sociais como leaderboards, achievements, troféus, etc

Integração com outros serviços e geolocalização

Personalização de conteúdo e preferências do usuário

Page 7: Desenvolvendo aplicacoes moveis com a Nuvem

Suportando as principais aplicações Móveis

Page 8: Desenvolvendo aplicacoes moveis com a Nuvem
Page 9: Desenvolvendo aplicacoes moveis com a Nuvem

O que realmente

precisamos é…

…capacidade ajustável

http://www.flickr.com/photos/purecaffeine/30268245

6/

Page 10: Desenvolvendo aplicacoes moveis com a Nuvem

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

In

stâ

ncia

s E

C2

5,000

0 Segunda Terça Quarta Quinta Sexta Sábado Domingo

Page 11: Desenvolvendo aplicacoes moveis com a Nuvem

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Infraestrutura Global

8 Regiões no Mundo

Page 12: Desenvolvendo aplicacoes moveis com a Nuvem

Conteúdo Dinâmico da

Aplicação Móvel

Page 13: Desenvolvendo aplicacoes moveis com a Nuvem

Amazon EC2 Servidores on-demand

Page 14: Desenvolvendo aplicacoes moveis com a Nuvem

Exemplo

Servidor Micro On-demand 100% - A partir de 15 dólares

Reservado 100% - A partir de 6,5 dólares

Page 15: Desenvolvendo aplicacoes moveis com a Nuvem

Bancos de Dados Relacional e NoSQL

Page 16: Desenvolvendo aplicacoes moveis com a Nuvem

Opções de Bancos de Dados

Relacional NoSQL

Page 17: Desenvolvendo aplicacoes moveis com a Nuvem

Conteúdo Estático da

Aplicação Móvel

Page 18: Desenvolvendo aplicacoes moveis com a Nuvem

Amazon S3 Armazenamento Elástico

Page 19: Desenvolvendo aplicacoes moveis com a Nuvem

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

Page 20: Desenvolvendo aplicacoes moveis com a Nuvem

1b Tb

Page 21: Desenvolvendo aplicacoes moveis com a Nuvem

SLA

99,999999999%

Durabilidade

Page 22: Desenvolvendo aplicacoes moveis com a Nuvem
Page 23: Desenvolvendo aplicacoes moveis com a Nuvem

Amazon S3

Page 24: Desenvolvendo aplicacoes moveis com a Nuvem
Page 25: Desenvolvendo aplicacoes moveis com a Nuvem

Amazon CloudFront Rede de Distribuição de Conteúdo Flexível

Page 26: Desenvolvendo aplicacoes moveis com a Nuvem

Locais Edge AWS (CloudFront & Route 53)

Page 27: Desenvolvendo aplicacoes moveis com a Nuvem
Page 28: Desenvolvendo aplicacoes moveis com a Nuvem

Exemplos de aplicações

móveis na Nuvem

Page 29: Desenvolvendo aplicacoes moveis com a Nuvem
Page 30: Desenvolvendo aplicacoes moveis com a Nuvem
Page 31: Desenvolvendo aplicacoes moveis com a Nuvem

SDKs para os principais smartphones

REST

SOAP

Page 32: Desenvolvendo aplicacoes moveis com a Nuvem
Page 33: Desenvolvendo aplicacoes moveis com a Nuvem

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];

Page 34: Desenvolvendo aplicacoes moveis com a Nuvem
Page 35: Desenvolvendo aplicacoes moveis com a Nuvem

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);

}

Page 36: Desenvolvendo aplicacoes moveis com a Nuvem
Page 37: Desenvolvendo aplicacoes moveis com a Nuvem

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];

Page 38: Desenvolvendo aplicacoes moveis com a Nuvem
Page 39: Desenvolvendo aplicacoes moveis com a Nuvem

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 );

Page 40: Desenvolvendo aplicacoes moveis com a Nuvem
Page 41: Desenvolvendo aplicacoes moveis com a Nuvem
Page 42: Desenvolvendo aplicacoes moveis com a Nuvem

Nuvem é Democracia!

Page 43: Desenvolvendo aplicacoes moveis com a Nuvem

Nuvem é Liberdade!

Page 44: Desenvolvendo aplicacoes moveis com a Nuvem

APRENDA MAIS

SOBRE A NUVEM

awshub.com.br

Page 45: Desenvolvendo aplicacoes moveis com a Nuvem

Dev Portal AppStore

• Distribuição de apps para o Brasil:

– Apps podem ter título, descrição, screenshots e release notes em português;

– Royalties serão pagos em Reais para vendas no mercado Brasileiro;

– O processo de publicação é simples!

• Confira:

https://developer.amazon.com/

Page 46: Desenvolvendo aplicacoes moveis com a Nuvem

OBRIGADO! aws.typepad.com/brasil

slideshare.net/AmazonWebServicesLATAM

José Papo

AWS Tech Evangelist

@josepapo

Page 47: Desenvolvendo aplicacoes moveis com a Nuvem