O documento discute padrões para computação em nuvem. Apresenta dois padrões: (1) usar a nuvem para escalar dinamicamente e (2) usar a nuvem para soluções multi-inquilinos. O padrão 1 explica como usar roles na nuvem para adicionar recursos conforme a demanda aumenta. O padrão 2 discute três opções para armazenar dados para vários clientes, incluindo um esquema fixo com customizações.
10. Responder estas questões pode ser difícil
Várias definições de vários
fornecedores
Pode ser difícil descrever como usar
computação em nuvem
Como manter atualizando com
tanta mudança
12. Objetivos desta sessão
Explorar a definição de computação
em nuvem
5 Patterns para computação em
nuvem
Como implementar estes patterns
no Windows Azure
24. Definindo computação em nuvem
Application runs
on-premises
Buy my own
hardware, and
manage my own
data center
Aplicação roda
localmente
• Monta seu
ambiente,
conectividade,
software, etc.
• Controle completo
e responsabilidade
• Investimento inicial
25. Definindo computação em nuvem
Application runs
on-premises
Buy my own
hardware, and
manage my own
data center
Application runs at a
hoster
Pay someone to
host my application
using hardware that
I specify
Aplicação roda
localmente
• Monta seu
ambiente,
conectividade,
software, etc.
• Controle completo
e responsabilidade
• Investimento inicial
Aplicação roda em
hoster
• Aluga máquinas,
conectividade,
software
• Menos controle,
mas também
menos
responsabilidade
• Paga o valor fixo
mensalmente
26. Definindo computação em nuvem
Application runs
on-premises
Buy my own
hardware, and
manage my own
data center
Application runs at a
hoster
Pay someone to
host my application
using hardware that
I specify
Application runs using
cloud platform
Pay someone for a
pool of computing
resources that can
be applied to a set
of applications
Aplicação roda
localmente
• Monta seu
ambiente,
conectividade,
software, etc.
• Controle completo
e responsabilidade
• Investimento inicial
Aplicação roda em
hoster
• Aluga máquinas,
conectividade,
software
• Menos controle,
mas também
menos
responsabilidade
• Paga o valor fixo
mensalmente
Aplicação roda na
nuvem
• Compartilhado,
ambiente com
vários outros
• Pool de
recursos, abstrae
detalhes de
hardware
• Pago pelo uso
50. #1 – Usando a nuvem para escalar
Web
Tier
B/L Tier Databa
se
Browser
Browser
Browser
Browser
Browser
Web
Tier
Web
Tier
N
L
B
Como o João faz normalmente ?
51. #1 – Usando a nuvem para escalar
Databa
se
Browser
Browser
Browser
Browser
Browser
Web Tier
B/L
Tier
B/L
Tier
B/L
Tier
N
L
B
Como o João faz normalmente ?
52. #1 – Usando a nuvem para escalar
Databa
se
Browser
Browser
Browser
Browser
Browser
B/L
Tier
B/L
Tier
B/L
Tier
N
L
B
Web
Tier
Web
Tier
Web
Tier
N
L
B
Como o João faz normalmente ?
53. #1 – Usando a nuvem para escalar
Browser
Browser
Browser
Browser
Browser
B/L
Tier
B/L
Tier
B/L
Tier
N
L
B
Databa
se
p1 p2 p3
Web
Tier
Web
Tier
Web
Tier
N
L
B
Como o João faz normalmente ?
55. #1 – Usando a nuvem para escalar
Browser
Browser
Browser
Browser
Browser
B/L
Tier
B/L
Tier
B/L
Tier
N
L
B
Databa
se
p1 p2 p3
Web
Tier
Web
Tier
Web
Tier
N
L
B
“Isto toma muito tempo e
dinheiro!”
Como o João faz normalmente ?
56. #1 – Usando a nuvem para escalar
Browser
B/L
Tier
B/L
Tier
B/L
Tier
N
L
B
Databa
se
p1 p2 p3
Web
Tier
Web
Tier
Web
Tier
N
L
B
“Ficou muito
complexo…”
“Isto toma muito tempo e
dinheiro!”
Como o João faz normalmente ?
57. #1 – Usando a nuvem para escalar
Usage
Jan Apr Jul Oct
Pico de carga no
datacenter
Tempo
de
inutiliza
ção
59. #1 – Usando a nuvem para escalar
Web RoleBrowser
Requisições
Worker
Role
Azure
Storag
eResposta
“Uau! Meu grande
site!”
60. #1 – Usando a nuvem para escalar
Web Role
Worker
Role
Azure
Storag
e
Browser
“Server Busy”
Browser
Browser
Browser
Browser
62. #1 – Usando a nuvem para escalar
Web
Role
Worker
Role
Azure
Storag
e
Browser
Browser
Browser
Browser
Browser
Web
Role
Web
Role
N
L
B
É
transparent
e para você
63. #1 – Usando a nuvem para escalar
Web
Role
Azure
Storag
e
Browser
Browser
Browser
Browser
Browser
Web
Role
Web
Role
N
L
B
Worke
r Role
Worke
r Role
Worke
r Role
N
L
B
64. #1 – Usando a nuvem para escalar
Web
Role
Azure
Storag
e
Browser
Browser
Browser
Browser
Browser
Web
Role
Web
Role
N
L
B
Worke
r Role
Worke
r Role
Worke
r Role
N
L
B
p1 p2 p3
65. OK, alterar é fácil...
…mas há mais alguma coisa que preciso
saber ?
66. #1 – Usando a nuvem para escalar
Web
Role
Azure
Storag
e
Browser
Browser
Browser
Browser
Browser
Web
Role
Web
Role
N
L
B
Worke
r Role
Worke
r Role
Worke
r Role
N
L
B
p1 p2 p3
67. #1 – Usando a nuvem para escalar
Web Role
Worker
Role
Manter uma integração tão
próxima não é
recomendável
68. #1 – Usando a nuvem para escalar
Web Role
Worker
Role
Fila
Re
q
1. Coloca na fila 3. Retirar da fila
4. Processar
2. Responde para UI
69. #1 – Usando a nuvem para escalar
Web Role
Worker
Role
Fila
Re
q
4. Processar
Table
5. Adicionar o resultado
em uma tabela
6. Buscar os resultados
na tabela
71. #1 – Usando a nuvem para escalar
Web
Role
Worker
Role
Azure
Storag
e
Browser
Browser
Browser
Browser
Browser
Web
Role
Web
Role
N
L
B
Coletar IIS
logs / MOM
pack / Right
Scale
Testando
72. #1 – Usando a nuvem para escalar
Web Role
Worker
Role
Fila
Re
q
73. #1 – Usando a nuvem para escalar
Web Role
Fila
Re
q
Web Role
Web Role
Re
q
Re
q
Monitora o
tamanho da fila
e a expectativa
de crescimento
Web Role
Web Role
Web Role
Worker
Role
Worker
Role
Worker
Role
Worker
Role
Worker
Role
Worker
Role
74. Patterns para computação em nuvem
Takeaways
Entender a comunicação entre as
roles
Estabeleça a sua estratégia de
escalar para cima/baixo
Usando o portal para escalar
81. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier Databa
se
Cliente #2
Web TierBrowser B/L Tier Databa
se
Cliente #1
Web TierBrowser B/L Tier Databa
se
Cliente #3
Como o João faz normalmente ?
86. 3 opções de dados para um ambiente
multi tenant
87. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier Databa
se
Browser
Browser
Cliente #1
Cliente #2
Cliente #3
Opção 1: Todo mundo usa o mesmo
Database/Schema
Fixed
Schema
Pros: Abordagem facilitada, fácil
manutenção/upgrade.
Con: Sem customizações. Recuperando os
dados de cada inquilino.
88. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier
Databa
se
Browser
Browser
Cliente #1
Cliente #2
Cliente #3
Opção 2: Cada cliente tem um seu próprio
Database/Schema
Cliente #1
Databa
se
Databa
se
Cliente #2
Cliente #3
Pros: Flexível. Recuperação do inquilino é
fácil. Alto isolamento.
Cons: Atualização complexa de esquemas.
89. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier Databa
se
Browser
Browser
Customer
#1
Customer
#2
Customer
#3
Opção 3: Database/Schema fixo, with
customizações
Fixed Schema
with
Customizations
Pros: Clientes podem adicionar seus
próprios campos
Cons: Não um esquema padronizado.
Recuperação do inquilino é díficil.
90. #2 – Usando a nuvem para Multi
Tenancy
TenantID
Tenant
int
TenantNamenvarchar
EmployeeId
Employee
int
FirstName nvarchar
LastName nvarchar
CustomizationID
Customization
int
Value nvarchar
TypeID
Type
int
Name nvarchar
CLRType nvarchar
1
*
*
1
*
1
*
*
91. #2 – Usando a nuvem para Multi
Tenancy
TenantID
Tenant
1
TenantNameUK Branch
EmployeeId
Employee
1
FirstName Gordon
LastName Brown
CustomizationID
Customization
1
Value SW1A 2AA
TypeID
Type
1
Name PostalCode
CLRType string
1
*
*
1
*
1
*
*
92. #2 – Usando a nuvem para Multi
Tenancy
TenantID
Tenant
2
TenantNameUS Branch
EmployeeId
Employee
2
FirstName Barack
LastName Obama
CustomizationID
Customization
2
Value 20500
TypeID
Type
2
Name ZipCode
CLRType string
1
*
*
1
*
1
*
*
93. #2 – Usando a nuvem para Multi
Tenancy
TenantID
Tenant
2
TenantNameUS Branch
EmployeeId
Employee
2
FirstName Barack
LastName Obama
CustomizationID
Customization
2
Value 20500
TypeID
Type
2
Name ZipCode
CLRType string
1
*
*
1
*
1
*
*
Esquema fixo
Aplica para
todos os
inquilinos
Customizável
Básico de
inquilino -
inquilino
Pode ser
ambos
98. Controlador único para cada inquilino
http://employeedata.cloudapp.net/Conto
so
(ContosoController)
http://employeedata.cloudapp.net/Fabri
kam
(FabrikamController)
99. Controller compartilhado para todo os
inquilinos
http://employeedata.cloudapp.net/Conto
so
(EmployeeController)
http://employeedata.cloudapp.net/Fabri
kam
(EmployeeController)
100. Controlador compartilhado para
inquilinos (com máscara de URL)
http://hr.contoso.co.uk
(http://employeedata.cloudapp.net/empl
oyees)
http://hr.fabrikam.com
(http://employeedata.cloudapp.net/empl
oyees)
101. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier Databa
se
Browser
Browser
Cliente #1
Cliente #2
Cliente #3
http://hr.contoso.co.
uk
http://hr.fabrikam.c
om
http://employeedata.cloudap
p.net
102. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier Databa
se
Browser
Browser
Cliente #1
Cliente #2
Cliente #3
http://hr.contoso.co.uk -> CNAME
(employeedata.cloudapp.net)
http://hr.fabrikam.com -> CNAME
(employeedata.cloudapp.net)
http://employeedata.cloudap
p.net
103. #2 – Usando a nuvem para Multi
Tenancy
Web TierBrowser B/L Tier Databa
se
Browser
Browser
Cliente #1
Cliente #2
Cliente #3
http://hr.contoso.co.uk -> CNAME
(employeedata.cloudapp.net)
http://hr.fabrikam.com -> CNAME
(employeedata.cloudapp.net)
Usando uma roteamento
http://employeedata.cloudap
p.net
104. Patterns para computação em nuvem
Takeaways
Considere dados e interface
Lembre-se de outras questões
(identidade)
Sempre considere uma arquitetura
para multi tenancy
109. #3 – Usando a nuvem para
computação
MasterClient
Data
Worker
Worker
Worker
Data
Data
Data
110. #3 – Usando a nuvem para
computação
MasterClient
Resul
t
Worker
Worker
Worker
Resul
t
Resul
t
Resul
t
111. Usando o termo “MapReduce”*
* 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Goo
112. #3 – Usando a nuvem para
computação
MasterClient
Data
Worker
Worker
Worker
“Map”
M<k,v
>
M<k,v
>
M<k.v
>
M<“the quick
brown”.”e”>M<“fox jumps
over”.”e”>M<“the lazy dog”.”e”>
Quando ”e”’s em
“The quick brown fox jumps over the
lazy dog”?
113. #3 – Usando a nuvem para
computação
MasterClient
Resul
t
Worker
Worker
Worker
“Reduc
e”
L<k,v>
L<k,v>
L<k,v>
L<”e”,”1”>
L<”e”,”1”>
L<”e”,”1”>
3 x ”e”s
encontrad
os
115. #3 – Usando a nuvem para
computação
Google
20pb de dados analizados diariamente com
MapReduce
Yahoo!
10k+ cores, 4pb de dados em MapReduce
Facebook
2500+ cores, 1pb de dados em MapReduce
117. #3 – Usando a nuvem para
computação
Apache Hadoop
Open Source Java “Inspired by MapReduce”
(Core, HDFS, many more)
Cloudera
Consulting, training, distribution of Hadoop
Hadoop on Windows Azure
Hadoop implementation on Windows Azure
119. #3 – Usando a nuvem para
computação
MasterClient
Data
Worker
Worker
Worker
Data
Data
DataClient ApplicationJob/Task Scheduler
Remote Service
Como o João faz normalmente ?
121. #3 – Usando a nuvem para
computação
Web RoleClient
Data
Worker
Worker
Worker
Data
Data
Data
Client ApplicationJob/Task Scheduler
Remote Service
Queue
Re
q
Table
123. Patterns para computação em nuvem
Takeaways
Aprenda os frameworks existentes
(Hadoop)
Veja Hadoop on Windows Azure
MapReduce modelo orientado para
BigData
129. #4 – Usando a computação em nuvem
para armazenamento
File
Server
Client
RPC/NFS
File
Stor
e
Como o João faz normalmente ?
130. #4 – Usando a computação em nuvem
para armazenamento
DB ServerClient RDBM
S
TDS (Tabular Data Stream)Data
Como o João faz normalmente ?
131. #4 – Usando a computação em nuvem
para armazenamento
Web
Server
Browser Datab
ase
HTTP POST
Data
Como o João faz normalmente ?
132. #4 – Usando a computação em nuvem
para armazenamento
Server Data
Afinidade entre o servidor
físico e o dado
Eu te
amo !
Eu
també
m te
amo !
133. #4 – Usando a computação em nuvem
para armazenamento
Server Data
Eu te
amo !
Eu
també
m te
amo !
Sintomas:
Qual RAID que deve utilizar ?
Processo de backup é complexo
Droga! Eu estou a 95% da capacidade – precisamos
de mais disco
136. #4 – Usando a computação em nuvem
para armazenamento
Client Cloud
Storage
Pattern “Code Near”
A camada de acesso de dados fica perto
do cliente, a conexão fica distante
DA
L
Cenários offline
DAL -> Conexão via REST
137. #4 – Usando a computação em nuvem
para armazenamento
Client Cloud
Storage
Pattern “Code Far”
A camada de acesso fica distante do
cliente
DA
L
Baseado em cenários, não funciona offline.
Excelente para criar camada de aplicações
Web Tier
140. #4 – Usando a computação em nuvem
para armazenamento
Client
Azure
Blob
Storage
REST API
PutBlob
PUT
http://account.blob.core.windows./net/containername/bl
obname
Blob
Container
http://account.blob.core.windows.net/containername/blobn
PutBlob = 64Mb MAX
MetaData = 8Kb per Blob
141. #4 – Usando a computação em nuvem
para armazenamento
Client
Azure
Blob
Storage
REST API
GetBlob
GET
http://account.blob.core.windows./net/containername/bl
obname
Blob
Container
http://account.blob.core.windows.net/containername/blobn
142. #4 – Usando a computação em nuvem
para armazenamento
Client
Azure
Blob
Storage
REST API
GetBlob
GET
http://account.blob.core.windows./net/containername/bl
obname
Range: bytes=329300 - 730000
Blob
Container
http://account.blob.core.windows.net/containername/blobn
143. #4 – Usando a computação em nuvem
para armazenamento
Client
Azure
Blob
Storage
REST API
PutBlock(blobname,
blockid, data)PutBlockList(blobname, blockid1, …,
blockidN)
Blob
Container
http://account.blob.core.windows.net/containername/blobn
PutBlock = 4Mb MAX to a maximum of 50Gb
BlockId = 64 bytes
145. #4 – Usando a computação em nuvem
para armazenamento
Worker
Role
Azure
Table
Storage
Each Table:
PartitionKey (e.g. DocumentName) to
ensure scalability
RowKey (e.g. version number)
[fields] for data
http://account.table.core.windows.n
et
REST:
GET
http://account.table.core.windows.net/Customer?$filter=%20PartitionKey%
20eq%20value
LINQ:
var customers = from o in context.CreateQuery<customer>(“Customer”)
where o.PartitionKey == value select o;
153. #4 – Usando a computação em nuvem
para armazenamento
Browser RDBM
S
Web Tier
HTTP
Bus. Logic
“The Data Center”
SQL
Server
TDS
154. #4 – Usando a computação em nuvem
para armazenamento
SQL
Database
Browser RDBM
S
TDS
Web Role
HTTP
Worker
Role
Queue
“Na nuvem com PaaS
155. #4 – Usando a computação em nuvem
para armazenamento
SQL
Server
Browser RDBM
S
TDS
Web Role
HTTP
Worker
Role
Queue
“Na nuvem com IaaS”
156. Patterns para computação em nuvem
Takeaways
Entender os modelos de near code e
far code
SQL Database ou seu banco, você
escolhe
Entender o modelo de preços
166. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
167. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
168. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
169. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Master Key
Master Key
170. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
171. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
Proxy
?
172. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
NAT?
65.55.33.204
192.168.14.100
173. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
65.55.33.204
192.168.14.100
OK, so I’ll do a
HTTP poll every
minute
174. #5 – Usando a nuvem para
comunicações
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
65.55.33.204
192.168.14.100
…and how about other
protocols other than
HTTP?
176. #5 – Usando a nuvem para
comunicações
Client
Outbound bi-directional socket
Kept alive in background
.NET
Service Bus
sb://.../myqueue
Client
Company 1
Company 2
Firewall
177. #5 – Usando a nuvem para
comunicações
Client
Outbound bi-directional socket
Kept alive in background
.NET
Service Bus
sb://.../myqueue
Client
Company 1
Company 2
Firewall
Firewall
Outbound one-way socket
Message routed
accordingly
178. #5 – Usando a nuvem para
comunicações
My Laptop
Outbound bi-directional socket
Kept alive in background
.NET
Service Bus
sb://.../myqueue
Home PC
This Conference
My Home
Firewall
Firewall
Outbound one-way socket
Message routed
accordingly
192.168.14.193
SQL
Express
Port 1433
Localhost:1000
Application
179. Patterns for Cloud Computing
Takeaways
Firewalls/NATS sempre podem
representar obstáculos
Cenários com Service Bus podem
ser interessantes
Escolha o modelo de integração
182. Próximos passos
Entenda o que cada fornecedor
realmente entrega de nuvem
Explore os 5 patterns hoje
Entenda os serviços disponíveis do
Azure e como usá-los