O backend do Meta Threads foi construído em Python 3.10
(twitter.com/llanga)"Você sabia que o backend do #MetaThreads foi construído em #Python 3.10?
Ele está rodando no fork #Cinder do Instagram, e esse fork inclui vários recursos interessantes que diferem do Python 3.10 padrão, como compilador JIT, módulos de carregamento tardio e módulos estáticos pré-compilados."
1 comentários
Comentários do Hacker News
É bem irônico para quem diz que “Python não é rápido o suficiente para backends de produção”. Afinal, a mesma empresa opera a maior rede social do mundo feita com PHP + MySQL
A máquina virtual que faz o JIT também é toda em C++, e a distribuição de MySQL deles é um fork interno fortemente modificado para escalabilidade. Há separação entre armazenamento e computação, sharding, mecanismo de armazenamento baseado em RocksDB em vez de InnoDB, coisas como Raft para replicação síncrona
Houve realmente muito excelente trabalho de engenharia para tornar a infraestrutura de backend escalável
Materiais de referência:
[1] https://engineering.fb.com/2016/08/31/core-data/myrocks-a-sp...
[2] https://research.facebook.com/file/529018501538081/hhvm-jit-...
[3] https://research.facebook.com/file/700800348487709/HHVM_ICPE...
Pense em helpers funcionais, execução assíncrona em milhares de núcleos, árvores de expansão atravessando datacenters via SSH. Como nota lateral, boa parte das ótimas coisas que eu usava foi feita por Evan Priestley, que também criou o Phabricator e vários outros sistemas poderosos
“Está rodando no fork Cinder do Instagram, que inclui JIT, módulos com lazy loading, módulos estáticos pré-compilados e várias outras mudanças interessantes em relação ao Python 3.10 puro”
Isso veio do tweet
Pessoalmente, não me importo com a linguagem que as pessoas usam. Todo mundo sabe que, se houver dinheiro, é só colocar mais servidores. Pelo menos até CFO e CTO definirem “redução de custos” como o próximo grande objetivo por causa da recessão
É surpreendente que em 2023 ainda se discuta a “prontidão para produção” de linguagens de programação mainstream. Parece competição para ver quem são os “descolados”
As partes que realmente exigem muito desempenho estão em vários serviços de agregação e recomendação baseados em C++. Mas o servidor web, corretamente, é Django
Por que usariam Django? Já usei em projetos pequenos, mas não achei tão rápido e imaginava que não serviria para um app grande assim. Queria entender os prós e contras
Por que não fizeram em C++ ou Rust? Mesmo que as partes pesadas estejam em linguagens compiladas, o Python não limitaria a latência de resposta? Posso estar fazendo uma pergunta ingênua, sou amador
“Está rodando no fork Cinder do Instagram, que inclui JIT, módulos com lazy loading, módulos estáticos pré-compilados e várias outras mudanças interessantes em relação ao Python 3.10 puro”
Ou seja, não é simplesmente Python 3.10 puro
Não sei se o Facebook quer continuar mantendo o fork, mas o pessoal do CPython está aberto a incorporar esses recursos se fizer sentido
É irônico que o post sobre o backend do Threads tenha sido publicado no Twitter
Entendeu? Threads, threading...? Tudo bem, já estou indo
Mesmo que tivesse sido um post no Threads, não daria para enviar ao HN
Ainda não está aberto para a web. Dizem que vai estar em algum momento
É claro que há uma boa sobreposição no backend. https://www.threads.net/t/C é a primeira publicação do Instagram, mas também aparece no Threads e tem exatamente o mesmo número de curtidas que no Instagram
Mas em https://www.threads.net/@kevin aparece que não há threads
Python é só o servidor web. Os componentes realmente sensíveis a desempenho — proxy de borda, balanceador de carga, serviços de backend, banco de dados, cache e serviços de armazenamento — em sua maioria são em C++
Trabalhei com Cinder e com o servidor web. Posso responder perguntas técnicas :)
Mas ali a latência era um grande problema e, como sempre, a prioridade de otimização ficou baixa para conseguirmos chegar ao MVP
Então tenho curiosidade se o Cinder pode ser usado para otimizar streaming de dados em tempo real, ou se essa pergunta em si já mostra que eu não entendi o caso de uso
Também usávamos Django e agora fico pensando se deveríamos ter migrado para FastAPI. Mas isso é outra pergunta
Quero saber mais detalhes sobre o rollout. Estão entrando bem mais de 1 milhão de novos usuários por hora, o que é bem impressionante
Mesmo assim, com certeza deve haver muitos detalhes interessantes que eu gostaria de ouvir
Alguns milhões de novos usuários não representam nem 0,1% do total. Está totalmente dentro da variação esperável
https://github.com/twitter/the-algorithm/pull/447 jamais deve ser esquecido
O Threads reutilizou o backend/API do Instagram. O Instagram foi baseado em Python desde o início, então foi por isso que o Threads acabou usando Python
Isso não significa que, ao criar um app assim do zero, você deva escolher Python quando existem alternativas que não exigem um fork interno. Lendo o texto completo, isso fica bem fácil de entender, mas a interface “só leem o título” do Hacker News parece estar distorcendo isso