http://blogs.msdn.com/conde
Patterns para computação em nuvem
Este é o JoãoPatterns para computação em nuvem
João tem várias perguntas sobre computação em nuvemPatterns para computação em nuvem
Quando mais ele lê, mais confuso ele ficaPatterns para computação em nuvem
“O que é computação em nuvem?”Patterns para computação em nuvem
“Como eu posso usar computação em nuvem?”Patterns para computação em nuvem
“O que a Microsoft está fazendo ?”Patterns para computação em nuvem
Responder estas questões pode ser difícil
Responder estas questões pode ser difícilVárias definições de váriosfornecedoresPode ser difícil descrever como usarcomput...
Objetivos desta sessão
Objetivos desta sessãoExplorar a definição de computaçãoem nuvem5 Patterns para computação emnuvemComo implementar estes p...
Definindo computação em nuvem
Definindo computação em nuvemJoão tem ouvido vários “buzzwords”
Definindo computação em nuvemArquitetura Orientada a Serviço
Definindo computação em nuvemAplicações ricas de Internet
Definindo computação em nuvemSoftware como serviço
Definindo computação em nuvemDevices + Serviços
Definindo computação em nuvemAlgum destes é computação em nuvem ?
Definindo computação em nuvemEstilos de arquitetura
Definindo computação em nuvemEstes estilos podem trabalhar nanuvem, mas eles não sãocomputação em nuvem
Definindo computação em nuvemOnde as aplicações estãohospedadas ?
Definindo computação em nuvemLocalmenteHosterNuvem
Definindo computação em nuvemApplication runson-premisesBuy my ownhardware, andmanage my owndata centerAplicação rodalocal...
Definindo computação em nuvemApplication runson-premisesBuy my ownhardware, andmanage my owndata centerApplication runs at...
Definindo computação em nuvemApplication runson-premisesBuy my ownhardware, andmanage my owndata centerApplication runs at...
Definindo computação em nuvemNuvem “Variações”
Definindo computação em nuvemNuvem pública
Definindo computação em nuvemPool de recursos de computaçãooferecido por um fornecedor, atravésdo modelo “pago pelo uso”
Definindo computação em nuvemNuvem Privada
Definindo computação em nuvemPool de recursos e gerenciado por vocêno seu datacenter
Definindo computação em nuvemPool de recursos de computaçãohospedados em datacenter semcompartilhamento
Definindo computação em nuvem“Então, o que a Microsoft está fazendo?”
Definindo computação em nuvem
Definindo computação em nuvem3 x Conceitos Críticos
Definindo computação em nuvemTipos de máquinas virtuaisWeb RoleWorker RoleVirtual Machine
Definindo computação em nuvemArmazenamentoTabela, Blob, Relacional
Definindo computação em nuvemMensageriaFilas
Patterns for Cloud ComputingUsando a nuvem para Escalar
“Então nuvem não é ideal para as aplicações queprecisam escalar dinamicamente?”Patterns for Cloud Computing
Por exemplo, aplicações SociaisPatterns for Cloud Computing
“Como funciona?”Patterns for Cloud Computing
Vamos começar com umquadro branco para o João…Patterns for Cloud Computing
…e quando digo quadro branco, érealmente um quadro !
#1 – Usando a nuvem para escalarWeb TierBrowserRequisiçõesB/L Tier DatabaseRespostas“Uau! Meu grandesite!”
#1 – Usando a nuvem para escalarWeb Tier B/L Tier DatabaseBrowserBrowserBrowserBrowserBrowser“Server Busy”
#1 – Usando a nuvem para escalarWeb Tier B/L Tier DatabaseBrowser“Timeout”BrowserBrowserBrowserBrowser
Como o João faz normalmente ?
#1 – Usando a nuvem para escalarWebTierB/L Tier DatabaseBrowserBrowserBrowserBrowserBrowserWebTierWebTierNLBComo o João fa...
#1 – Usando a nuvem para escalarDatabaseBrowserBrowserBrowserBrowserBrowserWeb TierB/LTierB/LTierB/LTierNLBComo o João faz...
#1 – Usando a nuvem para escalarDatabaseBrowserBrowserBrowserBrowserBrowserB/LTierB/LTierB/LTierNLBWebTierWebTierWebTierNL...
#1 – Usando a nuvem para escalarBrowserBrowserBrowserBrowserBrowserB/LTierB/LTierB/LTierNLBDatabasep1 p2 p3WebTierWebTierW...
Sempre tem consequências...
#1 – Usando a nuvem para escalarBrowserBrowserBrowserBrowserBrowserB/LTierB/LTierB/LTierNLBDatabasep1 p2 p3WebTierWebTierW...
#1 – Usando a nuvem para escalarBrowserB/LTierB/LTierB/LTierNLBDatabasep1 p2 p3WebTierWebTierWebTierNLB“Ficou muitocomplex...
#1 – Usando a nuvem para escalarUsageJan Apr Jul OctPico de carga nodatacenterTempodeinutilização
Como o Windows Azure pode ajudar ?
#1 – Usando a nuvem para escalarWeb RoleBrowserRequisiçõesWorkerRoleAzureStorageResposta“Uau! Meu grandesite!”
#1 – Usando a nuvem para escalarWeb RoleWorkerRoleAzureStorageBrowser“Server Busy”BrowserBrowserBrowserBrowser
#1 – Usando a nuvem para escalarWebRoleWorkerRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBÉtranspar...
#1 – Usando a nuvem para escalarWebRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBWorker RoleWorker R...
#1 – Usando a nuvem para escalarWebRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBWorker RoleWorker R...
OK, alterar é fácil...…mas há mais alguma coisa que precisosaber ?
#1 – Usando a nuvem para escalarWebRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBWorker RoleWorker R...
#1 – Usando a nuvem para escalarWeb RoleWorkerRoleManter uma integração tãopróxima não érecomendável
#1 – Usando a nuvem para escalarWeb RoleWorkerRoleFilaReq1. Coloca na fila 3. Retirar da fila4. Processar2. Responde para UI
#1 – Usando a nuvem para escalarWeb RoleWorkerRoleFilaReq4. ProcessarTable5. Adicionar o resultadoem uma tabela6. Buscar o...
Quantas web role ou worker role vocêprecisa ?
#1 – Usando a nuvem para escalarWebRoleWorkerRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBColetar I...
#1 – Usando a nuvem para escalarWeb RoleWorkerRoleFilaReq
#1 – Usando a nuvem para escalarWeb RoleFilaReqWeb RoleWeb RoleReqReqMonitora otamanho da filae a expectativade cresciment...
Patterns para computação em nuvemTakeawaysEntender a comunicação entre asrolesEstabeleça a sua estratégia deescalar para c...
Patterns para computação em nuvemUsando a nuvem para soluçõesMulti Tenancy
“Eu tenho uma idéia que precisa de váriasmáquinas virtuais…”Patterns para computação em nuvem
“…mas tem que atender a váriosclientes ao mesmo tempo”Patterns para computação em nuvem
“Sem criar versões diferentes !”Patterns para computação em nuvem
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseCliente #1
Como o João faz normalmente ?
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseCliente #2Web TierBrowser B/L Tier DatabaseCliente #...
Pode ficar caro rapidamente
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3
Customização de esquemasCustomização de interface
Customização de esquemasCustomização de interface
3 opções de dados para um ambientemulti tenant
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3Opção 1:...
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L TierDatabaseBrowserBrowserCliente #1Cliente #2Cliente #3Opção 2: ...
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCustomer#1Customer#2Customer#3Opção 3:...
#2 – Usando a nuvem para MultiTenancyTenantIDTenantintTenantNamenvarcharEmployeeIdEmployeeintFirstName nvarcharLastName nv...
#2 – Usando a nuvem para MultiTenancyTenantIDTenant1TenantNameUK BranchEmployeeIdEmployee1FirstName GordonLastName BrownCu...
#2 – Usando a nuvem para MultiTenancyTenantIDTenant2TenantNameUS BranchEmployeeIdEmployee2FirstName BarackLastName ObamaCu...
#2 – Usando a nuvem para MultiTenancyTenantIDTenant2TenantNameUS BranchEmployeeIdEmployee2FirstName BarackLastName ObamaCu...
Customizações de esquemasCustomizações de interface
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3
Tratamento de URL
Como resolver a inteface ?
Controlador único para cada inquilinohttp://employeedata.cloudapp.net/Contoso(ContosoController)http://employeedata.clouda...
Controller compartilhado para todo osinquilinoshttp://employeedata.cloudapp.net/Contoso(EmployeeController)http://employee...
Controlador compartilhado parainquilinos (com máscara de URL)http://hr.contoso.co.uk(http://employeedata.cloudapp.net/empl...
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3http://h...
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3http://h...
#2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3http://h...
Patterns para computação em nuvemTakeawaysConsidere dados e interfaceLembre-se de outras questões(identidade)Sempre consid...
Patterns para computação em nuvemUsando a nuvem para Computação
João tem visto que o Azurepode usar múltiplos nósPatterns para computação em nuvem
“Posso usar estes nós em paralelo ?”Patterns para computação em nuvem
“Eu tenho múltiplosarquivos de Tera para analisar…”Patterns para computação em nuvem
#3 – Usando a nuvem paracomputaçãoMasterClientDataWorkerWorkerWorkerDataDataData
#3 – Usando a nuvem paracomputaçãoMasterClientResultWorkerWorkerWorkerResultResultResult
Usando o termo “MapReduce”** 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Goo
#3 – Usando a nuvem paracomputaçãoMasterClientDataWorkerWorkerWorker“Map”M<k,v>M<k,v>M<k.v>M<“the quickbrown”.”e”>M<“fox j...
#3 – Usando a nuvem paracomputaçãoMasterClientResultWorkerWorkerWorker“Reduce”L<k,v>L<k,v>L<k,v>L<”e”,”1”>L<”e”,”1”>L<”e”,...
É um termo muito usado…
#3 – Usando a nuvem paracomputaçãoGoogle20pb de dados analizados diariamente comMapReduceYahoo!10k+ cores, 4pb de dados em...
Frameworks
#3 – Usando a nuvem paracomputaçãoApache HadoopOpen Source Java “Inspired by MapReduce”(Core, HDFS, many more)ClouderaCons...
Como o João faz normalmente ?
#3 – Usando a nuvem paracomputaçãoMasterClientDataWorkerWorkerWorkerDataDataDataClient ApplicationJob/Task SchedulerRemote...
Como fazer isto no Windows Azure ?
#3 – Usando a nuvem paracomputaçãoWeb RoleClientDataWorkerWorkerWorkerDataDataDataClient ApplicationJob/Task SchedulerRemo...
Patterns para computação em nuvemTakeawaysAprenda os frameworks existentes(Hadoop)Veja Hadoop on Windows AzureMapReduce mo...
Patterns para computação em nuvemUsando a nuvem paraArmazenamento
“A nuvem permite armazenar infinitamente meusdados, correto ?”Patterns para computação em nuvem
Várias dores de cabeça emgerenciamento de dadosPatterns para computação em nuvem
“Isto me parece um pouco exagerado…”Patterns para computação em nuvem
Como o João faz normalmente ?
#4 – Usando a computação em nuvempara armazenamentoFileServerClientRPC/NFSFileStoreComo o João faz normalmente ?
#4 – Usando a computação em nuvempara armazenamentoDB ServerClient RDBMSTDS (Tabular Data Stream)DataComo o João faz norma...
#4 – Usando a computação em nuvempara armazenamentoWebServerBrowser DatabaseHTTP POSTDataComo o João faz normalmente ?
#4 – Usando a computação em nuvempara armazenamentoServer DataAfinidade entre o servidorfísico e o dadoEu teamo !Eutambém ...
#4 – Usando a computação em nuvempara armazenamentoServer DataEu teamo !Eutambém teamo !Sintomas:Qual RAID que deve utiliz...
Como o Azure pode ajudar ?
Quebrar a afinidade entre o hardware edata
#4 – Usando a computação em nuvempara armazenamentoClient CloudStoragePattern “Code Near”A camada de acesso de dados fica ...
#4 – Usando a computação em nuvempara armazenamentoClient CloudStoragePattern “Code Far”A camada de acesso fica distante d...
Blobs, Tabelas, Relacional
Blobs, Tabelas, Relacional
#4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIPutBlobPUThttp://account.blob.core.window...
#4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIGetBlobGEThttp://account.blob.core.window...
#4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIGetBlobGEThttp://account.blob.core.window...
#4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIPutBlock(blobname,blockid, data)PutBlockL...
Blobs, Tabelas, Relacional
#4 – Usando a computação em nuvempara armazenamentoWorkerRoleAzureTableStorageEach Table:PartitionKey (e.g. DocumentName) ...
Blobs, Tabelas, Relacional
#4 – Usando a computação em nuvempara armazenamentoDB ServerClient RDBMSTDSDataAssim eu como eu faço normalmente…
#4 – Usando a computação em nuvempara armazenamentoDB ServerClient RDBMSTDSDataEu gostaria de fazer assim na nuvem
#4 – Usando a computação em nuvempara armazenamentoSQLDatabaseClient RDBMSTDSDataAssim é como funciona no Azure
#4 – Usando a computação em nuvempara armazenamentoSQLDatabaseBrowser RDBMSTDSWeb RoleHTTP
#4 – Usando a computação em nuvempara armazenamentoSQLDatabaseBrowser RDBMSTDSWeb RoleHTTPWorkerRoleQueue
Migração!
#4 – Usando a computação em nuvempara armazenamentoBrowser RDBMSWeb TierHTTPBus. Logic“The Data Center”SQLServerTDS
#4 – Usando a computação em nuvempara armazenamentoSQLDatabaseBrowser RDBMSTDSWeb RoleHTTPWorkerRoleQueue“Na nuvem com PaaS
#4 – Usando a computação em nuvempara armazenamentoSQLServerBrowser RDBMSTDSWeb RoleHTTPWorkerRoleQueue“Na nuvem com IaaS”
Patterns para computação em nuvemTakeawaysEntender os modelos de near code efar codeSQL Database ou seu banco, vocêescolhe...
Patterns para computação em nuvemUsando a nuvem para Comunicações
João precisa que suas aplicações falem comoutras aplicações em vários locaisPatterns para computação em nuvem
“É sempre chato fazer isto, abrir firewall, WCF?SOA? SOAP ?...não quero isto”Patterns for Cloud Computing
“A nuvem pode me ajudar ?”Patterns for Cloud Computing
Como o João faz normalmente ?
#5 – Usando a nuvem paracomunicaçõesClient ServerCompany 1 Company 2Telco provided WANFTPClientFTPServer
#5 – Usando a nuvem paracomunicaçõesClient ServerCompany 1 Company 2Telco provided WANFTPClientFTPServerInternet
#5 – Usando a nuvem paracomunicaçõesClient ServerCompany 1 Company 2Telco provided WANBrowserInternetExtranetSiteDMZ
Como as filas do Azure pode ajudar?
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Master ...
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web Role
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web Rol...
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web Rol...
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web Rol...
#5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web Rol...
Como o Azure Service Bus pode ajudar ?
#5 – Usando a nuvem paracomunicaçõesClientOutbound bi-directional socketKept alive in background.NETService Bussb://.../my...
#5 – Usando a nuvem paracomunicaçõesClientOutbound bi-directional socketKept alive in background.NETService Bussb://.../my...
#5 – Usando a nuvem paracomunicaçõesMy LaptopOutbound bi-directional socketKept alive in background.NETService Bussb://......
Patterns for Cloud ComputingTakeawaysFirewalls/NATS sempre podemrepresentar obstáculosCenários com Service Bus podemser in...
Próximos passos
Claro que João é um brincadeira…Próximos passos
Próximos passosEntenda o que cada fornecedorrealmente entrega de nuvemExplore os 5 patterns hojeEntenda os serviços dispon...
http://blogs.msdn.com/conde
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
Próximos SlideShares
Carregando em…5
×

TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure

317 visualizações

Publicada em

Evento: The Developers Conference - Julho de 2013
Objetivo: Apresenta Brazil, The Developers Conference - TDC.
Presença: +100 presentes
Público: Arquitetos, decisores de tecnologia, desenvolvedores, profissionais de tecnologia da informação

Publicada em: Tecnologia, Negócios
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
317
No SlideShare
0
A partir de incorporações
0
Número de incorporações
25
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure

  1. 1. http://blogs.msdn.com/conde
  2. 2. Patterns para computação em nuvem
  3. 3. Este é o JoãoPatterns para computação em nuvem
  4. 4. João tem várias perguntas sobre computação em nuvemPatterns para computação em nuvem
  5. 5. Quando mais ele lê, mais confuso ele ficaPatterns para computação em nuvem
  6. 6. “O que é computação em nuvem?”Patterns para computação em nuvem
  7. 7. “Como eu posso usar computação em nuvem?”Patterns para computação em nuvem
  8. 8. “O que a Microsoft está fazendo ?”Patterns para computação em nuvem
  9. 9. Responder estas questões pode ser difícil
  10. 10. Responder estas questões pode ser difícilVárias definições de váriosfornecedoresPode ser difícil descrever como usarcomputação em nuvemComo manter atualizando comtanta mudança
  11. 11. Objetivos desta sessão
  12. 12. Objetivos desta sessãoExplorar a definição de computaçãoem nuvem5 Patterns para computação emnuvemComo implementar estes patternsno Windows Azure
  13. 13. Definindo computação em nuvem
  14. 14. Definindo computação em nuvemJoão tem ouvido vários “buzzwords”
  15. 15. Definindo computação em nuvemArquitetura Orientada a Serviço
  16. 16. Definindo computação em nuvemAplicações ricas de Internet
  17. 17. Definindo computação em nuvemSoftware como serviço
  18. 18. Definindo computação em nuvemDevices + Serviços
  19. 19. Definindo computação em nuvemAlgum destes é computação em nuvem ?
  20. 20. Definindo computação em nuvemEstilos de arquitetura
  21. 21. Definindo computação em nuvemEstes estilos podem trabalhar nanuvem, mas eles não sãocomputação em nuvem
  22. 22. Definindo computação em nuvemOnde as aplicações estãohospedadas ?
  23. 23. Definindo computação em nuvemLocalmenteHosterNuvem
  24. 24. Definindo computação em nuvemApplication runson-premisesBuy my ownhardware, andmanage my owndata centerAplicação rodalocalmente• Monta seuambiente,conectividade,software, etc.• Controle completoe responsabilidade• Investimento inicial
  25. 25. Definindo computação em nuvemApplication runson-premisesBuy my ownhardware, andmanage my owndata centerApplication runs at ahosterPay someone tohost my applicationusing hardware thatI specifyAplicação rodalocalmente• Monta seuambiente,conectividade,software, etc.• Controle completoe responsabilidade• Investimento inicialAplicação roda emhoster• Aluga máquinas,conectividade,software• Menos controle,mas tambémmenosresponsabilidade• Paga o valor fixomensalmente
  26. 26. Definindo computação em nuvemApplication runson-premisesBuy my ownhardware, andmanage my owndata centerApplication runs at ahosterPay someone tohost my applicationusing hardware thatI specifyApplication runs usingcloud platformPay someone for apool of computingresources that canbe applied to a setof applicationsAplicação rodalocalmente• Monta seuambiente,conectividade,software, etc.• Controle completoe responsabilidade• Investimento inicialAplicação roda emhoster• Aluga máquinas,conectividade,software• Menos controle,mas tambémmenosresponsabilidade• Paga o valor fixomensalmenteAplicação roda nanuvem• Compartilhado,ambiente comvários outros• Pool derecursos, abstraedetalhes dehardware• Pago pelo uso
  27. 27. Definindo computação em nuvemNuvem “Variações”
  28. 28. Definindo computação em nuvemNuvem pública
  29. 29. Definindo computação em nuvemPool de recursos de computaçãooferecido por um fornecedor, atravésdo modelo “pago pelo uso”
  30. 30. Definindo computação em nuvemNuvem Privada
  31. 31. Definindo computação em nuvemPool de recursos e gerenciado por vocêno seu datacenter
  32. 32. Definindo computação em nuvemPool de recursos de computaçãohospedados em datacenter semcompartilhamento
  33. 33. Definindo computação em nuvem“Então, o que a Microsoft está fazendo?”
  34. 34. Definindo computação em nuvem
  35. 35. Definindo computação em nuvem3 x Conceitos Críticos
  36. 36. Definindo computação em nuvemTipos de máquinas virtuaisWeb RoleWorker RoleVirtual Machine
  37. 37. Definindo computação em nuvemArmazenamentoTabela, Blob, Relacional
  38. 38. Definindo computação em nuvemMensageriaFilas
  39. 39. Patterns for Cloud ComputingUsando a nuvem para Escalar
  40. 40. “Então nuvem não é ideal para as aplicações queprecisam escalar dinamicamente?”Patterns for Cloud Computing
  41. 41. Por exemplo, aplicações SociaisPatterns for Cloud Computing
  42. 42. “Como funciona?”Patterns for Cloud Computing
  43. 43. Vamos começar com umquadro branco para o João…Patterns for Cloud Computing
  44. 44. …e quando digo quadro branco, érealmente um quadro !
  45. 45. #1 – Usando a nuvem para escalarWeb TierBrowserRequisiçõesB/L Tier DatabaseRespostas“Uau! Meu grandesite!”
  46. 46. #1 – Usando a nuvem para escalarWeb Tier B/L Tier DatabaseBrowserBrowserBrowserBrowserBrowser“Server Busy”
  47. 47. #1 – Usando a nuvem para escalarWeb Tier B/L Tier DatabaseBrowser“Timeout”BrowserBrowserBrowserBrowser
  48. 48. Como o João faz normalmente ?
  49. 49. #1 – Usando a nuvem para escalarWebTierB/L Tier DatabaseBrowserBrowserBrowserBrowserBrowserWebTierWebTierNLBComo o João faz normalmente ?
  50. 50. #1 – Usando a nuvem para escalarDatabaseBrowserBrowserBrowserBrowserBrowserWeb TierB/LTierB/LTierB/LTierNLBComo o João faz normalmente ?
  51. 51. #1 – Usando a nuvem para escalarDatabaseBrowserBrowserBrowserBrowserBrowserB/LTierB/LTierB/LTierNLBWebTierWebTierWebTierNLBComo o João faz normalmente ?
  52. 52. #1 – Usando a nuvem para escalarBrowserBrowserBrowserBrowserBrowserB/LTierB/LTierB/LTierNLBDatabasep1 p2 p3WebTierWebTierWebTierNLBComo o João faz normalmente ?
  53. 53. Sempre tem consequências...
  54. 54. #1 – Usando a nuvem para escalarBrowserBrowserBrowserBrowserBrowserB/LTierB/LTierB/LTierNLBDatabasep1 p2 p3WebTierWebTierWebTierNLB“Isto toma muito tempo edinheiro!”Como o João faz normalmente ?
  55. 55. #1 – Usando a nuvem para escalarBrowserB/LTierB/LTierB/LTierNLBDatabasep1 p2 p3WebTierWebTierWebTierNLB“Ficou muitocomplexo…”“Isto toma muito tempo edinheiro!”Como o João faz normalmente ?
  56. 56. #1 – Usando a nuvem para escalarUsageJan Apr Jul OctPico de carga nodatacenterTempodeinutilização
  57. 57. Como o Windows Azure pode ajudar ?
  58. 58. #1 – Usando a nuvem para escalarWeb RoleBrowserRequisiçõesWorkerRoleAzureStorageResposta“Uau! Meu grandesite!”
  59. 59. #1 – Usando a nuvem para escalarWeb RoleWorkerRoleAzureStorageBrowser“Server Busy”BrowserBrowserBrowserBrowser
  60. 60. #1 – Usando a nuvem para escalarWebRoleWorkerRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBÉtransparente para você
  61. 61. #1 – Usando a nuvem para escalarWebRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBWorker RoleWorker RoleWorker RoleNLB
  62. 62. #1 – Usando a nuvem para escalarWebRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBWorker RoleWorker RoleWorker RoleNLBp1 p2 p3
  63. 63. OK, alterar é fácil...…mas há mais alguma coisa que precisosaber ?
  64. 64. #1 – Usando a nuvem para escalarWebRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBWorker RoleWorker RoleWorker RoleNLBp1 p2 p3
  65. 65. #1 – Usando a nuvem para escalarWeb RoleWorkerRoleManter uma integração tãopróxima não érecomendável
  66. 66. #1 – Usando a nuvem para escalarWeb RoleWorkerRoleFilaReq1. Coloca na fila 3. Retirar da fila4. Processar2. Responde para UI
  67. 67. #1 – Usando a nuvem para escalarWeb RoleWorkerRoleFilaReq4. ProcessarTable5. Adicionar o resultadoem uma tabela6. Buscar os resultadosna tabela
  68. 68. Quantas web role ou worker role vocêprecisa ?
  69. 69. #1 – Usando a nuvem para escalarWebRoleWorkerRoleAzureStorageBrowserBrowserBrowserBrowserBrowserWebRoleWebRoleNLBColetar IISlogs / MOMpack / RightScaleTestando
  70. 70. #1 – Usando a nuvem para escalarWeb RoleWorkerRoleFilaReq
  71. 71. #1 – Usando a nuvem para escalarWeb RoleFilaReqWeb RoleWeb RoleReqReqMonitora otamanho da filae a expectativade crescimentoWeb RoleWeb RoleWeb RoleWorkerRoleWorkerRoleWorkerRoleWorkerRoleWorkerRoleWorkerRole
  72. 72. Patterns para computação em nuvemTakeawaysEntender a comunicação entre asrolesEstabeleça a sua estratégia deescalar para cima/baixoUsando o portal para escalar
  73. 73. Patterns para computação em nuvemUsando a nuvem para soluçõesMulti Tenancy
  74. 74. “Eu tenho uma idéia que precisa de váriasmáquinas virtuais…”Patterns para computação em nuvem
  75. 75. “…mas tem que atender a váriosclientes ao mesmo tempo”Patterns para computação em nuvem
  76. 76. “Sem criar versões diferentes !”Patterns para computação em nuvem
  77. 77. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseCliente #1
  78. 78. Como o João faz normalmente ?
  79. 79. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseCliente #2Web TierBrowser B/L Tier DatabaseCliente #1Web TierBrowser B/L Tier DatabaseCliente #3Como o João faz normalmente ?
  80. 80. Pode ficar caro rapidamente
  81. 81. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3
  82. 82. Customização de esquemasCustomização de interface
  83. 83. Customização de esquemasCustomização de interface
  84. 84. 3 opções de dados para um ambientemulti tenant
  85. 85. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3Opção 1: Todo mundo usa o mesmoDatabase/SchemaFixedSchemaPros: Abordagem facilitada, fácilmanutenção/upgrade.Con: Sem customizações. Recuperando osdados de cada inquilino.
  86. 86. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L TierDatabaseBrowserBrowserCliente #1Cliente #2Cliente #3Opção 2: Cada cliente tem um seu próprioDatabase/SchemaCliente #1DatabaseDatabaseCliente #2Cliente #3Pros: Flexível. Recuperação do inquilino éfácil. Alto isolamento.Cons: Atualização complexa de esquemas.
  87. 87. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCustomer#1Customer#2Customer#3Opção 3: Database/Schema fixo, withcustomizaçõesFixed SchemawithCustomizationsPros: Clientes podem adicionar seuspróprios camposCons: Não um esquema padronizado.Recuperação do inquilino é díficil.
  88. 88. #2 – Usando a nuvem para MultiTenancyTenantIDTenantintTenantNamenvarcharEmployeeIdEmployeeintFirstName nvarcharLastName nvarcharCustomizationIDCustomizationintValue nvarcharTypeIDTypeintName nvarcharCLRType nvarchar1**1*1**
  89. 89. #2 – Usando a nuvem para MultiTenancyTenantIDTenant1TenantNameUK BranchEmployeeIdEmployee1FirstName GordonLastName BrownCustomizationIDCustomization1Value SW1A 2AATypeIDType1Name PostalCodeCLRType string1**1*1**
  90. 90. #2 – Usando a nuvem para MultiTenancyTenantIDTenant2TenantNameUS BranchEmployeeIdEmployee2FirstName BarackLastName ObamaCustomizationIDCustomization2Value 20500TypeIDType2Name ZipCodeCLRType string1**1*1**
  91. 91. #2 – Usando a nuvem para MultiTenancyTenantIDTenant2TenantNameUS BranchEmployeeIdEmployee2FirstName BarackLastName ObamaCustomizationIDCustomization2Value 20500TypeIDType2Name ZipCodeCLRType string1**1*1**Esquema fixoAplica paratodos osinquilinosCustomizávelBásico deinquilino -inquilinoPode serambos
  92. 92. Customizações de esquemasCustomizações de interface
  93. 93. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3
  94. 94. Tratamento de URL
  95. 95. Como resolver a inteface ?
  96. 96. Controlador único para cada inquilinohttp://employeedata.cloudapp.net/Contoso(ContosoController)http://employeedata.cloudapp.net/Fabrikam(FabrikamController)
  97. 97. Controller compartilhado para todo osinquilinoshttp://employeedata.cloudapp.net/Contoso(EmployeeController)http://employeedata.cloudapp.net/Fabrikam(EmployeeController)
  98. 98. Controlador compartilhado parainquilinos (com máscara de URL)http://hr.contoso.co.uk(http://employeedata.cloudapp.net/employees)http://hr.fabrikam.com(http://employeedata.cloudapp.net/employees)
  99. 99. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3http://hr.contoso.co.ukhttp://hr.fabrikam.comhttp://employeedata.cloudapp.net
  100. 100. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3http://hr.contoso.co.uk -> CNAME(employeedata.cloudapp.net)http://hr.fabrikam.com -> CNAME(employeedata.cloudapp.net)http://employeedata.cloudapp.net
  101. 101. #2 – Usando a nuvem para MultiTenancyWeb TierBrowser B/L Tier DatabaseBrowserBrowserCliente #1Cliente #2Cliente #3http://hr.contoso.co.uk -> CNAME(employeedata.cloudapp.net)http://hr.fabrikam.com -> CNAME(employeedata.cloudapp.net)Usando uma roteamentohttp://employeedata.cloudapp.net
  102. 102. Patterns para computação em nuvemTakeawaysConsidere dados e interfaceLembre-se de outras questões(identidade)Sempre considere uma arquiteturapara multi tenancy
  103. 103. Patterns para computação em nuvemUsando a nuvem para Computação
  104. 104. João tem visto que o Azurepode usar múltiplos nósPatterns para computação em nuvem
  105. 105. “Posso usar estes nós em paralelo ?”Patterns para computação em nuvem
  106. 106. “Eu tenho múltiplosarquivos de Tera para analisar…”Patterns para computação em nuvem
  107. 107. #3 – Usando a nuvem paracomputaçãoMasterClientDataWorkerWorkerWorkerDataDataData
  108. 108. #3 – Usando a nuvem paracomputaçãoMasterClientResultWorkerWorkerWorkerResultResultResult
  109. 109. Usando o termo “MapReduce”** 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Goo
  110. 110. #3 – Usando a nuvem paracomputaçãoMasterClientDataWorkerWorkerWorker“Map”M<k,v>M<k,v>M<k.v>M<“the quickbrown”.”e”>M<“fox jumpsover”.”e”>M<“the lazy dog”.”e”>Quando ”e”’s em“The quick brown fox jumps over thelazy dog”?
  111. 111. #3 – Usando a nuvem paracomputaçãoMasterClientResultWorkerWorkerWorker“Reduce”L<k,v>L<k,v>L<k,v>L<”e”,”1”>L<”e”,”1”>L<”e”,”1”>3 x ”e”sencontrados
  112. 112. É um termo muito usado…
  113. 113. #3 – Usando a nuvem paracomputaçãoGoogle20pb de dados analizados diariamente comMapReduceYahoo!10k+ cores, 4pb de dados em MapReduceFacebook2500+ cores, 1pb de dados em MapReduce
  114. 114. Frameworks
  115. 115. #3 – Usando a nuvem paracomputaçãoApache HadoopOpen Source Java “Inspired by MapReduce”(Core, HDFS, many more)ClouderaConsulting, training, distribution of HadoopHadoop on Windows AzureHadoop implementation on Windows Azure
  116. 116. Como o João faz normalmente ?
  117. 117. #3 – Usando a nuvem paracomputaçãoMasterClientDataWorkerWorkerWorkerDataDataDataClient ApplicationJob/Task SchedulerRemote ServiceComo o João faz normalmente ?
  118. 118. Como fazer isto no Windows Azure ?
  119. 119. #3 – Usando a nuvem paracomputaçãoWeb RoleClientDataWorkerWorkerWorkerDataDataDataClient ApplicationJob/Task SchedulerRemote ServiceQueueReqTable
  120. 120. Patterns para computação em nuvemTakeawaysAprenda os frameworks existentes(Hadoop)Veja Hadoop on Windows AzureMapReduce modelo orientado paraBigData
  121. 121. Patterns para computação em nuvemUsando a nuvem paraArmazenamento
  122. 122. “A nuvem permite armazenar infinitamente meusdados, correto ?”Patterns para computação em nuvem
  123. 123. Várias dores de cabeça emgerenciamento de dadosPatterns para computação em nuvem
  124. 124. “Isto me parece um pouco exagerado…”Patterns para computação em nuvem
  125. 125. Como o João faz normalmente ?
  126. 126. #4 – Usando a computação em nuvempara armazenamentoFileServerClientRPC/NFSFileStoreComo o João faz normalmente ?
  127. 127. #4 – Usando a computação em nuvempara armazenamentoDB ServerClient RDBMSTDS (Tabular Data Stream)DataComo o João faz normalmente ?
  128. 128. #4 – Usando a computação em nuvempara armazenamentoWebServerBrowser DatabaseHTTP POSTDataComo o João faz normalmente ?
  129. 129. #4 – Usando a computação em nuvempara armazenamentoServer DataAfinidade entre o servidorfísico e o dadoEu teamo !Eutambém teamo !
  130. 130. #4 – Usando a computação em nuvempara armazenamentoServer DataEu teamo !Eutambém teamo !Sintomas:Qual RAID que deve utilizar ?Processo de backup é complexoDroga! Eu estou a 95% da capacidade – precisamosde mais disco
  131. 131. Como o Azure pode ajudar ?
  132. 132. Quebrar a afinidade entre o hardware edata
  133. 133. #4 – Usando a computação em nuvempara armazenamentoClient CloudStoragePattern “Code Near”A camada de acesso de dados fica pertodo cliente, a conexão fica distanteDALCenários offlineDAL -> Conexão via REST
  134. 134. #4 – Usando a computação em nuvempara armazenamentoClient CloudStoragePattern “Code Far”A camada de acesso fica distante doclienteDALBaseado em cenários, não funciona offline.Excelente para criar camada de aplicaçõesWeb Tier
  135. 135. Blobs, Tabelas, Relacional
  136. 136. Blobs, Tabelas, Relacional
  137. 137. #4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIPutBlobPUThttp://account.blob.core.windows./net/containername/blobnameBlobContainerhttp://account.blob.core.windows.net/containername/blobnPutBlob = 64Mb MAXMetaData = 8Kb per Blob
  138. 138. #4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIGetBlobGEThttp://account.blob.core.windows./net/containername/blobnameBlobContainerhttp://account.blob.core.windows.net/containername/blobn
  139. 139. #4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIGetBlobGEThttp://account.blob.core.windows./net/containername/blobnameRange: bytes=329300 - 730000BlobContainerhttp://account.blob.core.windows.net/containername/blobn
  140. 140. #4 – Usando a computação em nuvempara armazenamentoClientAzureBlobStorageREST APIPutBlock(blobname,blockid, data)PutBlockList(blobname, blockid1, …,blockidN)BlobContainerhttp://account.blob.core.windows.net/containername/blobnPutBlock = 4Mb MAX to a maximum of 50GbBlockId = 64 bytes
  141. 141. Blobs, Tabelas, Relacional
  142. 142. #4 – Usando a computação em nuvempara armazenamentoWorkerRoleAzureTableStorageEach Table:PartitionKey (e.g. DocumentName) toensure scalabilityRowKey (e.g. version number)[fields] for datahttp://account.table.core.windows.netREST:GEThttp://account.table.core.windows.net/Customer?$filter=%20PartitionKey%20eq%20valueLINQ:var customers = from o in context.CreateQuery<customer>(“Customer”)where o.PartitionKey == value select o;
  143. 143. Blobs, Tabelas, Relacional
  144. 144. #4 – Usando a computação em nuvempara armazenamentoDB ServerClient RDBMSTDSDataAssim eu como eu faço normalmente…
  145. 145. #4 – Usando a computação em nuvempara armazenamentoDB ServerClient RDBMSTDSDataEu gostaria de fazer assim na nuvem
  146. 146. #4 – Usando a computação em nuvempara armazenamentoSQLDatabaseClient RDBMSTDSDataAssim é como funciona no Azure
  147. 147. #4 – Usando a computação em nuvempara armazenamentoSQLDatabaseBrowser RDBMSTDSWeb RoleHTTP
  148. 148. #4 – Usando a computação em nuvempara armazenamentoSQLDatabaseBrowser RDBMSTDSWeb RoleHTTPWorkerRoleQueue
  149. 149. Migração!
  150. 150. #4 – Usando a computação em nuvempara armazenamentoBrowser RDBMSWeb TierHTTPBus. Logic“The Data Center”SQLServerTDS
  151. 151. #4 – Usando a computação em nuvempara armazenamentoSQLDatabaseBrowser RDBMSTDSWeb RoleHTTPWorkerRoleQueue“Na nuvem com PaaS
  152. 152. #4 – Usando a computação em nuvempara armazenamentoSQLServerBrowser RDBMSTDSWeb RoleHTTPWorkerRoleQueue“Na nuvem com IaaS”
  153. 153. Patterns para computação em nuvemTakeawaysEntender os modelos de near code efar codeSQL Database ou seu banco, vocêescolheEntender o modelo de preços
  154. 154. Patterns para computação em nuvemUsando a nuvem para Comunicações
  155. 155. João precisa que suas aplicações falem comoutras aplicações em vários locaisPatterns para computação em nuvem
  156. 156. “É sempre chato fazer isto, abrir firewall, WCF?SOA? SOAP ?...não quero isto”Patterns for Cloud Computing
  157. 157. “A nuvem pode me ajudar ?”Patterns for Cloud Computing
  158. 158. Como o João faz normalmente ?
  159. 159. #5 – Usando a nuvem paracomunicaçõesClient ServerCompany 1 Company 2Telco provided WANFTPClientFTPServer
  160. 160. #5 – Usando a nuvem paracomunicaçõesClient ServerCompany 1 Company 2Telco provided WANFTPClientFTPServerInternet
  161. 161. #5 – Usando a nuvem paracomunicaçõesClient ServerCompany 1 Company 2Telco provided WANBrowserInternetExtranetSiteDMZ
  162. 162. Como as filas do Azure pode ajudar?
  163. 163. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/
  164. 164. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2
  165. 165. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2
  166. 166. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Master KeyMaster Key
  167. 167. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web Role
  168. 168. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web RoleFirewallFirewallProxy?
  169. 169. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web RoleFirewallFirewallNAT?65.55.33.204192.168.14.100
  170. 170. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web RoleFirewallFirewall65.55.33.204192.168.14.100OK, so I’ll do aHTTP poll everyminute
  171. 171. #5 – Usando a nuvem paracomunicaçõesClientRESTAzure Queuehttp://app.queue.core.windows.net/ClientCompany 1Company 2Web RoleFirewallFirewall65.55.33.204192.168.14.100…and how about otherprotocols other thanHTTP?
  172. 172. Como o Azure Service Bus pode ajudar ?
  173. 173. #5 – Usando a nuvem paracomunicaçõesClientOutbound bi-directional socketKept alive in background.NETService Bussb://.../myqueueClientCompany 1Company 2Firewall
  174. 174. #5 – Usando a nuvem paracomunicaçõesClientOutbound bi-directional socketKept alive in background.NETService Bussb://.../myqueueClientCompany 1Company 2FirewallFirewallOutbound one-way socketMessage routedaccordingly
  175. 175. #5 – Usando a nuvem paracomunicaçõesMy LaptopOutbound bi-directional socketKept alive in background.NETService Bussb://.../myqueueHome PCThis ConferenceMy HomeFirewallFirewallOutbound one-way socketMessage routedaccordingly192.168.14.193SQLExpressPort 1433Localhost:1000Application
  176. 176. Patterns for Cloud ComputingTakeawaysFirewalls/NATS sempre podemrepresentar obstáculosCenários com Service Bus podemser interessantesEscolha o modelo de integração
  177. 177. Próximos passos
  178. 178. Claro que João é um brincadeira…Próximos passos
  179. 179. Próximos passosEntenda o que cada fornecedorrealmente entrega de nuvemExplore os 5 patterns hojeEntenda os serviços disponíveis doAzure e como usá-los
  180. 180. http://blogs.msdn.com/conde

×