O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

194 visualizações

Publicada em

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.

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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)

×