0
Open a Window, see the clouds                             Azure e PHP                             Rafael Dohms   photo cre...
photo credit: Rob Allen                         Rafael Dohms       Evangelista PHP, membro ativo da Comunidade       PHP e...
OLHANDO PELA JANELA    •O         que é a nuvem?    • Por             que escolher a nuvem?    • Vamos                  co...
O QUE É A NUVEM?                     não é só mais uma palavra no buzzword bingoFriday, September 30, 2011
HOSPEDAGEM COMUM    • Conta  compartilhada, VPS        ou máquina local    • Uma             máquina, em um local    • Pag...
Própria              HOSPEDAGEM COMUM    • Conta  compartilhada, VPS        ou máquina local    • Uma             máquina,...
COMPUTAÇÃO NA NUVEM    •   Menos “apego físico” (virtualização)    •   Uma ou mais máquinas ou        “instancias”    •   ...
Dados                                  Aplicação                                  Software                             Sis...
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”          ...
SaaS                              “Software as a Service”                             “Software como Serviço”             ...
IaaS   Paas   SaaS                              custos                  gerenciamento do                         servidor ...
X       POR QUE ESCOLHER A NUVEM?                        Quais são as vantagens de escolher a nuvem?Friday, September 30, ...
trafego                             tempo         O MODELO CONTA DE LUZFriday, September 30, 2011
trafego                             tempo         O MODELO CONTA DE LUZFriday, September 30, 2011
trafego             pico                             tempo         O MODELO CONTA DE LUZFriday, September 30, 2011
trafego             pico                             tempo         O MODELO CONTA DE LUZFriday, September 30, 2011
trafego             pico                             tempo         O MODELO CONTA DE LUZFriday, September 30, 2011
DISPONIBILIDADEFriday, September 30, 2011
DISPONIBILIDADEFriday, September 30, 2011
DISPONIBILIDADEFriday, September 30, 2011
ESCALABILIDADE            Computação sem estado + Armazenamento durávelFriday, September 30, 2011
ESCALABILIDADE            Computação sem estado + Armazenamento durávelFriday, September 30, 2011
OLHANDO POR DENTROFriday, September 30, 2011
Windows Azure                                       Fabric                             Compute            StorageFriday, S...
Fabric                             Middleware, usado para desenvolver, testar, publicar e                                 ...
Fabric                             Compute            StorageFriday, September 30, 2011
Compute                     Web Role      Worker Role           VM Role                                                   ...
Fabric                             Compute            StorageFriday, September 30, 2011
Versão cacheada de                                                       CDN          qualquer recurso                    ...
PRONTO PRA RODAR                                   para Desenvolver e Publicar    • Requisitos:         • IIS7         e f...
CAIXA DE FERRAMENTAS    • Command                    Line tools for PHP         • Cria o pacote da aplicação e roda no emu...
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 Azure ...
O RUIM    • Gerenciamento          apenas        pelo Windows         • Sem    Emulador Azure             para SO não-Wind...
COMO ISSO AFETA MEU CÓDIGO?         Que ferramentas podemos usar e como devemos desenhar                           nossas ...
COM O QUE DEVO ME PREOCUPAR?Friday, September 30, 2011
COM O QUE DEVO ME PREOCUPAR?                CódigoFriday, September 30, 2011
COM O QUE DEVO ME PREOCUPAR?                Código       PHP rodando no IIS/WindowsFriday, September 30, 2011
COM O QUE DEVO ME PREOCUPAR?           Arquitetura                Código       PHP rodando no IIS/WindowsFriday, September...
COM O QUE DEVO ME PREOCUPAR?    Escalando a     aplicação           Arquitetura                Código       PHP rodando no...
COM O QUE DEVO ME PREOCUPAR?    Escalando a              Sem Armazenamento     aplicação                     Local        ...
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 Armazenamento ...
COM O QUE DEVO ME PREOCUPAR?                                  Tabela / Blob                   Que tipo?    Armazenamento  ...
COM O QUE DEVO ME PREOCUPAR?                                  Tabela / Blob    Framework ou PHP SDK                   Que ...
COM O QUE DEVO ME PREOCUPAR?                                  Tabela / Blob    Framework ou PHP SDK                   Que ...
COM O QUE DEVO ME PREOCUPAR?                                  Tabela / Blob    Framework ou PHP SDK                   Que ...
FRAMEWORKS PRONTOS                      PARA O AZUREFriday, September 30, 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.         • Outra...
AZURE PHP SDK    • Serviços:         • Blob              Storage         • Table              Storage         • Queue     ...
SAINDO PELA JANELA                                  Aplicação de teste para ilustrar    • Aplicação               de teste...
SAINDO PELA JANELA                                  Aplicação de teste para ilustrar    • Aplicação               de teste...
Twitter OAuth                               Segura ai..Friday, September 30, 2011
Twitter OAuth                               Segura ai..Friday, September 30, 2011
Twitter OAuth                               Segura ai..Friday, September 30, 2011
Twitter OAuth                               Segura ai..                                             MySQLFriday, September...
Twitter OAuth                               Segura ai..                                             MySQL                 ...
Twitter OAuth                               Segura ai..                                             MySQL                 ...
Twitter OAuth                               Segura ai..                                             MySQL                 ...
Twitter OAuth                         Te ligo mais tarde..Friday, September 30, 2011
Twitter OAuth                                                Queue                         Te ligo mais tarde..Friday, Sep...
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, PRIMEIRO...
PRIMEIRO QUE while (true){        try{                                                                     ENTRA, PRIMEIRO...
PRIMEIRO QUE while (true){        try{                                                                       ENTRA, PRIMEI...
PRIMEIRO QUE while (true){        try{                                                                       ENTRA, PRIMEI...
PRIMEIRO QUE while (true){        try{                                                                     ENTRA, PRIMEIRO...
PRIMEIRO QUE while (true){        try{                                                                     ENTRA, PRIMEIRO...
SAINDO PELA JANELA    • Veja todas mudanças: github.com/rdohms/Sample-Azure-        App    • Compare                 estes...
FECHANDO A JANELA    • Descobrimos                  o que é a nuvem    • Vimos                  razões por que escolher a ...
LEITURA COMPLEMENTAR...        PHP Development in the        Cloud        ISBN: 9780981034522        Pages: 172        Aut...
COMECE A BRINCAR..    • Conta                  de teste gratuita: WindowsAzurePass.com                                    ...
http://slides.doh.ms twitter.com/rdohms http://doh.ms                             Perguntas?                             O...
Upcoming SlideShare
Loading in...5
×

Open a Window, see the clouds - TechEd 2011

1,629

Published on

Palestra realizada no TechEd 2011 em São Paulo.

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

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

No notes for slide

Transcript of "Open a Window, see the clouds - TechEd 2011"

  1. 1. Open a Window, see the clouds Azure e PHP Rafael Dohms photo credit: Denis GrzeticFriday, September 30, 2011
  2. 2. photo credit: Rob Allen Rafael Dohms 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.Friday, September 30, 2011
  3. 3. OLHANDO PELA JANELA •O que é a nuvem? • Por que escolher a nuvem? • Vamos conhecer o Windows Azure com PHP • Como isso vai afetar meu código?Friday, September 30, 2011
  4. 4. O QUE É A NUVEM? não é só mais uma palavra no buzzword bingoFriday, September 30, 2011
  5. 5. HOSPEDAGEM COMUM • Conta compartilhada, VPS ou máquina local • Uma máquina, em um local • Pagamento mensalFriday, September 30, 2011
  6. 6. Própria HOSPEDAGEM COMUM • Conta compartilhada, VPS ou máquina local • Uma máquina, em um local • Pagamento mensalFriday, September 30, 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, SaaSFriday, September 30, 2011
  8. 8. Dados Aplicação Software Sistema Operacional Hardware/RedeFriday, September 30, 2011
  9. 9. Armazenamento Dados Compartilhar Publicação Aplicação Desenvolvimento MySQL Software Apache Configuração Sistema Operacional Upgrades Resfriamento Hardware/Rede CabeamentoFriday, September 30, 2011
  10. 10. IaaS a Service” “Infrastructure as “Infraestrutura como Serviço” Dados Aplicação Software Sistema Operacional Hardware/RedeFriday, September 30, 2011
  11. 11. IaaS a Service” “Infrastructure as “Infraestrutura como Serviço” Dados Aplicação Software Sistema Operacional você eles Hardware/RedeFriday, September 30, 2011
  12. 12. PaaS “Platform as a Service” “Plataforma como Serviço” Dados Aplicação você eles Software Sistema Operacional Hardware/RedeFriday, September 30, 2011
  13. 13. SaaS “Software as a Service” “Software como Serviço” Dados você eles Aplicação Software Sistema Operacional Hardware/RedeFriday, September 30, 2011
  14. 14. IaaS Paas SaaS custos gerenciamento do servidor gerenciamento do software publicação da aplicaçãoFriday, September 30, 2011
  15. 15. X POR QUE ESCOLHER A NUVEM? Quais são as vantagens de escolher a nuvem?Friday, September 30, 2011
  16. 16. trafego tempo O MODELO CONTA DE LUZFriday, September 30, 2011
  17. 17. trafego tempo O MODELO CONTA DE LUZFriday, September 30, 2011
  18. 18. trafego pico tempo O MODELO CONTA DE LUZFriday, September 30, 2011
  19. 19. trafego pico tempo O MODELO CONTA DE LUZFriday, September 30, 2011
  20. 20. trafego pico tempo O MODELO CONTA DE LUZFriday, September 30, 2011
  21. 21. DISPONIBILIDADEFriday, September 30, 2011
  22. 22. DISPONIBILIDADEFriday, September 30, 2011
  23. 23. DISPONIBILIDADEFriday, September 30, 2011
  24. 24. ESCALABILIDADE Computação sem estado + Armazenamento durávelFriday, September 30, 2011
  25. 25. ESCALABILIDADE Computação sem estado + Armazenamento durávelFriday, September 30, 2011
  26. 26. OLHANDO POR DENTROFriday, September 30, 2011
  27. 27. Windows Azure Fabric Compute StorageFriday, September 30, 2011
  28. 28. Fabric Middleware, usado para desenvolver, testar, publicar e gerenciar sua aplicação. AppFabric developerFriday, September 30, 2011
  29. 29. Fabric Compute StorageFriday, September 30, 2011
  30. 30. 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 demandaFriday, September 30, 2011
  31. 31. Fabric Compute StorageFriday, September 30, 2011
  32. 32. 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 WorkerFriday, September 30, 2011
  33. 33. 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 PHPFriday, September 30, 2011
  34. 34. 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.Friday, September 30, 2011
  35. 35. 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 StorageFriday, September 30, 2011
  36. 36. 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 StorageFriday, September 30, 2011
  37. 37. 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 StorageFriday, September 30, 2011
  38. 38. Ambiente do Desenvolvedor Simulador Azure Código (Dev fabric) PHP php package.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 StorageFriday, September 30, 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 StorageFriday, September 30, 2011
  40. 40. O BOM • APIs em REST • Armazenamento • Diagnósticos • BD Relacional: SQL Azure • Arquitetura por “Roles”Friday, September 30, 2011
  41. 41. O RUIM • Gerenciamento apenas pelo Windows • Sem Emulador Azure para SO não-Windows • Sem ferramentas de empacotamento para SO não-WindowsFriday, September 30, 2011
  42. 42. COMO ISSO AFETA MEU CÓDIGO? Que ferramentas podemos usar e como devemos desenhar nossas aplicações?Friday, September 30, 2011
  43. 43. COM O QUE DEVO ME PREOCUPAR?Friday, September 30, 2011
  44. 44. COM O QUE DEVO ME PREOCUPAR? CódigoFriday, September 30, 2011
  45. 45. COM O QUE DEVO ME PREOCUPAR? Código PHP rodando no IIS/WindowsFriday, September 30, 2011
  46. 46. COM O QUE DEVO ME PREOCUPAR? Arquitetura Código PHP rodando no IIS/WindowsFriday, September 30, 2011
  47. 47. COM O QUE DEVO ME PREOCUPAR? Escalando a aplicação Arquitetura Código PHP rodando no IIS/WindowsFriday, September 30, 2011
  48. 48. COM O QUE DEVO ME PREOCUPAR? Escalando a Sem Armazenamento aplicação Local Arquitetura Código PHP rodando no IIS/WindowsFriday, September 30, 2011
  49. 49. COM O QUE DEVO ME PREOCUPAR? Escalando a Sem Armazenamento Compartilhamento Local de sessão aplicação Arquitetura Código PHP rodando no IIS/WindowsFriday, September 30, 2011
  50. 50. 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/WindowsFriday, September 30, 2011
  51. 51. 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/WindowsFriday, September 30, 2011
  52. 52. 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/WindowsFriday, September 30, 2011
  53. 53. 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/WindowsFriday, September 30, 2011
  54. 54. 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/WindowsFriday, September 30, 2011
  55. 55. 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/WindowsFriday, September 30, 2011
  56. 56. 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/WindowsFriday, September 30, 2011
  57. 57. 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/WindowsFriday, September 30, 2011
  58. 58. FRAMEWORKS PRONTOS PARA O AZUREFriday, September 30, 2011
  59. 59. 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?Friday, September 30, 2011
  60. 60. 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.Friday, September 30, 2011
  61. 61. Banco de Dados • Drivers de MS-SQL* são compatíveis com SQLAzure * Usando pdo_sql_server, possivelmente o pdo_dblib Powered by Doctrine:Friday, September 30, 2011
  62. 62. • 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!Friday, September 30, 2011
  63. 63. AZURE PHP SDK • Serviços: • Blob Storage • Table Storage • Queue Storage • Diagnostic Tools • Compatível com PHP 5+Friday, September 30, 2011
  64. 64. 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 FilaFriday, September 30, 2011
  65. 65. 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 FilaFriday, September 30, 2011
  66. 66. Twitter OAuth Segura ai..Friday, September 30, 2011
  67. 67. Twitter OAuth Segura ai..Friday, September 30, 2011
  68. 68. Twitter OAuth Segura ai..Friday, September 30, 2011
  69. 69. Twitter OAuth Segura ai.. MySQLFriday, September 30, 2011
  70. 70. Twitter OAuth Segura ai.. MySQL ResultadosFriday, September 30, 2011
  71. 71. Twitter OAuth Segura ai.. MySQL ResultadosFriday, September 30, 2011
  72. 72. Twitter OAuth Segura ai.. MySQL ResultadosFriday, September 30, 2011
  73. 73. Twitter OAuth Te ligo mais tarde..Friday, September 30, 2011
  74. 74. Twitter OAuth Queue Te ligo mais tarde..Friday, September 30, 2011
  75. 75. Twitter OAuth Queue Te ligo mais tarde.. WorkerFriday, September 30, 2011
  76. 76. Twitter OAuth Queue Te ligo mais tarde.. WorkerFriday, September 30, 2011
  77. 77. Twitter OAuth Queue Te ligo mais tarde.. WorkerFriday, September 30, 2011
  78. 78. Twitter OAuth Queue Te ligo mais tarde.. Worker SQLAzureFriday, September 30, 2011
  79. 79. Twitter OAuth Queue Te ligo mais tarde.. Worker SQLAzureFriday, September 30, 2011
  80. 80. Twitter OAuth Queue Te ligo mais tarde.. Worker Resultados SQLAzureFriday, September 30, 2011
  81. 81. Twitter OAuth Queue Te ligo mais tarde.. Worker Worker Worker Worker Worker Worker Worker Worker Worker Worker Worker Resultados SQLAzureFriday, September 30, 2011
  82. 82. 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*Friday, September 30, 2011
  83. 83. 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);Friday, September 30, 2011
  84. 84. 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()Friday, September 30, 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); $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)); }Friday, September 30, 2011
  86. 86. 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); }Friday, September 30, 2011
  87. 87. 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); }Friday, September 30, 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; 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); }Friday, September 30, 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; 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); }Friday, September 30, 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; } //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); }Friday, September 30, 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; } //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); }Friday, September 30, 2011
  92. 92. SAINDO PELA JANELA • Veja todas mudanças: github.com/rdohms/Sample-Azure- App • Compare estes branches: non-cloud-version x cloud-designed-versionFriday, September 30, 2011
  93. 93. 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ódigoFriday, September 30, 2011
  94. 94. LEITURA COMPLEMENTAR... PHP Development in the Cloud ISBN: 9780981034522 Pages: 172 Authors: Ivo Jansch and Vito Chin http://bit.ly/i9Awk0Friday, September 30, 2011
  95. 95. COMECE A BRINCAR.. • Conta de teste gratuita: WindowsAzurePass.com 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/Friday, September 30, 2011
  96. 96. http://slides.doh.ms twitter.com/rdohms http://doh.ms Perguntas? OBRIGADO! rafael@doh.msFriday, September 30, 2011
  1. A particular slide catching your eye?

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

×