Desenvolvimento de aplicações para Cloud Computing · logarítmicas (lembre-se da lenda do jogo...
-
Upload
truongminh -
Category
Documents
-
view
213 -
download
0
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
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
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
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…
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