Bruxarias em Python - Como desenvolver soluções escaláveis
-
Upload
viotti-equipamentos-medicos -
Category
Software
-
view
15 -
download
0
Transcript of Bruxarias em Python - Como desenvolver soluções escaláveis
![Page 1: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/1.jpg)
Globalcode – Open4education
Bruxarias em Python: Técnicas para deixar suas aplicações escaláveis
Alexandre PratesAnalista de Capacity Planing – Ericsson Inovação
![Page 2: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/2.jpg)
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.
![Page 3: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/3.jpg)
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.
![Page 4: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/4.jpg)
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.
![Page 5: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/5.jpg)
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).
![Page 6: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/6.jpg)
Globalcode – Open4education
Como funciona a execução de threds em Python?
![Page 7: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/7.jpg)
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;
![Page 8: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/8.jpg)
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.
![Page 9: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/9.jpg)
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.
![Page 10: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/10.jpg)
Globalcode – Open4education
Multiprocessamento em Python
![Page 11: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/11.jpg)
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;
![Page 12: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/12.jpg)
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;
![Page 13: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/13.jpg)
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;
![Page 14: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/14.jpg)
Globalcode – Open4education
Exemplos de Uso
![Page 15: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/15.jpg)
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;
![Page 16: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/16.jpg)
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.
![Page 17: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/17.jpg)
Globalcode – Open4education
Funcionamento do Celery
![Page 18: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/18.jpg)
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.
![Page 19: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/19.jpg)
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/
![Page 20: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/20.jpg)
Globalcode – Open4education
Contatos
LInkedIn– https://br.linkedin.com/in/alexandre-prates-3497052
3
Email – [email protected]
GitHub– https://github.com/prates
![Page 21: Bruxarias em Python - Como desenvolver soluções escaláveis](https://reader031.fdocument.pub/reader031/viewer/2022030305/58743b981a28ab0e6c8b58db/html5/thumbnails/21.jpg)
Globalcode – Open4education
Obrigado