Desenvolvimento de aplicações para Cloud Computing · logarítmicas (lembre-se da lenda do jogo...

18
Desenvolvimento de aplicações para Cloud Computing Preparado por Intel Corporation Bruno Domingues Principal Architect [email protected]

Transcript of Desenvolvimento de aplicações para Cloud Computing · logarítmicas (lembre-se da lenda do jogo...

Desenvolvimento de aplicações para

Cloud Computing

Preparado por

Intel Corporation

Bruno Domingues – Principal Architect

[email protected]

Introdução

Escher– Unbelievable

Planejamento de Capacidade

Revisão da Literatura

A “equação” do planejamento de capacidade

Usuários

Aplicação

Planejamento de

Capacidade

Infraestrutura

A x I = n x R x U

A = Aplicação

I = Infraestrutura

n = expectativa de sucesso

R = constante

U = Usuários

Ambiente tradicional

Usuários

Aplicação

Planejamento de

Capacidade

Provedor de nuvem

Ambiente de nuvem

Aplicação precise ser ajustada

Infraestrutura é completamente

terceirizada

Entendendo o Usuário

Michelangelo – A aliança entre Deus e os homens

Requisições de Acesso – situação hipotética

Entender a distribuição de

demanda sobre o sistema na

linha do tempo é o primeiro

passo.

Equação da curva de Gauss (σ = desvio padrão,

µ = média aritmética)

Hits por hora Horário

50 6:00

100 7:00

1100 8:00

2000 9:00

500 10:00

185 11:00

50 12:00

10 13:00

5 14:00

Total de usuários: 4000

x: 2000

média (µ): 444.444

desvio padrão (α): 682.969

Normal (y): 0.98863

hits/seg: 1.22053

Concorrência de Acesso – situação hipotética

Distribuição de probabilidade de Poisson

Assumindo que a pior situação

haja 2.000 usuários acessando o

sistema em um período de 1h,

não significa que haja 0,55

requisições/segundo (ex. 2000

usuários/3600 segundos)

A maior probabilidade é que

se tenha que lidar com 2

requisições simultâneas em

intervalos de 0,5 segundos.

O conhecimento do usuário permite ao desenvolvedor programar sua aplicação para alocar e liberar instâncias de acordo com a necessidade, evitando gastos

desnecessários, já que custo na nuvem é por uso.

Ferramentas…

Microsoft Excel, R, Maple, Matlab, etc…

Simplicidade…

É possível extrapolar, simular e prever o comportamento somente usando Excel

Desenhando a Aplicação

• Capacidades da

Aplicação

• Aplicações do Mundo

Real

Um novo jogo…

1. Stateless

2. Suportar falhas de servidores

3. Base de dados na nuvem é um outro “animal”

4. Latências…

Com os velhos problemas…

• Concorrência por recursos:

• Escrita de logs

• Componentes – vários

• Recursos externos

• Alocação de recursos:

• Alocação de buffer sem sua respectiva liberação – fragmentação de

memória

• Alocação cedo de recursos e liberação tardia – problemas de

concorrência

… alguns diferentes Banco de Dados relacionais não fazem sentido em um mundo

stateless, diga adeus às Store Procedures, Integridade referencial

e que seja bem vindo o Persistence Data Engine

Stateless

Capacidade elástica é alcançada com escalabilidade

horizontal

1,0

1,8

2,5

3,2

3,8 4,3

4,7 5,2

5,6 5,9

6,2 6,5

6,7 7,0 7,2 7,4 7,5 7,7 7,8 7,9 8,0 8,1 8,2 8,3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Des

em

pe

nh

o R

ela

tivo

Escalabilidade SMP (Servidor Web)

Nesta situação fictícia, 16 núcleos físicos entregam desempenho

relativo de 7,4 cores, com eficiência de 0,46

Comportamento logarítmico (i.e. ln)

Escalabilidade no mundo virtual

1,0

1,8 2,5

3,2 3,8

4,3 4,7

5,2 5,6

5,9 6,2 6,5 6,7 7,0 7,2 7,4 7,5 7,7 7,8 7,9 8,0 8,1 8,2 8,3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

De

se

mp

en

ho

Re

lati

vo

Escalabilidade SMP (Servidor Web)

4 núcleos físicos,

representam

desempenho

relativo de 3,2

núcleos e 0,8 de

eficiência

Desempenho Relativo

7,4 < 4 x (3,2 x Δ)

4 máquinas virtuais e Δ é o

overhead [0 ≤ Δ ≤ 1] 1 máquina física com 16

núcleos

Escalabilidade sub-linear, i.e. > ln

Corolário

“Axioma”: Aplicação precisa ser stateless

Corolário: A aplicação é resistente a falha de servidores…

O fator “tempo” - latência

Salvador Dali – The Garden of Hours, 1981

Sua aplicação

Login ~ x seg

Pagamento ~ y seg Localização

~ z seg

backgroud ~ w seg

Carrega Foto

(Instagram)

Login (Facebook)

Localização (Google Maps)

Pagamento (Paypal)

Capacidades da Aplicação

Aplicação do LT (λ=taxa de requisição de Poisson, μ=capacidade de

processamento de requisições, p=λ/μ

).

Sumário

• Não é necessário ser um expert em matemática/estatística

para fazer planejamento de capacidade, porém entender a

natureza e o comportamento dos componentes da solução

sob carga e concorrência, são essenciais – na nuvem

também;

• Não se deixe enganar por funções exponenciais e

logarítmicas (lembre-se da lenda do jogo de Xadrez)

• Não se apegue demais aos números, saiba quando usar os

números e “inferir” quando não os tiverem – isso acontece

sempre

“Toda família feliz se parece, toda família

infeliz, é infeliz ao seu próprio modo”

Tolstoi – Anna Karenina