Open a Window, see the clouds                         Rafael Dohms   photo credit: Denis GrzeticSaturday, July 9, 2011
Rafael Dohms                                                               photo credit: Eli White        Evangelista PHP,...
OLHANDO PELA JANELA    •O          que é a nuvem?    • Por                que escolher a nuvem?    • Vamos               c...
O QUE É A NUVEM?                         não é só mais uma palavra no buzzword bingoSaturday, July 9, 2011
HOSPEDAGEM COMUM    • Conta   compatilhada, VPS ou        máquina local    • Uma                máquina, um local    • Pag...
Própria              HOSPEDAGEM COMUM    • Conta   compatilhada, VPS ou        máquina local    • Uma                máqui...
COMPUTAÇÃO NA NUVEM    •   Menos “apego físico” (virtualização)    •   Uma ou mais máquinas ou        “instancias”    •   ...
Dados                              Aplicação                              Software                         Sistema Operaci...
Armazenamento                          Dados           Compartilhar               Publicação             Aplicação        ...
IaaS a Service”                         “Infrastructure as                         “Infraestrutura como Serviço”          ...
IaaS a Service”                         “Infrastructure as                         “Infraestrutura como Serviço”          ...
PaaS                           “Platform as a Service”                         “Plataforma como Serviço”                  ...
PaaS                           “Platform as a Service”                         “Plataforma como Serviço”                  ...
SaaS                          “Software as a Service”                         “Software como Serviço”                     ...
SaaS                          “Software as a Service”                         “Software como Serviço”                     ...
X       POR QUE ESCOLHER A NUVEM?                         Quais são as vantagens de escolher a nuvem?Saturday, July 9, 2011
trafego                           tempo         O MODELO CONTA DE LUZSaturday, July 9, 2011
trafego                           tempo         O MODELO CONTA DE LUZSaturday, July 9, 2011
trafego              pico                           tempo         O MODELO CONTA DE LUZSaturday, July 9, 2011
trafego              pico                           tempo         O MODELO CONTA DE LUZSaturday, July 9, 2011
trafego              pico                           tempo         O MODELO CONTA DE LUZSaturday, July 9, 2011
IaaS   Paas   SaaS                                  custos                   gerenciamento do                          ser...
DISPONIBILIDADESaturday, July 9, 2011
DISPONIBILIDADESaturday, July 9, 2011
DISPONIBILIDADESaturday, July 9, 2011
ESCALABILIDADE            Computação sem estado + Armazenamento durávelSaturday, July 9, 2011
ESCALABILIDADE            Computação sem estado + Armazenamento durávelSaturday, July 9, 2011
OLHANDO POR DENTROSaturday, July 9, 2011
Windows Azure                                         Fabric                               Compute            StorageSatur...
Fabric                         Middleware, usado para desenvolver, testar, publicar e                                     ...
Fabric                         Compute            StorageSaturday, July 9, 2011
Compute                         Web Role   Worker Role           VM Role                                                  ...
Fabric                         Compute            StorageSaturday, July 9, 2011
Versão cacheada de                                                       CDN          qualquer recurso                    ...
PRONTO PRA RODAR                                    para Desenvolver e Publicar    • Requisitos:          • IIS7         e...
CAIXA DE FERRAMENTAS    • Command                Line tools for PHP          • Cria o pacote da aplicação e roda no emulad...
Ambiente do Desenvolvedor                               Simulador Azure                 Código                            ...
Ambiente do Desenvolvedor                               Simulador Azure                 Código                            ...
Ambiente do Desenvolvedor                               Simulador Azure                 Código                            ...
Ambiente do Desenvolvedor                                         Simulador Azure                 Código                  ...
Ambiente do Desenvolvedor                               Simulador Azure                 Código                            ...
O BOM    • APIs               em REST          • Armazenamento          • Diagnósticos    • BD             Relacional: SQL...
O RUIM    • Gerenciamento      apenas        pelo Windows          • Sem    Emulador Azure              para SO não-Window...
COMO ISSO AFETA MEU CÓDIGO?          Que ferramentas podemos usar e como devemos desenhar                            nossa...
COM O QUE DEVO ME PREOCUPAR?Saturday, July 9, 2011
COM O QUE DEVO ME PREOCUPAR?                 CódigoSaturday, July 9, 2011
COM O QUE DEVO ME PREOCUPAR?                 Código   PHP rodando no IIS/WindowsSaturday, July 9, 2011
COM O QUE DEVO ME PREOCUPAR?           Arquitetura                 Código   PHP rodando no IIS/WindowsSaturday, July 9, 2011
COM O QUE DEVO ME PREOCUPAR?    Escalando a     aplicação           Arquitetura                 Código   PHP rodando no II...
COM O QUE DEVO ME PREOCUPAR?    Escalando a           Sem Armazenamento     aplicação                  Local           Arq...
COM O QUE DEVO ME PREOCUPAR?    Escalando a           Sem Armazenamento     Compartilhamento                              ...
COM O QUE DEVO ME PREOCUPAR?    Escalando a           Sem Armazenamento     Compartilhamento                              ...
COM O QUE DEVO ME PREOCUPAR?    Escalando a           Sem Armazenamento     Compartilhamento                              ...
COM O QUE DEVO ME PREOCUPAR?     Armazenamento    Escalando a           Sem Armazenamento     Compartilhamento            ...
COM O QUE DEVO ME PREOCUPAR?                    Que tipo?     Armazenamento    Escalando a                 Sem Armazenamen...
COM O QUE DEVO ME PREOCUPAR?                                   Tabela / Blob                    Que tipo?     Armazenament...
COM O QUE DEVO ME PREOCUPAR?                                   Tabela / Blob    Framework ou PHP SDK                    Qu...
COM O QUE DEVO ME PREOCUPAR?                                   Tabela / Blob    Framework ou PHP SDK                    Qu...
COM O QUE DEVO ME PREOCUPAR?                                   Tabela / Blob    Framework ou PHP SDK                    Qu...
FRAMEWORKS PRONTOS                       PARA O AZURESaturday, July 9, 2011
O QUE FAZ ELE SER                           COMPATÍVEL?                    Código     Roda usando PHP no Windows?         ...
Ferramentas    •   Blobs, Tables e Queues        (operações CRUD)    •   Classes auxiliares para        transporte HTTP, A...
Banco de Dados    • Drivers  de MS-SQL* são        compatíveis com        SQLAzure     * Usando pdo_sql_server, possivelme...
• PHP     roda normalmente              no Azure, qualquer              framework vai              funcionar.          • O...
AZURE PHP SDK    • Serviços:          • Blob         Storage          • Table         Storage          • Queue          St...
SAINDO PELA JANELA                              Aplicação de teste para ilustrar    • Aplicação           de teste: “Twitt...
SAINDO PELA JANELA                              Aplicação de teste para ilustrar    • Aplicação           de teste: “Twitt...
Twitter OAuth                           Segura ai..Saturday, July 9, 2011
Twitter OAuth                           Segura ai..Saturday, July 9, 2011
Twitter OAuth                           Segura ai..Saturday, July 9, 2011
Twitter OAuth                           Segura ai..                                         MySQLSaturday, July 9, 2011
Twitter OAuth                           Segura ai..                                         MySQL                         ...
Twitter OAuth                           Segura ai..                                         MySQL                         ...
Twitter OAuth                           Segura ai..                                         MySQL                         ...
Twitter OAuth                         Te ligo mais tarde..Saturday, July 9, 2011
Twitter OAuth                                                Queue                         Te ligo mais tarde..Saturday, J...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
Twitter OAuth                                                Queue                         Te ligo mais tarde..           ...
USANDO SQLAZURE                                                                     PDO MSSQL Driver                      ...
TODOS PARA A FILA                         //Add user to our Queue                         $qItem = new stdClass();        ...
TODOS PARA A FILA                         //Add user to our Queue                         $qItem = new stdClass();        ...
TODOS PARA A FILA                            //Add user to our Queue                            $qItem = new stdClass();  ...
PRIMEIRO QUE while (true){         try{                                                                      ENTRA, PRIMEI...
PRIMEIRO QUE while (true){         try{                                                                      ENTRA, PRIMEI...
PRIMEIRO QUE while (true){         try{                                                                       ENTRA, PRIME...
PRIMEIRO QUE while (true){         try{                                                                       ENTRA, PRIME...
PRIMEIRO QUE while (true){         try{                                                                      ENTRA, PRIMEI...
PRIMEIRO QUE while (true){         try{                                                                      ENTRA, PRIMEI...
SAINDO PELA JANELA    • Veja todas mudanças: github.com/rdohms/Sample-Azure-        App    • Compare             estes bra...
FECHANDO A JANELA    • Descobrimos              o que é a nuvem    • Vimos              razões por que escolher a nuvem   ...
LEITURA COMPLEMENTAR...        PHP Development in the        Cloud        ISBN: 9780981034522        Pages: 172        Aut...
COMECE A BRINCAR..    • Conta              de teste gratuita: WindowsAzurePass.com    • Procure               o pessoal da...
http://slides.doh.ms twitter.com/rdohms http://doh.ms                         Perguntas?                         OBRIGADO!...
Upcoming SlideShare
Loading in...5
×

TDC 2011 - Open a Window, see the clouds

1,864

Published on

Sua aplicação esta pronta para decolar na nuvem? O que significa isso? Com o que você precisa se preocupar? Quais frameworks e ferramentas são necessários e quais novos conceitos você deve colocar na sua caixa de ferramentas PHP para estar pronto? Conheça um pouco mais sobre a plataforma Windows Azure e suas funcionalidades, além de descobrir mais quais ferramentas e frameworks estão prontos para se beneficiarem deste novo paradigma.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,864
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TDC 2011 - Open a Window, see the clouds

  1. 1. Open a Window, see the clouds Rafael Dohms photo credit: Denis GrzeticSaturday, July 9, 2011
  2. 2. Rafael Dohms photo credit: Eli White Evangelista PHP, membro ativo da Comunidade PHP e certificado ZCE. Ele ajudou na fundação de dois Grupos de Usuários de PHP ao longo do tempo e hoje compartilha a coordenação do PHPSP. Desenvolvedor, gamer e apaixonado por código ele também é host do primeiro podcast de PHP do Brasil: PHPSPCast. Atualmente ele trabalha na equipe SWAT do grupo MIH, uma equipe de experts que fornecem conhecimento técnico para o grupo além de trabalhar com P&D buscando novos nichos da internet e tecnologia. Seu papel como Desenvolvedor Sênior é codar, treinar e auxiliar outras empresas e se divertir enquanto faz isso.Saturday, July 9, 2011
  3. 3. OLHANDO PELA JANELA •O que é a nuvem? • Por que escolher a nuvem? • Vamos conhecer o Windows Azure • Como isso vai afetar meu código?Saturday, July 9, 2011
  4. 4. O QUE É A NUVEM? não é só mais uma palavra no buzzword bingoSaturday, July 9, 2011
  5. 5. HOSPEDAGEM COMUM • Conta compatilhada, VPS ou máquina local • Uma máquina, um local • Pagamento mensalSaturday, July 9, 2011
  6. 6. Própria HOSPEDAGEM COMUM • Conta compatilhada, VPS ou máquina local • Uma máquina, um local • Pagamento mensalSaturday, July 9, 2011
  7. 7. COMPUTAÇÃO NA NUVEM • Menos “apego físico” (virtualização) • Uma ou mais máquinas ou “instancias” • Geograficamente espalhada • Pagamento por hora/recurso • “abstração” de recursos • 3 Sabores: IaaS, PaaS, SaaSSaturday, July 9, 2011
  8. 8. Dados Aplicação Software Sistema Operacional Hardware/RedeSaturday, July 9, 2011
  9. 9. Armazenamento Dados Compartilhar Publicação Aplicação Desenvolvimento MySQL Software Apache Configuração Sistema Operacional Upgrades Resfriamento Hardware/Rede CabeamentoSaturday, July 9, 2011
  10. 10. IaaS a Service” “Infrastructure as “Infraestrutura como Serviço” Dados Aplicação Software Sistema Operacional Hardware/RedeSaturday, July 9, 2011
  11. 11. IaaS a Service” “Infrastructure as “Infraestrutura como Serviço” Dados Aplicação Software Sistema Operacional você eles Hardware/RedeSaturday, July 9, 2011
  12. 12. PaaS “Platform as a Service” “Plataforma como Serviço” Dados Aplicação Software Sistema Operacional Hardware/RedeSaturday, July 9, 2011
  13. 13. PaaS “Platform as a Service” “Plataforma como Serviço” Dados Aplicação você eles Software Sistema Operacional Hardware/RedeSaturday, July 9, 2011
  14. 14. SaaS “Software as a Service” “Software como Serviço” Dados Aplicação Software Sistema Operacional Hardware/RedeSaturday, July 9, 2011
  15. 15. SaaS “Software as a Service” “Software como Serviço” Dados você eles Aplicação Software Sistema Operacional Hardware/RedeSaturday, July 9, 2011
  16. 16. X POR QUE ESCOLHER A NUVEM? Quais são as vantagens de escolher a nuvem?Saturday, July 9, 2011
  17. 17. trafego tempo O MODELO CONTA DE LUZSaturday, July 9, 2011
  18. 18. trafego tempo O MODELO CONTA DE LUZSaturday, July 9, 2011
  19. 19. trafego pico tempo O MODELO CONTA DE LUZSaturday, July 9, 2011
  20. 20. trafego pico tempo O MODELO CONTA DE LUZSaturday, July 9, 2011
  21. 21. trafego pico tempo O MODELO CONTA DE LUZSaturday, July 9, 2011
  22. 22. IaaS Paas SaaS custos gerenciamento do servidor gerenciamento do software publicação da aplicaçãoSaturday, July 9, 2011
  23. 23. DISPONIBILIDADESaturday, July 9, 2011
  24. 24. DISPONIBILIDADESaturday, July 9, 2011
  25. 25. DISPONIBILIDADESaturday, July 9, 2011
  26. 26. ESCALABILIDADE Computação sem estado + Armazenamento durávelSaturday, July 9, 2011
  27. 27. ESCALABILIDADE Computação sem estado + Armazenamento durávelSaturday, July 9, 2011
  28. 28. OLHANDO POR DENTROSaturday, July 9, 2011
  29. 29. Windows Azure Fabric Compute StorageSaturday, July 9, 2011
  30. 30. Fabric Middleware, usado para desenvolver, testar, publicar e gerenciar sua aplicação. AppFabric developerSaturday, July 9, 2011
  31. 31. Fabric Compute StorageSaturday, July 9, 2011
  32. 32. Compute Web Role Worker Role VM Role Máquina virtual de Aplicação Web Processamento em Windows Server rodando sobre o plano de fundo 2008 carregada IIS sob demandaSaturday, July 9, 2011
  33. 33. Fabric Compute StorageSaturday, July 9, 2011
  34. 34. Versão cacheada de CDN qualquer recurso com uma URI Storage Armazenamento de dados Table Storage Blob Storage SQL Azure Queue Troca de Armazenamento Texto e dados Compatível com o mensagens entre o estruturado binários SQL Server Web e o WorkerSaturday, July 9, 2011
  35. 35. PRONTO PRA RODAR para Desenvolver e Publicar • Requisitos: • IIS7 e ferramentas • Azure SDK (instala o DevAppFabric, o simulador de azure) • Command Line Tools (linha de comando) • Command line tools for PHPSaturday, July 9, 2011
  36. 36. CAIXA DE FERRAMENTAS • Command Line tools for PHP • Cria o pacote da aplicação e roda no emulador, simulando o computacional e o armazenamento. • Azure Tools para Eclipse • Torna a maioria dos processos “next, next finish” e fornece uma IDE completa.Saturday, July 9, 2011
  37. 37. Ambiente do Desenvolvedor Simulador Azure Código (Dev fabric) Ferramentas de empacotamento (linha de comando ou eclipse) Pacote + Configuração do Serviço Azure Window Azure (AppFabric) SQLAzure StorageSaturday, July 9, 2011
  38. 38. Ambiente do Desenvolvedor Simulador Azure Código (Dev fabric) PHP Ferramentas de empacotamento (linha de comando ou eclipse) Pacote + Configuração do Serviço Azure Window Azure (AppFabric) SQLAzure StorageSaturday, July 9, 2011
  39. 39. Ambiente do Desenvolvedor Simulador Azure Código (Dev fabric) PHP Ferramentas de empacotamento (linha de comando ou eclipse) Pacote + Configuração do Serviço Azure Window Azure (AppFabric) SQLAzure StorageSaturday, July 9, 2011
  40. 40. Ambiente do Desenvolvedor Simulador Azure Código (Dev fabric) php package.php PHP --project="twitter-azure" Ferramentas de empacotamento --target="c:azure-build" de comando ou eclipse) (linha --source="C:twitter-azure" Pacote + Configuração do Serviço --defaultDoc="public/index.php" --phpRuntime="C:Program Files (x86)PHPv5.3" --cleanRebuild --runDevFabric Azure Window Azure (AppFabric) SQLAzure StorageSaturday, July 9, 2011
  41. 41. Ambiente do Desenvolvedor Simulador Azure Código (Dev fabric) PHP Ferramentas de empacotamento (linha de comando ou eclipse) Pacote + Configuração do Serviço Azure Window Azure (AppFabric) SQLAzure StorageSaturday, July 9, 2011
  42. 42. O BOM • APIs em REST • Armazenamento • Diagnósticos • BD Relacional: SQL Azure • Arquitetura por “Roles”Saturday, July 9, 2011
  43. 43. O RUIM • Gerenciamento apenas pelo Windows • Sem Emulador Azure para SO não-Windows • Sem ferramentas de empacotamento para SO não-WindowsSaturday, July 9, 2011
  44. 44. COMO ISSO AFETA MEU CÓDIGO? Que ferramentas podemos usar e como devemos desenhar nossas aplicações?Saturday, July 9, 2011
  45. 45. COM O QUE DEVO ME PREOCUPAR?Saturday, July 9, 2011
  46. 46. COM O QUE DEVO ME PREOCUPAR? CódigoSaturday, July 9, 2011
  47. 47. COM O QUE DEVO ME PREOCUPAR? Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  48. 48. COM O QUE DEVO ME PREOCUPAR? Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  49. 49. COM O QUE DEVO ME PREOCUPAR? Escalando a aplicação Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  50. 50. COM O QUE DEVO ME PREOCUPAR? Escalando a Sem Armazenamento aplicação Local Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  51. 51. COM O QUE DEVO ME PREOCUPAR? Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  52. 52. COM O QUE DEVO ME PREOCUPAR? Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  53. 53. COM O QUE DEVO ME PREOCUPAR? Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  54. 54. COM O QUE DEVO ME PREOCUPAR? Armazenamento Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  55. 55. COM O QUE DEVO ME PREOCUPAR? Que tipo? Armazenamento Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  56. 56. COM O QUE DEVO ME PREOCUPAR? Tabela / Blob Que tipo? Armazenamento Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  57. 57. COM O QUE DEVO ME PREOCUPAR? Tabela / Blob Framework ou PHP SDK Que tipo? Armazenamento Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  58. 58. COM O QUE DEVO ME PREOCUPAR? Tabela / Blob Framework ou PHP SDK Que tipo? Banco de Dados Armazenamento Relacional Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  59. 59. COM O QUE DEVO ME PREOCUPAR? Tabela / Blob Framework ou PHP SDK Que tipo? Banco de Migrar para SQL Azure Dados Armazenamento Relacional Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Worker Roles Filas Arquitetura Código PHP rodando no IIS/WindowsSaturday, July 9, 2011
  60. 60. FRAMEWORKS PRONTOS PARA O AZURESaturday, July 9, 2011
  61. 61. O QUE FAZ ELE SER COMPATÍVEL? Código Roda usando PHP no Windows? Ferramentas Tem wrappers das APIs? Banco de Dados É compatível com MS SQL Server?Saturday, July 9, 2011
  62. 62. Ferramentas • Blobs, Tables e Queues (operações CRUD) • Classes auxiliares para transporte HTTP, AuthN/ AuthZ, REST and Gerenciamento de Erros • Gerenciamento, Instrumentação e supporte a logs Banco de Dados • Não testado, mas deve funcionar.Saturday, July 9, 2011
  63. 63. Banco de Dados • Drivers de MS-SQL* são compatíveis com SQLAzure * Usando pdo_sql_server, possivelmente o pdo_dblib Powered by Doctrine:Saturday, July 9, 2011
  64. 64. • PHP roda normalmente no Azure, qualquer framework vai funcionar. • Outras ferramentas para se comunicar com recursos como: BD, Filas etc... • Estes aqui já foram testados!Saturday, July 9, 2011
  65. 65. AZURE PHP SDK • Serviços: • Blob Storage • Table Storage • Queue Storage • Diagnostic Tools • Compatível com PHP 5+Saturday, July 9, 2011
  66. 66. SAINDO PELA JANELA Aplicação de teste para ilustrar • Aplicação de teste: “Twitter RT Calculator” • Objetivo: Analisar sues últimos tweets, verificar quais foram re-tuitados e fazer cálculos baseado em palavras e localizações. • Exemplificar a migração: • Banco de dados: MySQL > SQLAzure • Mover o processamento para um Worker Role e usar a FilaSaturday, July 9, 2011
  67. 67. SAINDO PELA JANELA Aplicação de teste para ilustrar • Aplicação de teste: “Twitter RT Calculator” • Objetivo: Analisar sues últimos tweets, verificar quais foram re-tuitados e fazer cálculos baseado em palavras e localizações. • Exemplificar a migração: • Banco de dados: MySQL > SQLAzure • Mover o processamento para um Worker Role e usar a FilaSaturday, July 9, 2011
  68. 68. Twitter OAuth Segura ai..Saturday, July 9, 2011
  69. 69. Twitter OAuth Segura ai..Saturday, July 9, 2011
  70. 70. Twitter OAuth Segura ai..Saturday, July 9, 2011
  71. 71. Twitter OAuth Segura ai.. MySQLSaturday, July 9, 2011
  72. 72. Twitter OAuth Segura ai.. MySQL ResultadosSaturday, July 9, 2011
  73. 73. Twitter OAuth Segura ai.. MySQL ResultadosSaturday, July 9, 2011
  74. 74. Twitter OAuth Segura ai.. MySQL ResultadosSaturday, July 9, 2011
  75. 75. Twitter OAuth Te ligo mais tarde..Saturday, July 9, 2011
  76. 76. Twitter OAuth Queue Te ligo mais tarde..Saturday, July 9, 2011
  77. 77. Twitter OAuth Queue Te ligo mais tarde.. WorkerSaturday, July 9, 2011
  78. 78. Twitter OAuth Queue Te ligo mais tarde.. WorkerSaturday, July 9, 2011
  79. 79. Twitter OAuth Queue Te ligo mais tarde.. WorkerSaturday, July 9, 2011
  80. 80. Twitter OAuth Queue Te ligo mais tarde.. Worker SQLAzureSaturday, July 9, 2011
  81. 81. Twitter OAuth Queue Te ligo mais tarde.. Worker SQLAzureSaturday, July 9, 2011
  82. 82. Twitter OAuth Queue Te ligo mais tarde.. Worker Resultados SQLAzureSaturday, July 9, 2011
  83. 83. Twitter OAuth Queue Te ligo mais tarde.. Worker Worker Worker Worker Worker Worker Worker Worker Worker Worker Worker Resultados SQLAzureSaturday, July 9, 2011
  84. 84. USANDO SQLAZURE PDO MSSQL Driver doctrine.dbal.connection_options: driver: pdo_sqlsrv dbname: twitter-sample-app host: pl69qjwy8k.database.windows.net port: 1433 user: rdohmsDemo@pl69qjwy8k password: *password*Saturday, July 9, 2011
  85. 85. TODOS PARA A FILA //Add user to our Queue $qItem = new stdClass(); $qItem->twitter_handle = $twitterInfo->screen_name; $qManager = new AzureQueue($this->getApp()->getConfig(azure)); $qManager->addToQueue($qItem);Saturday, July 9, 2011
  86. 86. TODOS PARA A FILA //Add user to our Queue $qItem = new stdClass(); $qItem->twitter_handle = $twitterInfo->screen_name; $qManager = new AzureQueue($this->getApp()->getConfig(azure)); $qManager->addToQueue($qItem); $this->client = new Zend_Service_WindowsAzure_Storage_Queue( $qConfig[host], $qConfig[accountName], $qConfig[accountKey] ); $this->queue = $this->getQueueInstance($queueName); __contruct()Saturday, July 9, 2011
  87. 87. TODOS PARA A FILA //Add user to our Queue $qItem = new stdClass(); $qItem->twitter_handle = $twitterInfo->screen_name; $qManager = new AzureQueue($this->getApp()->getConfig(azure)); $qManager->addToQueue($qItem); $this->client = new Zend_Service_WindowsAzure_Storage_Queue( $qConfig[host], $qConfig[accountName], $qConfig[accountKey] ); $this->queue = $this->getQueueInstance($queueName); __contruct() public function addToQueue($item) { $this->client->putMessage($this->queue->name, serialize($item)); }Saturday, July 9, 2011
  88. 88. PRIMEIRO QUE while (true){ try{ ENTRA, PRIMEIRO $this->logAction("Checking for messages..."); //Read Queue QUE SAI $qMessage = $qManager->getMessage(); //If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; } //Retrieve User {... doctrine query for stored twitter handle ...} //Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage); //Process User $this->processUser($user); //Warn User $this->sendWarning($user); } catch (Exception $e) { $this->logAction("Exception found:" .$e->getMessage } $this->logAction("Initiating sleep for next loop."); sleep(2); }Saturday, July 9, 2011
  89. 89. PRIMEIRO QUE while (true){ try{ ENTRA, PRIMEIRO $this->logAction("Checking for messages..."); //Read Queue QUE SAI $qMessage = $qManager->getMessage(); //If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; } //Retrieve User {... doctrine query for stored twitter handle ...} //Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage); //Process User $this->processUser($user); //Warn User $this->sendWarning($user); } catch (Exception $e) { $this->logAction("Exception found:" .$e->getMessage } $this->logAction("Initiating sleep for next loop."); sleep(2); }Saturday, July 9, 2011
  90. 90. PRIMEIRO QUE while (true){ try{ ENTRA, PRIMEIRO $this->logAction("Checking for messages..."); //Read Queue QUE SAI $qMessage = $qManager->getMessage(); //If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; function getMessage() public } { $messages = $this->client->getMessages($this->queue->name, 1); //Retrieve User {... doctrine query for stored twitter handle ...} if (count($messages) > 0){ $qMessage = array_shift($messages); //Clear Message $this->logAction("Removing= message form queue..."); $message new stdClass(); $qManager->deleteMessage($qMessage); = $qMessage; $message->qMessage $message->decoded = unserialize($qMessage->messagetext); //Process User $this->processUser($user); return $message; } //Warn User $this->sendWarning($user); return null; } catch (Exception $e) { } $this->logAction("Exception found:" .$e->getMessage } $this->logAction("Initiating sleep for next loop."); sleep(2); }Saturday, July 9, 2011
  91. 91. PRIMEIRO QUE while (true){ try{ ENTRA, PRIMEIRO $this->logAction("Checking for messages..."); //Read Queue QUE SAI $qMessage = $qManager->getMessage(); //If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; function getMessage() public } { $messages = $this->client->getMessages($this->queue->name, 1); //Retrieve User {... doctrine query for stored twitter handle ...} if (count($messages) > 0){ $qMessage = array_shift($messages); //Clear Message $this->logAction("Removing= message form queue..."); $message new stdClass(); $qManager->deleteMessage($qMessage); = $qMessage; $message->qMessage $message->decoded = unserialize($qMessage->messagetext); //Process User $this->processUser($user); return $message; } //Warn User $this->sendWarning($user); array( return null; messageid => $messageId, insertiontime => $insertionTime, } catch (Exception $e) { } expirationtime => $expirationTime, $this->logAction("Exception found:" .$e->getMessage popreceipt => $popReceipt, timenextvisible => $timeNextVisible, } dequeuecount => $dequeueCount, messagetext => $messageText $this->logAction("Initiating sleep for next loop."); ); sleep(2); }Saturday, July 9, 2011
  92. 92. PRIMEIRO QUE while (true){ try{ ENTRA, PRIMEIRO $this->logAction("Checking for messages..."); //Read Queue QUE SAI $qMessage = $qManager->getMessage(); //If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; } //Retrieve User {... doctrine query for stored twitter handle ...} //Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage); //Process User $this->processUser($user); //Warn User $this->sendWarning($user); } catch (Exception $e) { $this->logAction("Exception found:" .$e->getMessage } $this->logAction("Initiating sleep for next loop."); sleep(2); }Saturday, July 9, 2011
  93. 93. PRIMEIRO QUE while (true){ try{ ENTRA, PRIMEIRO $this->logAction("Checking for messages..."); //Read Queue QUE SAI $qMessage = $qManager->getMessage(); //If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; } //Retrieve User {... doctrine query for stored twitter handle ...} //Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage); Após 20 segundos, a mensagem //Process User volta para a fila $this->processUser($user); //Warn User $this->sendWarning($user); } catch (Exception $e) { $this->logAction("Exception found:" .$e->getMessage } $this->logAction("Initiating sleep for next loop."); sleep(2); }Saturday, July 9, 2011
  94. 94. SAINDO PELA JANELA • Veja todas mudanças: github.com/rdohms/Sample-Azure- App • Compare estes branches: non-cloud-version x cloud-designed-versionSaturday, July 9, 2011
  95. 95. FECHANDO A JANELA • Descobrimos o que é a nuvem • Vimos razões por que escolher a nuvem • Conhecemos o Windows Azure e seus recursos • Olhamos rapidamente em como isso afeta nosso códigoSaturday, July 9, 2011
  96. 96. LEITURA COMPLEMENTAR... PHP Development in the Cloud ISBN: 9780981034522 Pages: 172 Authors: Ivo Jansch and Vito Chin http://bit.ly/i9Awk0Saturday, July 9, 2011
  97. 97. COMECE A BRINCAR.. • Conta de teste gratuita: WindowsAzurePass.com • Procure o pessoal da Microsoft no evento http://azurephp.com http://phpazure.codeplex.com/ http://azurephptools.codeplex.com/ http://www.ben-waine.co.uk/blog/php-azure http://marvelley.com/category/php/php-on-azure/Saturday, July 9, 2011
  98. 98. http://slides.doh.ms twitter.com/rdohms http://doh.ms Perguntas? OBRIGADO! rafael@doh.ms Avalie essa palestra: http://joind.in/3572Saturday, July 9, 2011
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×