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.

Backend performático além do "coloca mais máquina lá" - Diana Arnos

33 views

Published on

Trabalhar a performance no backend vai muito além de simplesmente ""colocar mais máquinas atrás do loadbalancer""
. Vamos apontar alguns gargalos comuns que podem ser tratados ou evitados desde o começo do desenvolvimento, já que não dependem da tecnologia utilizada.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Backend performático além do "coloca mais máquina lá" - Diana Arnos

  1. 1. Backend Performático Além do “coloca mais máquina lá”
  2. 2. @dianaarnos Dev, Sec, Music, Kung Fu. Tech Lead @ MGov Evangelista @ PHPSP Evangelista @ PHPWomenBR
  3. 3. - CARA, A RESPOSTA TÁ MEIO LENTA...
  4. 4. L O A D B A L A N C E R
  5. 5. - AUMENTA A CAPACIDADE LÁ
  6. 6. MAS É SEMPRE SÓ ISSO?
  7. 7. COMO VOCÊ FAZ AS QUERIES?
  8. 8. - MUITOS JOINS? - UM ÚNICO GRANDE INSERT UM VÁRIOS PEQUENOS INSERTS? - QUANTAS REQUISIÇÕES AO BANCO POR MINUTO?
  9. 9. PREPARED STATEMENT
  10. 10. SEMPRE
  11. 11. CACHE
  12. 12. - BUSCAS FREQUENTES NO BANCO
  13. 13. - BUSCAS FREQUENTES NO BANCO - OBJETOS
  14. 14. - BUSCAS FREQUENTES NO BANCO - OBJETOS - RESPONSES INTEIRAS
  15. 15. - MEMÓRIA
  16. 16. - MEMÓRIA - SERVIÇO (EX. REDIS)
  17. 17. - MEMÓRIA - SERVIÇO (EX. REDIS) - DISCO
  18. 18. CUIDADO
  19. 19. O “O QUÊ” É TÃO IMPORTANTE QUANTO O “COMO”
  20. 20. COMO VAI O SEU CÓDIGO? SUA LÓGICA? SEUS ALGORITMOS?
  21. 21. BIG O
  22. 22. FIBONACCI
  23. 23. FIBONACCI public function getFibonacci (int $number): int { if ($number <= 1) { return $number; } else { return getFibonacci($number - 1) + getFibonacci($number - 2); } }
  24. 24. FIBONACCI Quantas linhas de código vão rodar para dado input n? T(n)? T(0) = 2 T(1) = 2 T(2) = 3 + T(1) + T(0) T(3) = 3 + T(2) + T(1) T(4) = 3 + T(3) + T(2) ... Observando a progressão, temos: Dado n = 0 ou n =1, T(n) = 2
  25. 25. FIBONACCI
  26. 26. FIBONACCI Com o processamento de 1GHz, levaríamos aproximadamente 56 mil anos para calcular T(100)
  27. 27. FIBONACCI
  28. 28. FIBONACCI 0, 1, 1, 2, 3, 5, 8, 13, 21... 0 + 1 = 1 0, 1, 1 1 + 1 = 2 0, 1, 1, 2 1 + 2 = 3 0, 1, 1, 2, 3 2 + 3 = 5 0, 1, 1, 2, 3, 5 3 + 5 = 8 0, 1, 1, 2, 3, 5, 8 ...
  29. 29. FIBONACCI public function getFibonacci (int $number): int { $fibonacci[0] = 0; $fibonacci[1] = 1; for ($i = 2; $i <= $number; $i++) { $fibonacci[$i] = $fibonacci[$i-1] + $fibonacci[$i-2]; } return $fibonacci[$number]; }
  30. 30. FIBONACCI Calculando quantas linhas de código rodam para cada iteração, considerando que as 3 primeiras linhas e a última (return) vão rodar sempre: T(2) = 4 + 2 = 6 T(3) = 4 + 2 + 2 = 8 T(4) = 4 + 2 + 2 + 2 = 10 ... T(n) = 2n + 2
  31. 31. MUITO MAIS RÁPIDO
  32. 32. E LEMBREM-SE:
  33. 33. OBRIGADA! Fale comigo: @dianaarnos (twitter, instagram)

×