Técnicas para ser              escalável com07/07/2012         The Developers Conference   1
Filipe La RuinaWorks @ ecompete.com.br@filaruina07/07/2012                The Developers Conference   2
Escalabilidade07/07/2012       The Developers Conference   3
Escalabilidade               Técnicas não são regras!07/07/2012           The Developers Conference   4
O que é?07/07/2012   The Developers Conference   5
O que é?             O que não é?07/07/2012     The Developers Conference   6
O que é?                  O que não é?➔    Performance07/07/2012          The Developers Conference   7
O que é?                   O que não é?➔    Performance➔    Usar Tecnologia X07/07/2012              The Developers Confer...
O que é?                   O que não é?➔    Performance➔    Usar Tecnologia X➔    Separação de Responsabilidades07/07/2012...
O que é?                   O que não é?➔    Performance➔    Usar Tecnologia X➔    Separação de Responsabilidades07/07/2012...
Escalabilidade é uma característica             desejável em todo o sistema, em uma             rede ou em um processo, qu...
O que é?➔    Aguenta aumento no uso07/07/2012           The Developers Conference   12
O que é?➔    Aguenta aumento no uso➔    Aguenta aumento nos dados07/07/2012           The Developers Conference   13
O que é?➔    Aguenta aumento no uso➔    Aguenta aumento nos dados➔    Fácil manutenção07/07/2012             The Developer...
Vamos por Partes07/07/2012   The Developers Conference   15
1º Passo       Desenvolvimento07/07/2012   The Developers Conference   16
Desenvolvimento➔    Separação de Conceitos (OOP, Camadas, etc)07/07/2012             The Developers Conference   17
Desenvolvimento➔    Separação de Conceitos (OOP, Camadas, etc)             API                                    Cliente0...
Desenvolvimento➔    Separação de Conceitos (OOP, Camadas, etc)                  API       DB         API                  ...
Desenvolvimento➔    Arquitetura Orientada a Serviços         Authentication                                API            ...
Desenvolvimento➔    Use Controle de Versão07/07/2012             The Developers Conference   21
Desenvolvimento➔    Use Controle de Versão                      Usa esse blz?07/07/2012               The Developers Confe...
Desenvolvimento➔    Integração Contínua07/07/2012                The Developers Conference   23
Desenvolvimento➔    Integração Contínua    ➔        Build Automatizado (e rápido)07/07/2012                    The Develop...
Desenvolvimento➔    Integração Contínua    ➔        Build Automatizado (e rápido)    ➔        Testes07/07/2012            ...
Desenvolvimento➔    Integração Contínua    ➔        Build Automatizado (e rápido)    ➔        Testes    ➔        Verifique...
Desenvolvimento➔    Atualize-se07/07/2012            The Developers Conference   27
Desenvolvimento➔    Atualize-se                                                   THIS07/07/2012            The Developers...
2º Passo             Monitoramento07/07/2012       The Developers Conference   29
Monitoramento➔    Por que?07/07/2012        The Developers Conference   30
Monitoramento➔    Por que?07/07/2012        The Developers Conference   31
Monitoramento➔    Por que?     ➔         Identificar Gargalos (+ usuários => + tempo gasto)07/07/2012                     ...
Monitoramento➔    Por que?     ➔         Identificar Gargalos (+ usuários => + tempo gasto)     ➔         Prevenir Problem...
Monitoramento➔    Por que?     ➔         Identificar Gargalos (+ usuários => + tempo gasto)     ➔         Prevenir Problem...
Monitoramento➔    Ferramentas07/07/2012           The Developers Conference   35
Monitoramento➔    Ferramentas    ➔        Top (é sério)07/07/2012                 The Developers Conference   36
Monitoramento➔    Ferramentas    ➔        Top (é sério)                                                        Load: 1, 5,...
Monitoramento   ➔       Ferramentas       ➔           Top (é sério)                                                       ...
Monitoramento   ➔       Ferramentas       ➔           Top (é sério)                                                       ...
Monitoramento➔    Ferramentas    ➔        Profiling07/07/2012             The Developers Conference   40
Monitoramento➔    Ferramentas    ➔        MySql SHOW (tem tudo lá! http://dev.mysql.com/doc/refman/5.0/en/show.html)    ➔ ...
Monitoramento➔    Ferramentas    ➔        Monitoramento de Infra07/07/2012                  The Developers Conference   42
3º Passo             Crescimento07/07/2012      The Developers Conference   43
Crescimento➔    Formas de Crescer07/07/2012              The Developers Conference   44
Crescimento➔    Formas de Crescer    ➔        Horizontalmente         AppServer   AppServer        AppServer           App...
Crescimento➔    Formas de Crescer    ➔        Horizontalmente                                           AppServer         ...
Crescimento➔    Cache07/07/2012     The Developers Conference   47
Crescimento➔    Cache    ➔        HTTP Cache (Diminui quantidade de requests)07/07/2012                     The Developers...
Crescimento➔    Cache    ➔        Opcode Cache (APC)        http://www.php.net/apc07/07/2012                         The D...
Crescimento➔    Cache    ➔        Memory Cache (memcached)    https://github.com/php-memcached-dev/php-memcached    http:/...
Crescimento➔    Replicação                   Slave                                           Slave                        ...
Crescimento➔    Índices em tabelas07/07/2012               The Developers Conference   52
Crescimento➔    Índices em tabelas07/07/2012               The Developers Conference   53
Crescimento➔    Índices em tabelas07/07/2012               The Developers Conference   54
Crescimento➔    Índices em tabelas     ➔         Preferência a campos com baixa cardinalidade07/07/2012                The...
Crescimento➔    Índices em tabelas     ➔         Preferência a campos com baixa cardinalidade     ➔         Ocupam mais es...
Crescimento➔    Índices em tabelas     ➔         Preferência a campos com baixa cardinalidade     ➔         Ocupam mais es...
Crescimento➔    Índices em tabelas     ➔         Preferência a campos com baixa cardinalidade     ➔         Ocupam mais es...
Crescimento➔    Distribuição de Tarefas07/07/2012              The Developers Conference   59
Crescimento➔    Distribuição de Tarefas     ➔         Gearman                       http://gearman.org/                   ...
Crescimento➔    Distribuição de Tarefas     ➔         Gearman                       http://gearman.org/                   ...
Crescimento➔    Distribuição de Tarefas     ➔         Gearman                       http://gearman.org/                   ...
Mais Umas Coisas07/07/2012   The Developers Conference   63
Mais Umas Coisas➔    Entenda o que está acontecendo➔    Análise os custos antes de tomar uma decisão➔    Use um proxy reve...
Case – Bolsa de Mulher        by: @zanaca07/07/2012             The Developers Conference   65
Case – Bolsa de Mulher                                                    ~ 7K Simultâneos        by: @zanaca07/07/2012   ...
Referências                                Cases interessantes                             Tumblr: http://bit.ly/z4cdCG   ...
Obrigado!                                  @filaruinaAgradecimentos:● @alganet e @duodraco pela oportunidade● @searleolive...
Upcoming SlideShare
Loading in …5
×

Técnicas para ser escalável com PHP

838 views
773 views

Published on

Uma visão das diversas técnicas disponíveis para melhorar a escalabilidade de uma aplicação. Exibição de ferramentas que trabalham bem com o PHP e que são muito utilizadas pela comunidade.

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

No Downloads
Views
Total views
838
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
9
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Técnicas para ser escalável com PHP

  1. 1. Técnicas para ser escalável com07/07/2012 The Developers Conference 1
  2. 2. Filipe La RuinaWorks @ ecompete.com.br@filaruina07/07/2012 The Developers Conference 2
  3. 3. Escalabilidade07/07/2012 The Developers Conference 3
  4. 4. Escalabilidade Técnicas não são regras!07/07/2012 The Developers Conference 4
  5. 5. O que é?07/07/2012 The Developers Conference 5
  6. 6. O que é? O que não é?07/07/2012 The Developers Conference 6
  7. 7. O que é? O que não é?➔ Performance07/07/2012 The Developers Conference 7
  8. 8. O que é? O que não é?➔ Performance➔ Usar Tecnologia X07/07/2012 The Developers Conference 8
  9. 9. O que é? O que não é?➔ Performance➔ Usar Tecnologia X➔ Separação de Responsabilidades07/07/2012 The Developers Conference 9
  10. 10. O que é? O que não é?➔ Performance➔ Usar Tecnologia X➔ Separação de Responsabilidades07/07/2012 The Developers Conference 10
  11. 11. Escalabilidade é uma característica desejável em todo o sistema, em uma rede ou em um processo, que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer.07/07/2012 The Developers Conference 11
  12. 12. O que é?➔ Aguenta aumento no uso07/07/2012 The Developers Conference 12
  13. 13. O que é?➔ Aguenta aumento no uso➔ Aguenta aumento nos dados07/07/2012 The Developers Conference 13
  14. 14. O que é?➔ Aguenta aumento no uso➔ Aguenta aumento nos dados➔ Fácil manutenção07/07/2012 The Developers Conference 14
  15. 15. Vamos por Partes07/07/2012 The Developers Conference 15
  16. 16. 1º Passo Desenvolvimento07/07/2012 The Developers Conference 16
  17. 17. Desenvolvimento➔ Separação de Conceitos (OOP, Camadas, etc)07/07/2012 The Developers Conference 17
  18. 18. Desenvolvimento➔ Separação de Conceitos (OOP, Camadas, etc) API Cliente07/07/2012 The Developers Conference 18
  19. 19. Desenvolvimento➔ Separação de Conceitos (OOP, Camadas, etc) API DB API LB Client API07/07/2012 The Developers Conference 19
  20. 20. Desenvolvimento➔ Arquitetura Orientada a Serviços Authentication API Client Product Email07/07/2012 The Developers Conference 20
  21. 21. Desenvolvimento➔ Use Controle de Versão07/07/2012 The Developers Conference 21
  22. 22. Desenvolvimento➔ Use Controle de Versão Usa esse blz?07/07/2012 The Developers Conference 22
  23. 23. Desenvolvimento➔ Integração Contínua07/07/2012 The Developers Conference 23
  24. 24. Desenvolvimento➔ Integração Contínua ➔ Build Automatizado (e rápido)07/07/2012 The Developers Conference 24
  25. 25. Desenvolvimento➔ Integração Contínua ➔ Build Automatizado (e rápido) ➔ Testes07/07/2012 The Developers Conference 25
  26. 26. Desenvolvimento➔ Integração Contínua ➔ Build Automatizado (e rápido) ➔ Testes ➔ Verifique Qualidade http://phpqatools.org07/07/2012 The Developers Conference 26
  27. 27. Desenvolvimento➔ Atualize-se07/07/2012 The Developers Conference 27
  28. 28. Desenvolvimento➔ Atualize-se THIS07/07/2012 The Developers Conference 28
  29. 29. 2º Passo Monitoramento07/07/2012 The Developers Conference 29
  30. 30. Monitoramento➔ Por que?07/07/2012 The Developers Conference 30
  31. 31. Monitoramento➔ Por que?07/07/2012 The Developers Conference 31
  32. 32. Monitoramento➔ Por que? ➔ Identificar Gargalos (+ usuários => + tempo gasto)07/07/2012 The Developers Conference 32
  33. 33. Monitoramento➔ Por que? ➔ Identificar Gargalos (+ usuários => + tempo gasto) ➔ Prevenir Problemas07/07/2012 The Developers Conference 33
  34. 34. Monitoramento➔ Por que? ➔ Identificar Gargalos (+ usuários => + tempo gasto) ➔ Prevenir Problemas ➔ Poder dormir tranquilo07/07/2012 The Developers Conference 34
  35. 35. Monitoramento➔ Ferramentas07/07/2012 The Developers Conference 35
  36. 36. Monitoramento➔ Ferramentas ➔ Top (é sério)07/07/2012 The Developers Conference 36
  37. 37. Monitoramento➔ Ferramentas ➔ Top (é sério) Load: 1, 5, 15 minutos07/07/2012 The Developers Conference 37
  38. 38. Monitoramento ➔ Ferramentas ➔ Top (é sério) Load: 1, 5, 15 minutosMemória e Swap 07/07/2012 The Developers Conference 38
  39. 39. Monitoramento ➔ Ferramentas ➔ Top (é sério) Load: 1, 5, 15 minutosMemória e Swap Processos 07/07/2012 The Developers Conference 39
  40. 40. Monitoramento➔ Ferramentas ➔ Profiling07/07/2012 The Developers Conference 40
  41. 41. Monitoramento➔ Ferramentas ➔ MySql SHOW (tem tudo lá! http://dev.mysql.com/doc/refman/5.0/en/show.html) ➔ Slow Query Log ➔ Explain Query07/07/2012 The Developers Conference 41
  42. 42. Monitoramento➔ Ferramentas ➔ Monitoramento de Infra07/07/2012 The Developers Conference 42
  43. 43. 3º Passo Crescimento07/07/2012 The Developers Conference 43
  44. 44. Crescimento➔ Formas de Crescer07/07/2012 The Developers Conference 44
  45. 45. Crescimento➔ Formas de Crescer ➔ Horizontalmente AppServer AppServer AppServer AppServer AppServer Load Balancer Client07/07/2012 The Developers Conference 45
  46. 46. Crescimento➔ Formas de Crescer ➔ Horizontalmente AppServer AppServer ➔ Verticalmente Load Balancer Client07/07/2012 The Developers Conference 46
  47. 47. Crescimento➔ Cache07/07/2012 The Developers Conference 47
  48. 48. Crescimento➔ Cache ➔ HTTP Cache (Diminui quantidade de requests)07/07/2012 The Developers Conference 48
  49. 49. Crescimento➔ Cache ➔ Opcode Cache (APC) http://www.php.net/apc07/07/2012 The Developers Conference 49
  50. 50. Crescimento➔ Cache ➔ Memory Cache (memcached) https://github.com/php-memcached-dev/php-memcached http://pecl.php.net/package/memcached DB Memcached App07/07/2012 The Developers Conference 50
  51. 51. Crescimento➔ Replicação Slave Slave Slave ➔ Master (Escritas) Master Slave Slave ➔ Slaves (Leituras) Read Write App07/07/2012 The Developers Conference 51
  52. 52. Crescimento➔ Índices em tabelas07/07/2012 The Developers Conference 52
  53. 53. Crescimento➔ Índices em tabelas07/07/2012 The Developers Conference 53
  54. 54. Crescimento➔ Índices em tabelas07/07/2012 The Developers Conference 54
  55. 55. Crescimento➔ Índices em tabelas ➔ Preferência a campos com baixa cardinalidade07/07/2012 The Developers Conference 55
  56. 56. Crescimento➔ Índices em tabelas ➔ Preferência a campos com baixa cardinalidade ➔ Ocupam mais espaço em disco07/07/2012 The Developers Conference 56
  57. 57. Crescimento➔ Índices em tabelas ➔ Preferência a campos com baixa cardinalidade ➔ Ocupam mais espaço em disco ➔ Índices são agrupamentos07/07/2012 The Developers Conference 57
  58. 58. Crescimento➔ Índices em tabelas ➔ Preferência a campos com baixa cardinalidade ➔ Ocupam mais espaço em disco ➔ Índices são agrupamentos ➔ Diminuem o tempo de escrita07/07/2012 The Developers Conference 58
  59. 59. Crescimento➔ Distribuição de Tarefas07/07/2012 The Developers Conference 59
  60. 60. Crescimento➔ Distribuição de Tarefas ➔ Gearman http://gearman.org/ http://php.net/gearman07/07/2012 The Developers Conference 60
  61. 61. Crescimento➔ Distribuição de Tarefas ➔ Gearman http://gearman.org/ http://php.net/gearman07/07/2012 The Developers Conference 61
  62. 62. Crescimento➔ Distribuição de Tarefas ➔ Gearman http://gearman.org/ http://php.net/gearman07/07/2012 The Developers Conference 62
  63. 63. Mais Umas Coisas07/07/2012 The Developers Conference 63
  64. 64. Mais Umas Coisas➔ Entenda o que está acontecendo➔ Análise os custos antes de tomar uma decisão➔ Use um proxy reverso (nginx, squid, Varnish)➔ Lado cliente é importante07/07/2012 The Developers Conference 64
  65. 65. Case – Bolsa de Mulher by: @zanaca07/07/2012 The Developers Conference 65
  66. 66. Case – Bolsa de Mulher ~ 7K Simultâneos by: @zanaca07/07/2012 The Developers Conference 66
  67. 67. Referências Cases interessantes Tumblr: http://bit.ly/z4cdCG YouPorn: http://bit.ly/Hhz0PV (Sério!) Facebook: http://b.qr.ae/gB5C6b Digg: http://bit.ly/Xp4NW Flickr: http://bit.ly/1Jywk1 Livros http://oreil.ly/N7LH6b http://oreil.ly/pnKqJG http://oreil.ly/LwjPXd07/07/2012 The Developers Conference 67
  68. 68. Obrigado! @filaruinaAgradecimentos:● @alganet e @duodraco pela oportunidade● @searleoliveira pela ajuda com MySql● @zanaca pela lembrança da arquitetura do Bolsa de Mulher● @igorpsantos pela ajuda com a Infra07/07/2012 The Developers Conference 68

×