Estou construindo um aplicativo da web com o Django. As razões pelas quais escolhi o Django foram:
- Eu queria trabalhar com ferramentas gratuitas / de código aberto.
- Eu gosto de Python e sinto que é uma linguagem de longo prazo , enquanto em relação a Ruby eu não tinha certeza, e o PHP parecia um grande aborrecimento para aprender.
- Estou construindo um protótipo para uma ideia e não estava pensando muito no futuro. A velocidade de desenvolvimento foi o principal fator, e eu já conhecia Python.
- Eu sabia que a migração para o Google App Engine seria mais fácil, caso eu faça isso no futuro.
- Ouvi dizer que o Django era "legal".
Agora que estou mais perto de pensar em publicar meu trabalho, começo a me preocupar com escala. As únicas informações que encontrei sobre os recursos de dimensionamento do Django são fornecidas pela equipe do Django (não estou dizendo nada para desconsiderá-las, mas essas claramente não são informações objetivas ...).
Minhas perguntas:
- Qual é o "maior" site criado no Django hoje? (Eu meço o tamanho principalmente pelo tráfego do usuário)
- O Django pode lidar com 100.000 usuários diariamente , cada um visitando o site por algumas horas?
- Um site como o Stack Overflow poderia ser executado no Django?
python
django
web-applications
scalability
Roee Adler
fonte
fonte
what's the cost of scaling in the Django?
Respostas:
"Quais são os maiores sites criados no Django hoje?"
Não existe um único local que colete informações sobre o tráfego nos sites criados pelo Django, então terei que investigar usando dados de vários locais. Primeiro, temos uma lista de sites do Django na primeira página da página principal do projeto Django e, em seguida, uma lista dos sites criados pelo Django em djangosites.org . Percorrendo as listas e escolhendo algumas que eu conheço que possuem tráfego decente, vemos:
Instagram : O que fortalece o Instagram: Centenas de instâncias, dezenas de tecnologias .
Pinterest : Alexa rank 37 (21.4.2015) e 70 milhões de usuários em 2013
Bitbucket : 200 TB de código e 2.500.000 usuários
Disqus : servindo 400 milhões de pessoas com Python .
curse.com : 600 mil visitas diárias .
tabblo.com : 44 mil visitas diárias , consulte as postagens de Ned Batchelder Infraestrutura para sites modernos .
chesspark.com : Alexa classifica cerca de 179k.
pownce.com (não está mais ativo): alexa classifica cerca de 65k. Mike Malone, da Pownce, em sua apresentação do EuroDjangoCon no Scaling Django Web Apps, diz "centenas de acessos por segundo". Esta é uma apresentação muito boa de como escalar o Django e apresenta alguns pontos positivos, incluindo deficiências (atuais) na escalabilidade do Django.
A HP construiu um site com o Django 1.5: ePrint center . No entanto, como no novemer / 2015, todo o site foi migrado e esse link é apenas um redirecionamento. Este site era um serviço mundial que atendia a assinatura do Instant Ink e serviços relacionados oferecidos pela HP (*).
"O Django pode lidar com 100.000 usuários diariamente, cada um visitando o site por algumas horas?"
Sim, veja acima.
"Um site como o Stack Overflow pode ser executado no Django?"
Meu pressentimento é sim, mas, como outros responderam e Mike Malone menciona em sua apresentação, o design do banco de dados é fundamental. Prova forte também pode ser encontrada em www.cnprog.com se encontrarmos estatísticas de tráfego confiáveis. Enfim, não é apenas algo que acontecerá juntando vários modelos do Django :)
Existem, é claro, muitos outros sites e blogueiros de interesse, mas tenho que parar em algum lugar!
Postagem no blog sobre o uso do Django para criar um site de alto tráfego, michaelmoore.com, descrito como um dos 10.000 sites mais visitados . Estatísticas de Quantcast e estatísticas de compete.com .
(*) O autor da edição, incluindo essa referência, costumava trabalhar como desenvolvedor terceirizado nesse projeto.
fonte
Estamos fazendo testes de carga agora. Acreditamos que podemos suportar 240 solicitações simultâneas (uma taxa sustentada de 120 ocorrências por segundo 24x7) sem nenhuma degradação significativa no desempenho do servidor. Isso seria 432.000 acessos por hora. Os tempos de resposta não são pequenos (nossas transações são grandes), mas não há degradação do desempenho da linha de base à medida que a carga aumenta.
Nós estamos usando o Django e MySQL front-end do Apache. O sistema operacional é o Red Hat Enterprise Linux (RHEL). 64 bits. Usamos mod_wsgi no modo daemon para o Django. Não fizemos nenhuma otimização de cache ou banco de dados além de aceitar os padrões.
Estamos todos em uma VM em um Dell de 64 bits com (acho) 32 GB de RAM.
Como o desempenho é quase o mesmo para 20 ou 200 usuários simultâneos, não precisamos gastar muito tempo "aprimorando". Em vez disso, precisamos simplesmente manter nosso desempenho básico por meio de aprimoramentos comuns de desempenho SSL, design e implementação de bancos de dados comuns (indexação etc.), aprimoramentos comuns de desempenho de firewall etc.
O que medimos são nossos laptops de teste de carga que sofrem com a carga de trabalho insana de 15 processos executando 16 threads simultâneos de solicitações.
fonte
Não tenho certeza sobre o número de visitas diárias, mas aqui estão alguns exemplos de sites grandes do Django:
Aqui está um link para a lista de sites Django de alto tráfego no Quora .
fonte
Nos EUA, era o Mahalo . Me disseram que eles lidam com cerca de 10 milhões de únicos por mês. Agora, em 2019, o Mahalo usa o Ruby on Rails.
No exterior, a Globo rede (uma rede de sites de notícias, esportes e entretenimento no Brasil); Alexa os classifica entre os 100 melhores no mundo (atualmente, atualmente, é o 80º).
Outros usuários notáveis do Django incluem PBS, National Geographic, Discovery, NASA (na verdade, várias divisões diferentes dentro da NASA) e a Biblioteca do Congresso.
Sim - mas apenas se você tiver escrito seu aplicativo corretamente e se tiver hardware suficiente. Django não é uma bala mágica.
Sim (mas veja acima).
Em termos de tecnologia, facilmente: veja o soclone por uma tentativa. Em termos de tráfego, a concorrência atribui ao StackOverflow menos de 1 milhão de únicos por mês. Eu posso citar pelo menos uma dúzia de sites Django com mais tráfego que SO.
fonte
Escalar aplicativos da Web não é sobre estruturas ou idiomas da Web, é sobre sua arquitetura. É sobre como você lida com o cache do navegador, o cache do banco de dados, como você usa provedores de persistência não padrão (como o CouchDB ), como o banco de dados está ajustado e muitas outras coisas ...
fonte
Brincando de advogado do diabo um pouco:
Você deve conferir o DjangoCon 2008 Keynote , entregue por Cal Henderson , intitulado "Por que eu odeio o Django", onde ele repassa tudo o que falta no Django que você pode querer fazer em um site de alto tráfego. No final do dia, você precisa entender tudo isso com a mente aberta, porque é perfeitamente possível escrever aplicativos Django nessa escala, mas achei que era uma boa apresentação e relevante para sua pergunta.
fonte
O maior site de django que conheço é o Washington Post , o que certamente indicaria que ele pode bem dimensionado.
As boas decisões de design provavelmente têm um impacto maior no desempenho do que qualquer outra coisa. O Twitter é frequentemente citado como um site que incorpora os problemas de desempenho com outra estrutura da Web dinâmica baseada em linguagem interpretada, Ruby on Rails - ainda assim, os engenheiros do Twitter afirmaram que a estrutura não é tão problemática quanto algumas das escolhas de design de banco de dados que fizeram anteriormente. em.
O Django funciona muito bem com o memcached e fornece algumas classes para gerenciar o cache, que é onde você resolveria a maioria dos seus problemas de desempenho. O que você entrega no fio é quase mais importante do que seu back-end na realidade - o uso de uma ferramenta como yslow é essencial para um aplicativo da web de alto desempenho. Você sempre pode jogar mais hardware no seu back-end, mas não pode alterar a largura de banda dos usuários.
fonte
Eu estava na conferência EuroDjangoCon na outra semana, e esse foi o assunto de algumas palestras - inclusive dos fundadores do maior site do Django, Pownce (slides de uma palestra aqui ). A principal mensagem é que não é com o Django que você precisa se preocupar, mas coisas como cache adequado, balanceamento de carga, otimização de banco de dados etc.
O Django realmente tem ganchos para a maioria dessas coisas - o cache, em particular, é muito fácil.
fonte
Tenho certeza de que você está procurando uma resposta mais sólida, mas a validação objetiva mais óbvia que consigo pensar é que o Google empurra o Django para uso com sua estrutura do App Engine . Se alguém conhece e lida com escalabilidade regularmente, é o Google. Pelo que li, o fator mais limitador parece ser o back-end do banco de dados, e é por isso que o Google usa seus próprios ...
fonte
Conforme declarado no High Performance Django Book e passe por este Cal Henderson
Veja mais detalhes, conforme mencionado abaixo:
Não é incomum ouvir as pessoas dizerem que "o Django não escala" . Dependendo de como você olha, a afirmação é completamente verdadeira ou patentemente falsa. O Django, por si só, não escala.
O mesmo pode ser dito do Ruby on Rails, Flask, PHP ou qualquer outra linguagem usada por um site dinâmico orientado a banco de dados.
A boa notícia, no entanto, é que o Django interage lindamente com um conjunto de ferramentas de armazenamento em cache e balanceamento de carga que lhe permitirá escalar o máximo de tráfego possível.
Ao contrário do que você pode ter lido on-line, ele pode fazer isso sem substituir os principais componentes frequentemente rotulados como "muito lentos", como o ORM do banco de dados ou a camada de modelo.
O Disqus atende a mais de 8 bilhões de visualizações de página por mês. Esses são alguns números enormes.
Essas equipes provaram que o Django certamente escala. Nossa experiência aqui no Lincoln Loop confirma isso.
Criamos grandes sites do Django capazes de passar o dia na página inicial do Reddit sem suar a camisa.
As histórias de sucesso em escala do Django são numerosas demais para serem listadas neste momento.
Faz backup do Disqus, Instagram e Pinterest. Quer mais alguma prova? O Instagram conseguiu sustentar mais de 30 milhões de usuários no Django com apenas 3 engenheiros (2 dos quais não tinham desenvolvimento de back-end
fonte
Hoje usamos muitos aplicativos e sites da Web para nossas necessidades. A maioria deles é altamente útil. Vou mostrar alguns deles usados por python ou django.
Washington Post
O site do Washington Post é uma fonte de notícias on-line extremamente popular para acompanhar seu jornal diário. Sua enorme quantidade de visualizações e tráfego pode ser facilmente manipulada pela estrutura da web do Django.
Washington Post - 52.2 million unique visitors (March, 2015)
NASA
O site oficial da Administração Nacional de Aeronáutica e Espaço é o local para encontrar notícias, fotos e vídeos sobre sua exploração espacial em andamento. Este site do Django pode lidar facilmente com grandes quantidades de visualizações e tráfego.
2 million visitors monthly
O guardião
The Guardian é um site britânico de notícias e mídia de propriedade do Guardian Media Group. Ele contém quase todo o conteúdo dos jornais The Guardian e The Observer. Esses dados enormes são tratados pelo Django.
The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)
Youtube
Todos conhecemos o YouTube como o lugar para enviar vídeos de gatos e falhar. Por ser um dos sites mais populares existentes, ele oferece inúmeras horas de entretenimento em vídeo. A linguagem de programação Python o capacita e os recursos que amamos.
Dropbox
O DropBox iniciou a revolução do armazenamento de documentos on-line que se tornou parte da vida cotidiana. Agora, armazenamos quase tudo na nuvem. O Dropbox nos permite armazenar, sincronizar e compartilhar quase tudo usando o poder do Python.
Survey Monkey
A Survey Monkey é a maior empresa de pesquisas on-line. Eles podem lidar com mais de um milhão de respostas todos os dias no site reescrito do Python.
Quora
O Quora é o local número um on-line para fazer uma pergunta e receber respostas de uma comunidade de indivíduos. No site do Python, os resultados relevantes são respondidos, editados e organizados por esses membros da comunidade.
Bitly
A maior parte do código para serviços e análises de encurtamento de URL da Bitly são todos criados com o Python. Seu serviço pode lidar com centenas de milhões de eventos por dia.
Reddit
O Reddit é conhecido como a primeira página da internet. É o local on-line para encontrar informações ou entretenimento com base em milhares de categorias diferentes. Posts e links são gerados pelo usuário e promovidos ao topo por meio de votos. Muitos dos recursos do Reddit dependem do Python para sua funcionalidade.
Hipmunk
Hipmunk é um site de viagens ao consumidor on-line que compara os principais sites de viagens para encontrar as melhores ofertas. As ferramentas deste site em Python permitem que você encontre os hotéis e voos mais baratos para o seu destino.
Clique aqui para saber mais: 25 dos sites mais populares de python e django , Quais são alguns dos sites mais conhecidos que rodam no Django
fonte
Acho que podemos adicionar o App da Apple do ano de 2011, Instagram , à lista que usa django intensamente.
fonte
Sim pode. Poderia ser Django com Python ou Ruby on Rails. Ainda vai escalar.
Existem poucas técnicas diferentes. Primeiro, o cache não está em escala. Você pode ter vários servidores de aplicativos balanceados com o nginx como frente, além dos balanceadores de hardware. Para escalar no lado do banco de dados, você pode ir muito longe com o slave slave no MySQL / PostgreSQL, se seguir o caminho do RDBMS.
Alguns bons exemplos de sites de tráfego pesado no Django podem ser:
Você pode se sentir seguro.
fonte
Aqui está uma lista de algumas coisas de alto nível construídas no Django:
O aplicativo " Investigue as despesas do seu MP " do The Guardian
Politifact.com (aqui está uma postagem no blog falando sobre a experiência (positiva). O site ganhou um Pulitzer.
NY Times Representar aplicativo
EveryBlock
Peter Harkins, um dos programadores do WaPo, lista todas as coisas que eles criaram com o Django em seu blog.
É um pouco velho, mas alguém do LA Times deu uma visão geral básica de por que eles foram com o Django.
O Onion's AV Club foi recentemente transferido de (acho que Drupal) para Django.
Eu imagino que vários desses sites provavelmente superem os 100k + acessos por dia. O Django certamente pode fazer 100k hits / dia e mais. Mas o YMMV pode levar seu site específico para lá, dependendo do que você está criando.
Existem opções de cache no nível do Django (por exemplo, conjuntos de consultas e visualizações em cache no memcached podem fazer maravilhas) e além (caches upstream como o Squid ). As especificações do servidor de banco de dados também serão um fator (e geralmente o lugar para ostentar), assim como você o ajustou. Não suponha, por exemplo, que o Django vá configurar os índices corretamente. Não assuma que o PostgreSQL ou MySQL padrão configuração é a correta.
Além disso, você sempre tem a opção de ter vários servidores de aplicativos executando o Django, se esse for o ponto lento, com um balanceador de carga de software ou hardware à frente.
Finalmente, você está servindo conteúdo estático no mesmo servidor que o Django? Você está usando Apache ou algo como nginx ou lighttpd ? Você pode usar uma CDN para conteúdo estático? Essas são coisas em que pensar, mas tudo é muito especulativo. 100 mil acessos / dia não é a única variável: quanto você deseja gastar? Quanta experiência você possui no gerenciamento de todos esses componentes? Quanto tempo você tem para juntar tudo isso?
fonte
O advogado do desenvolvedor do YouTube falou sobre o dimensionamento do Python no PyCon 2012 , o que também é relevante para o dimensionamento do Django.
O YouTube tem mais de um bilhão de usuários , e o YouTube é construído em Python.
fonte
Uso o Django há mais de um ano e estou muito impressionado com a maneira como ele consegue combinar modularidade, escalabilidade e velocidade de desenvolvimento. Como em qualquer tecnologia, ela vem com uma curva de aprendizado. No entanto, essa curva de aprendizado é muito menos acentuada pela excelente documentação da comunidade Django. O Django conseguiu lidar com tudo que joguei muito bem. Parece que será capaz de escalar bem no futuro.
O BidRodeo Penny Auctions é um site de tamanho médio do Django. É um site muito dinâmico e lida com um bom número de visualizações de página por dia.
fonte
Observe que, se você espera 100 mil usuários por dia, ativos por horas a fio (ou seja, no máximo 20 mil usuários simultâneos), precisará de MUITOS servidores. SO possui ~ 15.000 usuários registrados, e a maioria deles provavelmente não está ativa diariamente. Embora a maior parte do tráfego seja proveniente de usuários não registrados, suponho que poucos deles permaneçam no site por mais de alguns minutos (ou seja, seguem os resultados de pesquisa do Google e depois saem).
Para esse volume, espere pelo menos 30 servidores ... que ainda são 1.000 usuários simultâneos bastante pesados por servidor.
fonte
Qual é o "maior" site criado no Django hoje? (Eu meço o tamanho principalmente pelo tráfego de usuários) Pinterest
disqus.com
Mais aqui: https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/
O Django pode lidar com 100.000 usuários diariamente, cada um visitando o site por algumas horas?
Sim, mas use arquitetura adequada, design de banco de dados, uso de cache, use balanços de carga e vários servidores ou nós
Um site como o Stack Overflow poderia ser executado no Django?
Sim, basta seguir a resposta mencionada na 2ª pergunta
fonte
Outro exemplo é rasp.yandex.ru, serviço de horário de transporte russo. Seu atendimento satisfaz suas necessidades.
fonte
Se você tem um site com algum conteúdo estático, colocar um servidor Varnish na frente aumentará drasticamente seu desempenho. Mesmo uma única caixa pode cuspir facilmente 100 Mbit / s de tráfego.
Observe que, com conteúdo dinâmico, usar algo como Varnish se torna muito mais complicado.
fonte
Minha experiência com o Django é mínima, mas eu lembro no The Django Book que eles têm um capítulo em que entrevistam pessoas executando alguns dos aplicativos maiores do Django. Aqui está um link. Eu acho que poderia fornecer algumas idéias.
O site curse.com é um dos maiores aplicativos do Django, com cerca de 60 a 90 milhões de visualizações de página em um mês.
fonte
Desenvolvo sites de alto tráfego usando o Django para a emissora nacional na Irlanda. Funciona bem para nós. Desenvolver um site de alto desempenho é mais do que apenas escolher uma estrutura. Uma estrutura será apenas uma parte de um sistema que é tão forte quanto seu elo mais fraco. O uso da estrutura mais recente 'X' não resolverá seus problemas de desempenho se o problema for consultas lentas do banco de dados ou um servidor ou rede mal configurado.
fonte
Embora tenha havido muitas ótimas respostas aqui, eu apenas gostaria de salientar que ninguém enfatizou ..
Depende da aplicação
Se seu aplicativo é leve em gravações, como você está lendo muito mais dados do banco de dados do que está gravando. Então escalar o django deve ser bastante trivial, heck, ele vem com uma saída / exibição razoavelmente decente de cache diretamente da caixa. Faça uso disso e, digamos, redis como um provedor de cache, coloque um balanceador de carga na frente dele, gire n instâncias e você poderá lidar com uma quantidade MUITO grande de tráfego.
Agora, se você tiver que fazer milhares de gravações complexas por segundo? História diferente. O Django será uma má escolha? Bem, não necessariamente, depende de como você realmente arquitetou sua solução e também quais são seus requisitos.
Apenas meus dois centavos :-)
fonte
Você pode definitivamente executar um site de alto tráfego no Django. Confira este post anterior ao Django 1.0, mas ainda relevante aqui: http://menendez.com/blog/launching-high-performance-django-site/
fonte
Confira este micro agregador de notícias chamado EveryBlock .
É totalmente escrito em Django. De fato, eles são as pessoas que desenvolveram o próprio framework Django.
fonte
O problema é não saber se o django pode ser dimensionado ou não.
O caminho certo é entender e saber quais são os padrões e as ferramentas de design de rede para colocar no seu projeto django / symfony / rails para dimensionar bem.
Algumas idéias podem ser:
Espero que ajude um pouco. Esta é a minha pequena rocha para a montanha.
fonte
Se você deseja usar o código aberto, há muitas opções para você. Mas o python é o melhor entre eles, pois possui muitas bibliotecas e uma comunidade super impressionante. Estas são algumas razões que podem mudar de idéia:
Python é muito bom, mas é uma linguagem interpretada que o torna lento. Mas existem muitos serviços de acelerador e cache que resolvem parcialmente esse problema.
Se você está pensando em desenvolvimento rápido, o Ruby on Rails é o melhor entre todos. O lema principal dessa estrutura (ROR) é proporcionar uma experiência confortável aos desenvolvedores. Se você comparar Ruby e Python, ambos têm quase a mesma sintaxe.
O Google App Engine é um serviço muito bom, mas o vincula em seu escopo. Você não tem chance de experimentar coisas novas. Em vez disso, você pode usar a nuvem Digital Ocean, que cobra apenas US $ 5 / mês pela sua gota mais simples. Heroku é outro serviço gratuito onde você pode implantar seu produto.
Sim! Sim! O que você ouviu está totalmente correto, mas aqui estão alguns exemplos que usam outras tecnologias
Conclusão é uma estrutura ou linguagem não fará tudo por você. Uma arquitetura, design e estratégia melhores fornecerão um site escalável. O Instagram é o maior exemplo, essa pequena equipe está gerenciando dados tão grandes. Aqui está um blog sobre sua arquitetura que deve ser lido.
fonte
Eu não acho que a questão seja realmente sobre o dimensionamento do Django.
Eu realmente sugiro que você analise sua arquitetura, o que o ajudará com suas necessidades de dimensionamento. Se você errar, não faz sentido o desempenho do Django. Desempenho! = Escala. Você pode ter um sistema que tenha um desempenho incrível, mas que não seja dimensionado e vice-versa.
O banco de dados do aplicativo está vinculado? Se for, seus problemas de escala também estarão lá. Como você planeja interagir com o banco de dados do Django? O que acontece quando seu banco de dados não pode processar solicitações tão rapidamente quanto o Django as aceita? O que acontece quando seus dados superam uma máquina física. Você precisa explicar como planeja lidar com essas circunstâncias.
Além disso, o que acontece quando o tráfego ultrapassa um servidor de aplicativos? como você lida com as sessões nesse caso pode ser complicado, na maioria das vezes você provavelmente exigiria uma arquitetura de nada compartilhado. Novamente, isso depende da sua aplicação.
Em idiomas curtos não é o que determina a escala, um idioma é responsável pelo desempenho (novamente, dependendo dos aplicativos, idiomas diferentes têm desempenho diferente). É seu design e arquitetura que tornam a escala uma realidade.
Espero que ajude, ficaria feliz em ajudar ainda mais se você tiver dúvidas.
fonte
Espalhar as tarefas uniformemente, em resumo, otimizar todos os aspectos, incluindo bancos de dados, arquivos, imagens, CSS etc. e equilibrar a carga com vários outros recursos, é necessário assim que o site / aplicativo começar a crescer. OU você abre mais espaço para que cresça. Implementação de tecnologias mais recentes como CDN, Cloud são obrigatórios com sites enormes. O simples desenvolvimento e aprimoramento de um aplicativo não dará satisfação percentual a cento, outros componentes também desempenham um papel importante.
fonte