Boas vindas às notas do Bidu de hoje! Nessa edição, a turbulenta aquisição do Twitter, avanços de Python com performance, a documentação - ótima - do RabbitMQ sobre arquiteturas de passagem de mensagens e memray
, a excelente ferramenta de profiling lançada pela Bloomberg
A aquisição do Twitter pelo Elon Musk agitou as notícias nas últimas semanas. Existem camadas e mais camadas para discutir sobre isso, desde os aspectos puramente financeiros até os técnicos e sociais. No fim das contas, acredito que o mais importante é notar que Musk basicamente comprou um megafone gigante.
Não me levem a mal - eu adoro discutir e refletir sobre as questões mais técnicas e financeiras - porém, ao se tratar do combo 'rede social + discussões sobre liberdade de expressão + ano eleitoral no Brasil', eu não consigo deixar de dar prioridade para a questão mais abstrata - a social. Nessa análise, o Twitter é um megafone. É uma ferramenta de convencimento.
Se as intenções de Musk são boas e honestas, é uma questão complicada e fatalmente dependente da orientação sociopolítica de cada um de nós. O que não é dependente desses pontos é o fato que redes sociais possuem um impacto gigantesco na opinião pública. Impacto esse que foi subestimado por muito tempo e que ainda hoje é mal interpretado por legisladores, públicos e as próprias equipes de desenvolvimento.
Ficou famoso anos atrás, um experimento que o Facebook fez com alguns usuários. Ao deixar o feed de notícias com posts mais "positivos", as pessoas começaram a postar coisas mais positivas. O mesmo para posts mais "negativos". Existem diversas implicações éticas aqui mas, no fundo estamos lidando com o bom e velho convencimento.
Como essa ferramenta vai se comportar na mão de Musk nós não sabemos, mas seu poder não pode ser subestimado.
Leia mais Apesar de você talvez já ter lido muita coisa disso essa semana - até mesmo sem querer - esse texto oferece uma perspectiva interessante: Robert Reich - When billionaires talk about freedom, watch your wallets
Na edição NDB #4 eu discuti um pouco sobre performance em Python - especialmente na questão de escolha de linguagem de programação e como "performance" é uma questão dependente de contexto.
Porém, planos para aumentar a performance de Python - no sentido estrito - estão em andamento e já mostram avanços. Python 3.11 performa 60% melhor do que a 3.10 em alguns benchmarks.
Isso não foi por acidente. Existe um plano oficial de curto e longo prazo sobre performance. A versão atual - 3.10 - já incorporou algumas melhorias e mais estão planejadas até a v3.13.
Detalhes do que aconteceu e como podem ser encontrados no changelog oficial
Uma das estratégias mais usadas para distribuir computação entre diferentes máquinas é o passamento de mensagens. Para quem nunca teve contato com essa estratégia, ela pode ser empregada em diversas situações quando dois softwares precisam colaborar entre si. Um exemplo rápido:
Dois códigos separados, um mandando uma mensagem para o outro. O primeiro cuida de uma parte e o outro cuida só de emails.
Agora, existem diversos "sabores" pelo qual essa divisão pode acontecer. Por exemplo, pode ser que o código enviando a mensagem não se importa se algum outro código vai receber. Ou, por outro lado, pode acontecer que o código enviando a mensagem não só se importa que outro receba mas que apenas um a receba - é o nosso caso, seria estranho duas instâncias do nosso enviador de e-mail ler a mesma mensagem e acabar mandando um e-mail duas vezes.
Esses diversos "sabores" - formalmente chamados de arquiteturas - tem nomes e definições rígidas. Publisher & Subscriber (PUB-SUB), Worker Queue, Topics, RPC, etc. É importante utilizar da arquitetura correta para o problema correto.
Essa semana, enquanto montando uma aula sobre esse assunto, me deparei com a excelente documentação do RabbitMQ. RabbitMQ é um dos softwares que podemos utilizar para fazer esse passamento de messagem entre serviços.
Caso você nunca tenha visto esses conceitos ou queira dar uma refrescada nesses diferentes padrões, recomendo dar uma lida! Achei a escrita didática e os exemplos bons. Os códigos em Python precisam de um pouco de modernização, mas funcionam bem.
A Bloomberg é uma das grandes empresas que usam Python nas operações do dia-a-dia. Recentemente, o time de Python de lá lançou para o público a Memray, uma ferramenta de análise de uso de memória de aplicações Python.
Utilizando o Memray é possível ver detalhes de como o seu código, as bibliotecas que ele utiliza e até mesmo o próprio interpretador Python está utilizando a RAM. Isso é bem importante para encontrar possíveis vazamentos de memórias, partes do código que estejam utilizando quantidades desnecessárias de memória e então fazer otimizações guiadas por esses dados.
Até a próxima!
Problemas? Sugestões? Críticas? "Socorro, meu sistema caiu"? Responda a esse email (bidu@notasdobidu.com)! Todas as mensagens são lidas (:
Me siga também no Twitter - @fevir0 ou no LinkedIn. Leia o blog completo em Notas do Bidu