Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arquitetura Java - Escalando além do Hype

É muito comum evangelizarem que hoje em dia uma aplicação somente escala se utilizarmos micro-serviços, containers, cloud computing e muitos outras tecnologias e práticas da moda, do tal do HYPE.

Mas será mesmo? Já se perguntou como as aplicações escalavam ANTES desse hype todo? Que tipos de práticas e tecnologias eram utilizadas? Alias, será mesmo que meu sistema web precisa escalar para centenas ou milhares de usuários?

Nessa palestra (lightning talk) de 15min vamos entender como podemos escalar nosso sistema web SEM se levar pelo hype, partindo de práticas mais simples e baratas até mais as rebuscadas e com um maior investimento. Se você entende pouco ou quase nada sobre como escalar uma aplicação web, então essa palestra é para você!

Arquitetura Java - Escalando além do Hype

  1. 1. ARQUITETURAJAVA escalandosuaaplicaçãoalémdohype
  2. 2. ahh o hype…
  3. 3. podemos escalar SEM o hype…
  4. 4. Rafael Ponte @rponte
  5. 5. ARQUITETURAJAVA escalandosuaaplicaçãoalémdohype
  6. 6. Como escalar minha app para MILHARES de usuários?
  7. 7. Loja Virtual
  8. 8. Revisitando a Web…
  9. 9. servidor
  10. 10. servidor
  11. 11. navegador servidor
  12. 12. navegador servidor requisição
  13. 13. navegador servidor db requisição
  14. 14. navegador servidor db requisição resposta
  15. 15. navegador servidor db requisição resposta
  16. 16. Performance 
 X 
 Escalabilidade
  17. 17. 2conceitos importantes
  18. 18. tempoderesposta (responsetime)
  19. 19. navegador servidor db requisição resposta
  20. 20. navegador servidor db requisição resposta tempo resposta
  21. 21. navegador servidor db requisição resposta tempo resposta: 100ms
  22. 22. operações/unidade_tempo (throughput)
  23. 23. usuários/minuto (throughput)
  24. 24. usuários/segundo (throughput)
  25. 25. usuários/segundo (throughput)
  26. 26. requisições/segundo (throughput)
  27. 27. navegador servidor db requisição resposta
  28. 28. navegador servidor db requisição resposta tempo resposta: 100ms
  29. 29. servidor db requisição resposta tempo resposta: 100ms
  30. 30. servidor db requisição resposta tempo resposta: 100ms
  31. 31. servidor db requisição resposta tempo resposta: 1s
  32. 32. servidor db requisição resposta tempo resposta: 7s
  33. 33. servidor db requisição resposta tempo resposta: 24s
  34. 34. servidor db requisição resposta tempo resposta: 0
  35. 35. nossaaplicaçãonãoescalamais doque:80req/s
  36. 36. navegador servidor db requisição resposta throughput:80req/s
  37. 37. navegador servidor db requisição resposta throughput:250req/s
  38. 38. navegador servidor db requisição resposta throughput:1000req/s
  39. 39. PASSOS5 RESUMINDO EM
  40. 40. Passo 1
 (TUNANDO A APLICAÇÃO)
  41. 41. navegador servidor db requisição resposta
  42. 42. navegador servidor db requisição resposta
  43. 43. JVM
  44. 44. 2Gb
  45. 45. 2Gb ???
  46. 46. 2Gb 256Mb
  47. 47. 2Gb ??Mb
  48. 48. 2Gb 2Gb
  49. 49. 2Gb 2Gb =
  50. 50. 2Gb 2Gb = X
  51. 51. 2Gb 1Gb
  52. 52. 2Gb 1Gb -Xms256m -Xmx1024m 
 -XX:MaxPermSize=192m
  53. 53. 2Gb 1Gb -Xms256m -Xmx1024m 
 -XX:MaxPermSize=192m
  54. 54. 2Gb 1Gb -Xms256m -Xmx1024m 
 -XX:MaxPermSize=192m minimo != maximo
  55. 55. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m minimo = maximo
  56. 56. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m HeapSize
  57. 57. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m
  58. 58. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m PermGenSize
  59. 59. 2Gb 1Gb
  60. 60. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m memoria
  61. 61. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m -server modo servidor memoria
  62. 62. 2Gb 1Gb -Xms1024m -Xmx1024m 
 -XX:MaxPermSize=192m -XX:+UseConcMarkSweepGC
 -XX:+CMSParallelRemarkEnabled -server modo servidor memoria coletor de lixo (GC)
  63. 63. Sistema
 nãoaguenta?
  64. 64. Passo 2
 (MELHORANDO A MÁQUINA)
  65. 65. navegador servidor db requisição resposta
  66. 66. navegador servidor db requisição resposta
  67. 67. cpu memoria
  68. 68. X
  69. 69. x 6 x 6
  70. 70. Mais requisições?
  71. 71. Escalabilidade Vertical (scale up)
  72. 72. X
  73. 73. Sistema
 nãoaguenta?
  74. 74. Passo 3
 (ADICIONANDO MAIS MÁQUINAS)
  75. 75. navegador servidor db requisição resposta
  76. 76. navegador servidor db requisição resposta
  77. 77. ip?
  78. 78. 200reqs
  79. 79. 200reqs 100reqs100reqs
  80. 80. Balanceador deCarga
  81. 81. Balanceador deCarga
  82. 82. Balanceador deCarga
  83. 83. Mais requisições?
  84. 84. Cluster
  85. 85. Escalabilidade Horizontal (scale out)
  86. 86. Apesardemais barata…
  87. 87. (1a requisição)
  88. 88. (1a requisição)
  89. 89. Sessão
  90. 90. (2a requisição) qual?
  91. 91. (2a requisição)
  92. 92. (2a requisição)
  93. 93. StickySession
  94. 94.
  95. 95. Masese…
  96. 96. ?
  97. 97. ?
  98. 98. Falta Redundância
  99. 99. Passo 4
 (REPLICANDO ESTADO)
  100. 100. (1arequisição)
  101. 101. (1arequisição)
  102. 102. (2arequisição)
  103. 103. (2arequisição)
  104. 104. Session Replication
  105. 105. ReplicaEstado
  106. 106. Alta Disponibilidade (high availability)
  107. 107. Mais requisições?
  108. 108. Setenhomais máquinas…
  109. 109. Replicarsessãoé CARO
  110. 110. Passo 5
 (REMOVENDO ESTADO)
  111. 111. ONDE?
  112. 112. CacheDistribuído
  113. 113. CacheDistribuído
  114. 114. CacheDistribuído
  115. 115. STATELESS (shared nothing architecture)
  116. 116. Mais requisições?
  117. 117. 256GB
  118. 118. Todas plataformas
  119. 119. Nãoescala ainda…
  120. 120. Nuvens
  121. 121. esóentão…
  122. 122. @rponte http://triadworks.com.br/ @triadworks

×