SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Globalcode – Open4education
Bruxarias em Python: Técnicas para deixar
suas aplicações escaláveis
Alexandre Prates
Analista de Capacity Planing – Ericsson Inovação
Globalcode – Open4education
Quem eu sou
Bacharel em Ciências da Computação pela
UFABC;
Analista de Capacity Planning pela Ericsson
Inovação;
Estudioso de economia, finanças e computação
cientifica.
Globalcode – Open4education
Agenda
Por que pensar em melhorar a performance de sua
aplicação?
Tópicos que serão tratados nessa palestra.
Porque pensar em performance?
Threads em Python;
Multiprocessamento em Python;
Exemplos de message brokers;
Celery;
Bancos de dados em memória.
Globalcode – Open4education
Por que pensar em
melhorar a performance
de sua aplicação?
Porque hardware é caro;
Porque a solução pode ficar extremamente
complexa e de difícil manutenção;
Porque a solução pode não escalar na medida em
que o negócio necessita.
Globalcode – Open4education
O que são Threads
Threads – também conhecidos com processos
leves - São trechos de códigos que podem rodar
de maneira independente do programa principal;
Esse paralelismo tem um custo, deve ser
implementados mecanismos para que 2 threads
não acessem o mesmo objeto.
Para evitar esse problemas e manter a
consistência dos dados a VM python utiliza o GIL
(Global Interpreter Lock).
Globalcode – Open4education
Como funciona a execução de threds
em Python?
Globalcode – Open4education
Quando usar multi-thread
em Python?
Em tarefas com elevado tempo de IO Wait;
Onde não exista risco de concorrência por acesso
a objetos;
Globalcode – Open4education
Quando não é eficiente
usar threads?
Quando a tarefas tenha elevado tempo de CPU;
Quando a tarefa tiver objetos compartilhados;
Quando o tempo de chaveamento de contexto é
elevado.
Globalcode – Open4education
Multiprocessamento
Para contornar o problema do GIL, podemos usar
multiprocessamento para alcançar o real
paralelismo;
Com isso garantimos que cada trecho da aplicação
pode acessar mais de um CPU.
Globalcode – Open4education
Multiprocessamento em
Python
Globalcode – Open4education
Quando usar
multiprocessamento?
Quando a aplicação tem elevado tempo de CPU;
Quando temos uma quantidade pequena de forks
– recomendado um por núcleo de processador;
Globalcode – Open4education
Quando não usar
multiprocessamento?
Quando temos uma quantidade de processos
simultâneos na aplicação acima da quantidade de
núcleos da máquina, pois gera concorrência por
recurso, degradando a performance da aplicação;
Globalcode – Open4education
Alguns middlewares
Middlewares são softwares que realizam a
interface de comunicação entre duas aplicações.
Exemplos:
– Rabbit MQ;
– Active MQ;
– Redis;
Globalcode – Open4education
Exemplos de Uso
Globalcode – Open4education
Brokers
Brokers são middlewares que recebem uma
mensagem em um protocolo padrão a a transmite
esse protocolo, essas aplicações são usadas em
sistemas distribuído para troca de informações
entre os modulo.
Alguns exemplos conhecidos são:
– Active MQ;
– Zero MQ;
– Rabbit MQ;
Globalcode – Open4education
Celery
Celery é um gerenciador e distribuidor de
processos, baseado em trocas de mensagens
serviços de Message Broker.
Funciona em regime Master-Slave, onde o Master
envia a tarefa e o Slave realiza a execução e
retorna o resultado.
As tarefas em Celery podem ser síncronas ou
assíncronas. Além de permitirem garantia de
tempo de processamento.
Globalcode – Open4education
Funcionamento do Celery
Globalcode – Open4education
Banco de dados em
memória
Alguns bancos de dados SQL suportam armazenar
as informações direto em memória, isso torna o
acesso ao dados mais rápido.
Também existe a opção de usar um banco de
dados noSQL como o redis para armazenamento
em memória.
Globalcode – Open4education
Referencias
Threads em python
– https://docs.python.org/2/library/multiprocessing.html
Multiprocesso
– https://docs.python.org/2/library/multiprocessing.html
Redis – banco dados noSQL
– http://redis.io
Rabbit MQ
– https://www.rabbitmq.com/
Celery
– http://www.celeryproject.org/
Globalcode – Open4education
Contatos
LInkedIn
– https://br.linkedin.com/in/alexandre-prates-3497052
3
Email
– Alexandre.b.prates@gmail.com
GitHub
– https://github.com/prates
Globalcode – Open4education
Obrigado

Mais conteúdo relacionado

Destaque

TDC2016POA | Trilha Arquitetura - Versioning APIs
TDC2016POA | Trilha Arquitetura -  Versioning APIsTDC2016POA | Trilha Arquitetura -  Versioning APIs
TDC2016POA | Trilha Arquitetura - Versioning APIstdc-globalcode
 
Hot Cinema Program January 2017
Hot Cinema Program January 2017Hot Cinema Program January 2017
Hot Cinema Program January 2017Nova Media
 
Data Journalism: Inside the global future
Data Journalism: Inside the global futureData Journalism: Inside the global future
Data Journalism: Inside the global futureDamian Radcliffe
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
Mary Rodavich - WVU Master's Defense Presentation
Mary Rodavich - WVU Master's Defense PresentationMary Rodavich - WVU Master's Defense Presentation
Mary Rodavich - WVU Master's Defense PresentationMary Rodavich
 
Spenden in Deutschland 2016: unsere Analyse des Spendenmarktes
Spenden in Deutschland 2016: unsere Analyse des SpendenmarktesSpenden in Deutschland 2016: unsere Analyse des Spendenmarktes
Spenden in Deutschland 2016: unsere Analyse des Spendenmarktesbetterplace lab
 

Destaque (11)

Linking words
Linking wordsLinking words
Linking words
 
TDC2016POA | Trilha Arquitetura - Versioning APIs
TDC2016POA | Trilha Arquitetura -  Versioning APIsTDC2016POA | Trilha Arquitetura -  Versioning APIs
TDC2016POA | Trilha Arquitetura - Versioning APIs
 
laquista resume
laquista resumelaquista resume
laquista resume
 
Masters Transcripts
Masters Transcripts Masters Transcripts
Masters Transcripts
 
libocon16_uxdraw
libocon16_uxdrawlibocon16_uxdraw
libocon16_uxdraw
 
How to present to Investors?
How to present to Investors?How to present to Investors?
How to present to Investors?
 
Hot Cinema Program January 2017
Hot Cinema Program January 2017Hot Cinema Program January 2017
Hot Cinema Program January 2017
 
Data Journalism: Inside the global future
Data Journalism: Inside the global futureData Journalism: Inside the global future
Data Journalism: Inside the global future
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
Mary Rodavich - WVU Master's Defense Presentation
Mary Rodavich - WVU Master's Defense PresentationMary Rodavich - WVU Master's Defense Presentation
Mary Rodavich - WVU Master's Defense Presentation
 
Spenden in Deutschland 2016: unsere Analyse des Spendenmarktes
Spenden in Deutschland 2016: unsere Analyse des SpendenmarktesSpenden in Deutschland 2016: unsere Analyse des Spendenmarktes
Spenden in Deutschland 2016: unsere Analyse des Spendenmarktes
 

Semelhante a Python performance técnicas

Métricas de Aplicação - Implementando e utilizando a seu favor
Métricas de Aplicação - Implementando e utilizando a seu favorMétricas de Aplicação - Implementando e utilizando a seu favor
Métricas de Aplicação - Implementando e utilizando a seu favorDiego Silva
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2Eric Lemes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Durotdc-globalcode
 
TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...
TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...
TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...tdc-globalcode
 
TDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraTDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraRafael Chaves
 
TDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escala
TDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escalaTDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escala
TDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escalaIvan Ferraz
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
 
Buscapé 2.0 - Como mudamos uma empresa em 1 ano
Buscapé 2.0 - Como mudamos uma empresa em 1 anoBuscapé 2.0 - Como mudamos uma empresa em 1 ano
Buscapé 2.0 - Como mudamos uma empresa em 1 anoThiago Freitas
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começouJose Wilker
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouJose Wilker
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimentoledsifes
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Aplicações MultiTenant no Asp.NET Core 2.0
Aplicações MultiTenant no Asp.NET Core 2.0 Aplicações MultiTenant no Asp.NET Core 2.0
Aplicações MultiTenant no Asp.NET Core 2.0 Resource IT
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APITDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APIEdlaine Zamora
 
Apresentação sobre gerenciamento
Apresentação sobre gerenciamentoApresentação sobre gerenciamento
Apresentação sobre gerenciamentoLevi Tancredo
 

Semelhante a Python performance técnicas (20)

Métricas de Aplicação - Implementando e utilizando a seu favor
Métricas de Aplicação - Implementando e utilizando a seu favorMétricas de Aplicação - Implementando e utilizando a seu favor
Métricas de Aplicação - Implementando e utilizando a seu favor
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
 
Machine Learning Black Boxes
Machine Learning Black BoxesMachine Learning Black Boxes
Machine Learning Black Boxes
 
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho DuroTDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
 
TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...
TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...
TDC2018SP | Trilha Arquitetura Corporativa - Arquitetura Agil. Habilitando ar...
 
TDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestraTDC SP 2016 - Dos requisitos à implantação em uma palestra
TDC SP 2016 - Dos requisitos à implantação em uma palestra
 
TDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escala
TDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escalaTDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escala
TDC2018-SP Arquitetura Ágil. Habilitando arquitetura evolucionária em escala
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Buscapé 2.0 - Como mudamos uma empresa em 1 ano
Buscapé 2.0 - Como mudamos uma empresa em 1 anoBuscapé 2.0 - Como mudamos uma empresa em 1 ano
Buscapé 2.0 - Como mudamos uma empresa em 1 ano
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começou
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimento
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Aplicações MultiTenant no Asp.NET Core 2.0
Aplicações MultiTenant no Asp.NET Core 2.0 Aplicações MultiTenant no Asp.NET Core 2.0
Aplicações MultiTenant no Asp.NET Core 2.0
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Metralhando sua API
Metralhando sua APIMetralhando sua API
Metralhando sua API
 
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APITDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua API
 
Apresentação sobre gerenciamento
Apresentação sobre gerenciamentoApresentação sobre gerenciamento
Apresentação sobre gerenciamento
 

Python performance técnicas

  • 1. Globalcode – Open4education Bruxarias em Python: Técnicas para deixar suas aplicações escaláveis Alexandre Prates Analista de Capacity Planing – Ericsson Inovação
  • 2. Globalcode – Open4education Quem eu sou Bacharel em Ciências da Computação pela UFABC; Analista de Capacity Planning pela Ericsson Inovação; Estudioso de economia, finanças e computação cientifica.
  • 3. Globalcode – Open4education Agenda Por que pensar em melhorar a performance de sua aplicação? Tópicos que serão tratados nessa palestra. Porque pensar em performance? Threads em Python; Multiprocessamento em Python; Exemplos de message brokers; Celery; Bancos de dados em memória.
  • 4. Globalcode – Open4education Por que pensar em melhorar a performance de sua aplicação? Porque hardware é caro; Porque a solução pode ficar extremamente complexa e de difícil manutenção; Porque a solução pode não escalar na medida em que o negócio necessita.
  • 5. Globalcode – Open4education O que são Threads Threads – também conhecidos com processos leves - São trechos de códigos que podem rodar de maneira independente do programa principal; Esse paralelismo tem um custo, deve ser implementados mecanismos para que 2 threads não acessem o mesmo objeto. Para evitar esse problemas e manter a consistência dos dados a VM python utiliza o GIL (Global Interpreter Lock).
  • 6. Globalcode – Open4education Como funciona a execução de threds em Python?
  • 7. Globalcode – Open4education Quando usar multi-thread em Python? Em tarefas com elevado tempo de IO Wait; Onde não exista risco de concorrência por acesso a objetos;
  • 8. Globalcode – Open4education Quando não é eficiente usar threads? Quando a tarefas tenha elevado tempo de CPU; Quando a tarefa tiver objetos compartilhados; Quando o tempo de chaveamento de contexto é elevado.
  • 9. Globalcode – Open4education Multiprocessamento Para contornar o problema do GIL, podemos usar multiprocessamento para alcançar o real paralelismo; Com isso garantimos que cada trecho da aplicação pode acessar mais de um CPU.
  • 11. Globalcode – Open4education Quando usar multiprocessamento? Quando a aplicação tem elevado tempo de CPU; Quando temos uma quantidade pequena de forks – recomendado um por núcleo de processador;
  • 12. Globalcode – Open4education Quando não usar multiprocessamento? Quando temos uma quantidade de processos simultâneos na aplicação acima da quantidade de núcleos da máquina, pois gera concorrência por recurso, degradando a performance da aplicação;
  • 13. Globalcode – Open4education Alguns middlewares Middlewares são softwares que realizam a interface de comunicação entre duas aplicações. Exemplos: – Rabbit MQ; – Active MQ; – Redis;
  • 15. Globalcode – Open4education Brokers Brokers são middlewares que recebem uma mensagem em um protocolo padrão a a transmite esse protocolo, essas aplicações são usadas em sistemas distribuído para troca de informações entre os modulo. Alguns exemplos conhecidos são: – Active MQ; – Zero MQ; – Rabbit MQ;
  • 16. Globalcode – Open4education Celery Celery é um gerenciador e distribuidor de processos, baseado em trocas de mensagens serviços de Message Broker. Funciona em regime Master-Slave, onde o Master envia a tarefa e o Slave realiza a execução e retorna o resultado. As tarefas em Celery podem ser síncronas ou assíncronas. Além de permitirem garantia de tempo de processamento.
  • 18. Globalcode – Open4education Banco de dados em memória Alguns bancos de dados SQL suportam armazenar as informações direto em memória, isso torna o acesso ao dados mais rápido. Também existe a opção de usar um banco de dados noSQL como o redis para armazenamento em memória.
  • 19. Globalcode – Open4education Referencias Threads em python – https://docs.python.org/2/library/multiprocessing.html Multiprocesso – https://docs.python.org/2/library/multiprocessing.html Redis – banco dados noSQL – http://redis.io Rabbit MQ – https://www.rabbitmq.com/ Celery – http://www.celeryproject.org/
  • 20. Globalcode – Open4education Contatos LInkedIn – https://br.linkedin.com/in/alexandre-prates-3497052 3 Email – Alexandre.b.prates@gmail.com GitHub – https://github.com/prates