SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Backend Performático
Além do “coloca mais máquina lá”
@dianaarnos
Dev, Sec, Music, Kung Fu.
Tech Lead @ MGov
Evangelista @ PHPSP
Evangelista @ PHPWomenBR
- CARA, A RESPOSTA TÁ MEIO LENTA...
L
O
A
D
B
A
L
A
N
C
E
R
- AUMENTA A CAPACIDADE LÁ
MAS É SEMPRE SÓ ISSO?
COMO VOCÊ FAZ AS QUERIES?
- MUITOS JOINS?
- UM ÚNICO GRANDE INSERT UM VÁRIOS PEQUENOS
INSERTS?
- QUANTAS REQUISIÇÕES AO BANCO POR MINUTO?
PREPARED STATEMENT
SEMPRE
CACHE
- BUSCAS FREQUENTES NO BANCO
- BUSCAS FREQUENTES NO BANCO
- OBJETOS
- BUSCAS FREQUENTES NO BANCO
- OBJETOS
- RESPONSES INTEIRAS
- MEMÓRIA
- MEMÓRIA
- SERVIÇO (EX. REDIS)
- MEMÓRIA
- SERVIÇO (EX. REDIS)
- DISCO
CUIDADO
O “O QUÊ” É TÃO IMPORTANTE QUANTO O
“COMO”
COMO VAI O SEU CÓDIGO?
SUA LÓGICA?
SEUS ALGORITMOS?
BIG O
FIBONACCI
FIBONACCI
public function getFibonacci (int $number): int
{
if ($number <= 1) {
return $number;
} else {
return getFibonacci($number - 1) + getFibonacci($number
- 2);
}
}
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
FIBONACCI
FIBONACCI
Com o processamento de 1GHz,
levaríamos aproximadamente 56 mil
anos para calcular T(100)
FIBONACCI
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
...
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];
}
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
MUITO MAIS RÁPIDO
E LEMBREM-SE:
OBRIGADA!
Fale comigo: @dianaarnos (twitter, instagram)

Weitere ähnliche Inhalte

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

Ähnlich wie Backend performático além do "coloca mais máquina lá" - Diana Arnos (20)

Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHP
 
Backend do Iot com rethinkdb e python
Backend do Iot com rethinkdb e pythonBackend do Iot com rethinkdb e python
Backend do Iot com rethinkdb e python
 
InterCon 2016 - Backend do IoT com RethinkDB e Python
InterCon 2016 - Backend do IoT com RethinkDB e PythonInterCon 2016 - Backend do IoT com RethinkDB e Python
InterCon 2016 - Backend do IoT com RethinkDB e Python
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 
Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionais
 
De OO para FP
De OO para FPDe OO para FP
De OO para FP
 
Construindo Aplicações Semânticas com Desenvolvimento Ágil: Plataforma JOINT
Construindo Aplicações Semânticas com Desenvolvimento Ágil: Plataforma JOINTConstruindo Aplicações Semânticas com Desenvolvimento Ágil: Plataforma JOINT
Construindo Aplicações Semânticas com Desenvolvimento Ágil: Plataforma JOINT
 
Porque dar bola para FP?
Porque dar bola para FP?Porque dar bola para FP?
Porque dar bola para FP?
 
Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013
 
Dev para Engenheiro de Dados (From Dev to Data Engineer)
Dev para Engenheiro de Dados (From Dev to Data Engineer)Dev para Engenheiro de Dados (From Dev to Data Engineer)
Dev para Engenheiro de Dados (From Dev to Data Engineer)
 
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
 
Programação Reativa e Funcional e extensões para PHP
Programação Reativa e Funcional e extensões para PHPProgramação Reativa e Funcional e extensões para PHP
Programação Reativa e Funcional e extensões para PHP
 
Front end, back end, full stack. onde vivem o que comem hoje na uni_granrio
Front end, back end, full stack.  onde vivem  o que comem   hoje na uni_granrioFront end, back end, full stack.  onde vivem  o que comem   hoje na uni_granrio
Front end, back end, full stack. onde vivem o que comem hoje na uni_granrio
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Python
PythonPython
Python
 
Dismistificando deep learning
Dismistificando deep learningDismistificando deep learning
Dismistificando deep learning
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
 
Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...
Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...
Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...
 

Mehr von iMasters

Mehr von iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 
Clean Architecture - Elton Minetto
Clean Architecture - Elton MinettoClean Architecture - Elton Minetto
Clean Architecture - Elton Minetto
 

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