Desenvolvendo aplicações móveis na Nuvem

51
Desenvolvendo aplicações Móveis na Nuvem da AWS José Papo AWS Tech Evangelist @josepapo

description

Slides da apresentação sobre desenvolvimento móvel utilizando a Nuvem para processamento e storage de dados.

Transcript of Desenvolvendo aplicações móveis na Nuvem

Page 1: Desenvolvendo aplicações móveis na Nuvem

Desenvolvendo aplicações

Móveis na Nuvem da AWS

José Papo

AWS Tech Evangelist

@josepapo

Page 2: Desenvolvendo aplicações móveis na Nuvem

Suportando as principais aplicações Móveis

Page 3: Desenvolvendo aplicações móveis na 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 4: Desenvolvendo aplicações móveis na Nuvem
Page 5: Desenvolvendo aplicações móveis na Nuvem
Page 6: Desenvolvendo aplicações móveis na Nuvem

O problema Onde hospedar os dados

de meus usuários?

Page 7: Desenvolvendo aplicações móveis na Nuvem

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

Page 8: Desenvolvendo aplicações móveis na Nuvem

O que realmente

precisamos é…

…capacidade ajustável

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

6/

Page 9: Desenvolvendo aplicações móveis na Nuvem
Page 10: Desenvolvendo aplicações móveis na 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 I

nstâ

ncia

s E

C2

5,000

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

Page 11: Desenvolvendo aplicações móveis na Nuvem

Conteúdo Dinâmico da

Aplicação Móvel

Page 12: Desenvolvendo aplicações móveis na Nuvem

Amazon EC2 Servidores on-demand

Page 13: Desenvolvendo aplicações móveis na Nuvem

Precificação por

hora

Page 14: Desenvolvendo aplicações móveis na 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 aplicações móveis na Nuvem

Bancos de Dados Relacional e NoSQL

Page 16: Desenvolvendo aplicações móveis na Nuvem

Opções de Bancos de Dados

Relacional NoSQL

Page 17: Desenvolvendo aplicações móveis na Nuvem

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

Page 18: Desenvolvendo aplicações móveis na Nuvem

Conteúdo Estático da

Aplicação Móvel

Page 19: Desenvolvendo aplicações móveis na Nuvem

Amazon S3 Armazenamento Elástico

Page 20: Desenvolvendo aplicações móveis na 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 21: Desenvolvendo aplicações móveis na Nuvem

1b Tb

Page 22: Desenvolvendo aplicações móveis na Nuvem

SLA

99,999999999%

Durabilidade

Page 23: Desenvolvendo aplicações móveis na Nuvem
Page 24: Desenvolvendo aplicações móveis na Nuvem

Amazon S3

Page 25: Desenvolvendo aplicações móveis na Nuvem
Page 26: Desenvolvendo aplicações móveis na Nuvem

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

Page 27: Desenvolvendo aplicações móveis na Nuvem

Locais Edge AWS (CloudFront & Route 53)

Page 28: Desenvolvendo aplicações móveis na Nuvem
Page 29: Desenvolvendo aplicações móveis na Nuvem

Benefícios da Nuvem

para aplicações móveis

Page 30: Desenvolvendo aplicações móveis na Nuvem

Aberta e flexível

Sistemas Operacionais Linguagens e Bibliotecas Aplicações Certificadas

Page 31: Desenvolvendo aplicações móveis na Nuvem

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)

Page 32: Desenvolvendo aplicações móveis na Nuvem
Page 33: Desenvolvendo aplicações móveis na Nuvem
Page 34: Desenvolvendo aplicações móveis na Nuvem

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

Page 35: Desenvolvendo aplicações móveis na Nuvem

Exemplos de aplicações

móveis na Nuvem

Page 36: Desenvolvendo aplicações móveis na Nuvem

SDKs para os principais smartphones

REST

SOAP

Page 37: Desenvolvendo aplicações móveis na Nuvem
Page 38: Desenvolvendo aplicações móveis na 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 39: Desenvolvendo aplicações móveis na Nuvem
Page 40: Desenvolvendo aplicações móveis na 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 41: Desenvolvendo aplicações móveis na Nuvem
Page 42: Desenvolvendo aplicações móveis na 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 43: Desenvolvendo aplicações móveis na Nuvem
Page 44: Desenvolvendo aplicações móveis na 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 45: Desenvolvendo aplicações móveis na Nuvem
Page 46: Desenvolvendo aplicações móveis na Nuvem
Page 47: Desenvolvendo aplicações móveis na Nuvem

Nuvem é Democracia!

Page 48: Desenvolvendo aplicações móveis na Nuvem

Nuvem é Liberdade!

Page 49: Desenvolvendo aplicações móveis na Nuvem

OFERTA

GRATUITA! aws.amazon.com/pt/free

Page 50: Desenvolvendo aplicações móveis na Nuvem

OBRIGADO! aws.typepad.com/brasil

slideshare.net/jpapo

José Papo

AWS Tech Evangelist

@josepapo

Page 51: Desenvolvendo aplicações móveis na Nuvem