Desenvolvendo aplicações móveis na Nuvem

Post on 15-Jan-2015

1.140 views 2 download

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

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