Desenvolvendo aplicacoes moveis com a Nuvem

Post on 11-Jun-2015

542 views 1 download

Transcript of Desenvolvendo aplicacoes moveis com a Nuvem

Desenvolvendo aplicações

Móveis com a Nuvem da AWS

José Papo

AWS Tech Evangelist

@josepapo

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 Uma em cada 4 apps móveis baixadas só é usada uma vez

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

Suportando as principais aplicações Móveis

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

In

stâ

ncia

s E

C2

5,000

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

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Infraestrutura Global

8 Regiões no Mundo

Conteúdo Dinâmico da

Aplicação Móvel

Amazon EC2 Servidores on-demand

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

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)

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!

APRENDA MAIS

SOBRE A NUVEM

awshub.com.br

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/

OBRIGADO! aws.typepad.com/brasil

slideshare.net/AmazonWebServicesLATAM

José Papo

AWS Tech Evangelist

@josepapo