Django évolue-t-il? [fermé]

1136

Je construis une application web avec Django. Les raisons pour lesquelles j'ai choisi Django étaient:

  • Je voulais travailler avec des outils gratuits / open-source.
  • J'aime Python et je pense que c'est un langage à long terme , alors qu'en ce qui concerne Ruby, je n'en étais pas sûr, et PHP semblait être un énorme tracas à apprendre.
  • Je construis un prototype pour une idée et je ne pensais pas trop à l'avenir. La vitesse de développement était le facteur principal, et je connaissais déjà Python.
  • Je savais que la migration vers Google App Engine serait plus facile si je décidais de le faire à l'avenir.
  • J'ai entendu dire que Django était "sympa".

Maintenant que je me rapproche de l'idée de publier mon travail, je commence à m'inquiéter de l'échelle. La seule information que j'ai trouvée sur les capacités de mise à l'échelle de Django est fournie par l'équipe de Django (je ne dis rien pour les ignorer, mais ce ne sont clairement pas des informations objectives ...).

Mes questions:

  • Quel est le "plus grand" site construit sur Django aujourd'hui? (Je mesure la taille principalement par le trafic des utilisateurs)
  • Django peut-il gérer 100 000 utilisateurs par jour , chacun visitant le site pendant quelques heures?
  • Un site comme Stack Overflow pourrait-il fonctionner sur Django?
Roee Adler
la source
2
Si vous ne l'avez pas déjà fait, je vous recommande de lire la section sur la mise à l'échelle dans le livre Django: djangobook.com/en/1.0/chapter20 Ou la version plus récente: djangobook.com/en/2.0/chapter12
monkut
15
Pourrait vouloir corriger «la vitesse était le facteur principal» pour clarifier si vous parlez de vitesse d'exécution ou d'effort de développement. Cela ressemble à un effort de développement, ce qui est logique.
S.Lott
6
Il serait intéressant de comparer cela avec RoR.
Kozyarchuk
6
@ ajkumar25, AFAIK disqus utilise django blog.disqus.com/post/62187806135/… .
alxs
6
la question devrait êtrewhat's the cost of scaling in the Django?
Sławomir Lenart

Réponses:

933
  1. "Quels sont les plus grands sites construits sur Django aujourd'hui?"

    Il n'y a pas un seul endroit qui collecte des informations sur le trafic sur les sites construits par Django, donc je vais devoir essayer de l'utiliser en utilisant des données provenant de divers endroits. Tout d'abord, nous avons une liste des sites Django sur la première page de la page principale du projet Django , puis une liste des sites construits par Django sur djangosites.org . En parcourant les listes et en choisissant certaines que je connais, nous avons un trafic décent:

  2. "Django peut-il gérer 100 000 utilisateurs par jour, chacun visitant le site pendant quelques heures?"

    Oui, voir ci-dessus.

  3. "Un site comme Stack Overflow pourrait-il fonctionner sur Django?"

    Mon intuition est oui mais, comme d'autres l'ont répondu et que Mike Malone mentionne dans sa présentation, la conception de la base de données est essentielle. Des preuves solides peuvent également être trouvées sur www.cnprog.com si nous pouvons trouver des statistiques de trafic fiables. Quoi qu'il en soit, ce n'est pas seulement quelque chose qui se produira en réunissant un tas de modèles Django :)

Il y a bien sûr de nombreux autres sites et blogueurs intéressants, mais je dois m'arrêter quelque part!


Article de blog sur l' utilisation de Django pour créer le site à fort trafic michaelmoore.com décrit comme l'un des 10 000 meilleurs sites Web . Statistiques Quantcast et stats compet.com .


(*) L'auteur de l'édition, y compris cette référence, avait l'habitude de travailler en tant que développeur externalisé dans ce projet.

Van Gale
la source
267

Nous faisons des tests de charge maintenant. Nous pensons que nous pouvons prendre en charge 240 requêtes simultanées (un taux soutenu de 120 accès par seconde 24h / 24 et 7j / 7) sans aucune dégradation significative des performances du serveur. Ce serait 432 000 visites par heure. Les temps de réponse ne sont pas petits (nos transactions sont importantes) mais il n'y a aucune dégradation de nos performances de base à mesure que la charge augmente.

Nous utilisons Apache Django et MySQL. Le système d'exploitation est Red Hat Enterprise Linux (RHEL). 64 bits. Nous utilisons mod_wsgi en mode démon pour Django. Nous n'avons fait aucune optimisation de cache ou de base de données autre que d'accepter les valeurs par défaut.

Nous sommes tous dans une machine virtuelle sur un Dell 64 bits avec (je pense) 32 Go de RAM.

Étant donné que les performances sont presque les mêmes pour 20 ou 200 utilisateurs simultanés, nous n'avons pas besoin de passer énormément de temps à "peaufiner". Au lieu de cela, nous devons simplement maintenir nos performances de base à travers des améliorations de performances SSL ordinaires, la conception et la mise en œuvre de bases de données ordinaires (indexation, etc.), des améliorations de performances de pare-feu ordinaires, etc.

Ce que nous mesurons, c'est que nos ordinateurs portables de test de charge se débattent sous la charge de travail insensée de 15 processus exécutant 16 threads de demandes simultanés.

S.Lott
la source
3
Aussi curieux: votre base de données fonctionne-t-elle sur la même machine ou sur un serveur distinct?
Jarret Hardie
16
Une machine virtuelle avec Apache, Django et MySQL. mod_wsgi. RHEL.
S.Lott
4
Une mise à jour sur les mesures de performance?
SexyBeast
1
Vous avez raison - si vous considérez le trafic de votre site Web comme une file d'attente, alors combien de réponses pouvez-vous fournir par heure? Si vous gardez le temps de réponse court, vous pouvez servir plus, et donc avoir une plus grande évolutivité - peu importe si vous utilisez Django, Twisted, Rails ou la technologie de la planète Zod.
Ralph Bolton
2
Je travaille avec Django depuis des années et je n'ai jamais vu ce genre de performance dans autre chose qu'une application de jouet qui est principalement en lecture seule. Quelle est la nature de votre demande? N'importe quoi avec des modèles ou des middleware ou des sessions ou une connectivité de base de données ne prendra jamais en charge 120 accès par seconde sans une quantité massive de mise en cache pour contourner tout cela.
Cerin
107

Quel est le "plus grand" site construit sur Django aujourd'hui? (Je mesure la taille principalement par le trafic des utilisateurs)

Aux États-Unis, c'était Mahalo . On me dit qu'ils traitent environ 10 millions d'uniques par mois. Maintenant, en 2019, Mahalo est propulsé par Ruby on Rails.

À l'étranger, le réseau Globo (un réseau de sites d'actualités, de sports et de divertissement au Brésil); Alexa les classe dans le top 100 mondial (environ 80e actuellement).

Les autres utilisateurs de Django notables incluent PBS, National Geographic, Discovery, la NASA (en fait un certain nombre de divisions différentes au sein de la NASA) et la Library of Congress.

Django peut-il gérer quotidiennement 100 000 utilisateurs, chacun visitant le site pendant quelques heures?

Oui - mais seulement si vous avez bien écrit votre application et si vous avez suffisamment de matériel. Django n'est pas une balle magique.

Un site comme StackOverflow pourrait-il fonctionner sur Django?

Oui (mais voir ci-dessus).

Côté technologie, facilement: consultez le soclone pour une tentative. En termes de trafic, rivalisez avec StackOverflow à moins d'un million d'unités uniques par mois. Je peux nommer au moins une douzaine de sites Django avec plus de trafic que SO.

jacobian
la source
2
Pouvez-vous s'il vous plaît estimer le prix approximatif de 5000 hits par seconde, en supposant que c'est comme linkedin, en utilisant Django. Supposons qu'un programmeur moyen ait construit le site et bien sûr ajouté la mise en cache. Supposons que les algorithmes, etc. (pour accélérer les choses) ne soient pas utilisés car je les ai encore utilisés.
user2349115
5
@ user2349115 au moment où votre application obtient 5000 'accès par seconde', vous aurez suffisamment de connaissances de base pour comprendre pourquoi ce n'est pas la bonne question à poser.
Kye R
Mes ninjas (extension de navigateur wrappalyzer) disent que mahalo est rubis sur des rails propulsés maintenant en mars 2019.
Miles Davis
87

La mise à l'échelle des applications Web ne concerne pas les cadres Web ou les langages, mais votre architecture. Il s'agit de la façon dont vous gérez le cache de votre navigateur, le cache de votre base de données, la façon dont vous utilisez les fournisseurs de persistance non standard (comme CouchDB ), le réglage de votre base de données et beaucoup d'autres choses ...

razenha
la source
Le cadre Web compte! Regardez la vitesse de la tornade par rapport aux autres cadres Web en python: tornadoweb.org/documentation#performance
Joshua Partogi
Je n'ai pas downvote, mais je suppose que vous êtes allé un peu hors du sujet car ils discutaient des mérites de django et vous ne pouvez pas utiliser chaque base de données, régler votre base de données et utiliser couchdb à son maximum dans chaque cadre donné. Sauf si vous ne le faites pas, bien sûr, réécrivez-en de gros morceaux.
ZJR
8
@ZLR je ne crois pas que je sois hors sujet. Il a demandé si Django pouvait évoluer, j'ai répondu oui, car presque tous les frameworks web modernes, quelle que soit la langue, peuvent
évoluer
Ouais, bloquant vs IO non bloquante ne importe, comme dans l'exemple Tornado. Bien que cela ait été dit, Tornado n'est pas un framework Web, mais votre application devra être écrite de manière à tirer parti des E / S non bloquantes.
Rob Grant
Avec Tornado, il est très facile d'écrire du code d'E / S bloquant. Et cela ne donne pas de simultanéité élevée. Le cadre n'a pas d'importance.
Shiplu Mokaddim
80

Jouer l'avocat du diable un peu:

Vous devriez vérifier la Keynote DjangoCon 2008 , délivrée par Cal Henderson , intitulée "Pourquoi je déteste Django" où il passe en revue tout ce qui manque à Django que vous voudrez peut-être faire dans un site Web à fort trafic. À la fin de la journée, vous devez prendre tout cela avec un esprit ouvert car il est parfaitement possible d'écrire des applications Django à cette échelle, mais je pensais que c'était une bonne présentation et pertinente pour votre question.

Paolo Bergantino
la source
3
De plus, Flickr n'a pas été construit en un jour.
Deniz Dogan
34
Il semble que plusieurs des problèmes sur lesquels Cal a mis l'accent
Dolph
51

Le plus grand site de django que je connaisse est le Washington Post , ce qui indiquerait certainement qu'il peut bien .

De bonnes décisions de conception ont probablement un impact plus important sur les performances qu'autre chose. Twitter est souvent cité comme un site qui incarne les problèmes de performances avec un autre cadre Web basé sur un langage interprété dynamique, Ruby on Rails - mais les ingénieurs de Twitter ont déclaré que le cadre n'est pas autant un problème que certains des choix de conception de base de données qu'ils ont faits au début sur.

Django fonctionne très bien avec memcached et fournit quelques classes pour gérer le cache, où vous résolvez la majorité de vos problèmes de performances. Ce que vous livrez sur le câble est presque plus important que votre backend en réalité - l'utilisation d'un outil comme yslow est essentielle pour une application Web haute performance. Vous pouvez toujours jeter plus de matériel sur votre backend, mais vous ne pouvez pas changer la bande passante de vos utilisateurs.

Bayard Randel
la source
1
N'est-ce pas seulement une partie de washingtonpost.com qui tourne sur Django? La page d'accueil de Django semble indiquer qu'il ne s'agit que de projects.washingtonpost.com/congress
Xiong Chiamiov
3
Vous confondez peut-être le Washington Post avec le Washington Times. Je crois que le Times est entièrement sur Django, mais c'est un journal beaucoup plus petit.
Eli
32

J'étais à la conférence EuroDjangoCon la semaine dernière, et cela a fait l'objet de quelques discussions - y compris des fondateurs de ce qui était le plus grand site basé à Django, Pownce (diapositives d'une conférence ici ). Le message principal est que ce n'est pas Django dont vous devez vous soucier, mais des choses comme la mise en cache appropriée, l'équilibrage de charge, l'optimisation de la base de données, etc.

Django a en fait des crochets pour la plupart de ces choses - la mise en cache, en particulier, est rendue très facile.

Daniel Roseman
la source
24

Je suis sûr que vous cherchez une réponse plus solide, mais la validation objective la plus évidente à laquelle je peux penser est que Google pousse Django à utiliser son framework App Engine . Si quelqu'un est au courant de l'évolutivité et en traite régulièrement, c'est bien Google. D'après ce que j'ai lu, le facteur le plus limitant semble être le back-end de la base de données, c'est pourquoi Google utilise le leur ...

jess
la source
La promotion de Django / Python peut être plus liée à la politique de Google de promouvoir Python comme son choix de langage «Autre» après C ++?
GuruM
Quand j'ai dû utiliser GAE, c'était assez proche de quelque chose comme Tornado ...
Luis Masuelli
18

Comme indiqué dans High Performance Django Book and Go through this Cal Henderson

Voir plus de détails comme mentionné ci-dessous:

Il n'est pas rare d'entendre des gens dire "Django ne fait pas de balance" . Selon la façon dont vous la regardez, l'énoncé est soit complètement vrai, soit manifestement faux. Django, à lui seul, n'est pas à l'échelle.

La même chose peut être dite de Ruby on Rails, Flask, PHP ou tout autre langage utilisé par un site Web dynamique basé sur une base de données.

La bonne nouvelle, cependant, est que Django interagit magnifiquement avec une suite d'outils de mise en cache et d'équilibrage de charge qui lui permettront d'évoluer sur autant de trafic que vous pouvez lui envoyer.

Contrairement à ce que vous avez pu lire en ligne, il peut le faire sans remplacer les composants principaux souvent étiquetés comme «trop lents» tels que l'ORM de la base de données ou la couche modèle.

Disqus sert plus de 8 milliards de pages vues par mois. Ce sont des chiffres énormes.

Ces équipes ont prouvé que Django évolue très certainement. Notre expérience ici à Lincoln Loop le confirme.

Nous avons construit de grands sites Django capables de passer la journée sur la page d'accueil de Reddit sans transpirer.

Les histoires de réussite de Django à l'échelle sont presque trop nombreuses pour être répertoriées à ce stade.

Il soutient Disqus, Instagram et Pinterest. Vous voulez plus de preuves? Instagram a pu soutenir plus de 30 millions d'utilisateurs sur Django avec seulement 3 ingénieurs (dont 2 sans développement back-end

Mushahid Khan
la source
17

Aujourd'hui, nous utilisons de nombreuses applications et sites Web pour nos besoins. La plupart d'entre eux sont très utiles. Je vais vous montrer certains d'entre eux utilisés par python ou django.

Washington Post

Le site Web du Washington Post est une source d'information en ligne extrêmement populaire pour accompagner leur quotidien. Son 'énorme quantité de vues et de trafic peut être facilement gérée par le framework web Django. Washington Post - 52.2 million unique visitors (March, 2015)

NASA

Le site officiel de la National Aeronautics and Space Administration est l'endroit idéal pour trouver des nouvelles, des photos et des vidéos sur leur exploration spatiale en cours. Ce site Django peut facilement gérer d'énormes quantités de vues et de trafic. 2 million visitors monthly

Le gardien

The Guardian est un site d'information et de presse britannique appartenant au Guardian Media Group. Il contient presque tout le contenu des journaux The Guardian et The Observer. Ces énormes données sont gérées par Django. The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

Youtube

Nous savons tous que YouTube est l'endroit idéal pour télécharger des vidéos de chats et échoue. En tant que l'un des sites Web les plus populaires, il nous offre des heures de divertissement vidéo sans fin. Le langage de programmation Python le propulse et les fonctionnalités que nous aimons.

DropBox

DropBox a commencé la révolution du stockage de documents en ligne qui fait désormais partie de la vie quotidienne. Nous stockons maintenant presque tout dans le cloud. Dropbox nous permet de stocker, synchroniser et partager presque tout en utilisant la puissance de Python.

Survey Monkey

Survey Monkey est la plus grande société d'enquête en ligne. Ils peuvent gérer plus d'un million de réponses chaque jour sur leur site Web Python réécrit.

Quora

Quora est le numéro un en ligne pour poser une question et recevoir des réponses d'une communauté d'individus. Sur leur site Web Python, les résultats pertinents sont répondus, modifiés et organisés par ces membres de la communauté.

Bitly

La majorité du code des services et des analyses de raccourcissement d'URL Bitly sont tous construits avec Python. Leur service peut gérer des centaines de millions d'événements par jour.

Reddit

Reddit est connu comme la première page d'Internet. C'est l'endroit en ligne pour trouver des informations ou des divertissements basés sur des milliers de catégories différentes. Les publications et les liens sont générés par l'utilisateur et sont promus au sommet par le biais de votes. De nombreuses capacités de Reddit reposent sur Python pour leurs fonctionnalités.

Hipmunk

Hipmunk est un site de voyage pour consommateurs en ligne qui compare les meilleurs sites de voyage pour vous trouver les meilleures offres. Les outils de ce site Web Python vous permettent de trouver les hôtels et les vols les moins chers pour votre destination.

Cliquez ici pour en savoir plus: 25 des sites Web les plus populaires en python et django , ce qui sont des sites bien connus en cours d'exécution sur Django

Simplans
la source
15

Je pense que nous pourrions aussi bien ajouter l'application Apple de l'année 2011, Instagram , à la liste qui utilise intensivement Django.

Milind
la source
12

Oui il peut. Il peut s'agir de Django avec Python ou Ruby on Rails. Il évoluera toujours.

Il existe peu de techniques différentes. Tout d'abord, la mise en cache n'est pas mise à l'échelle. Vous pouvez avoir plusieurs serveurs d'applications équilibrés avec nginx comme façade en plus des équilibreurs matériels. Pour évoluer du côté de la base de données, vous pouvez aller assez loin avec la lecture esclave dans MySQL / PostgreSQL si vous optez pour le SGBDR.

Voici quelques bons exemples de sites Web à fort trafic à Django:

  • Pownce quand ils étaient encore là.
  • Discus (gestionnaire de commentaires partagés génériques)
  • Tous les sites Web liés aux journaux: Washington Post et autres.

Vous pouvez vous sentir en sécurité.

coulix
la source
2
Dites juste ... les réseaux sociaux morts font un mauvais exemple d'évolutivité :)
ZJR
3
Je ne pense pas que la mort de Pownce soit liée à un problème d'évolutivité.
Kedare
9

Voici une liste de choses relativement importantes construites dans Django:

  1. « The Guardian enquête sur les dépenses de votre député app »

  2. Politifact.com (voici un article de blog parlant de l'expérience (positive). Le site a remporté un Pulitzer.

  3. NY Times Représentez app

  4. EveryBlock

  5. Peter Harkins, l'un des programmeurs de WaPo, répertorie toutes les choses qu'ils ont construites avec Django sur son blog

  6. C'est un peu vieux, mais quelqu'un du LA Times a donné un aperçu de la raison pour laquelle ils sont allés avec Django.

  7. Le Onion's AV Club a récemment été transféré de (je pense Drupal) à Django.

J'imagine qu'un certain nombre de ces sites obtiennent probablement bien plus de 100 000 visites par jour. Django peut certainement faire 100k hits / jour et plus. Mais YMMV pour obtenir votre site particulier en fonction de ce que vous construisez.

Il existe des options de mise en cache au niveau de Django (par exemple, la mise en cache des ensembles de requêtes et des vues dans memcached peut faire des merveilles) et au-delà (caches en amont comme Squid ). Les spécifications du serveur de base de données seront également un facteur (et généralement l'endroit où faire des folies), tout comme la façon dont vous l'avez réglé. Ne supposez pas, par exemple, que Django va configurer correctement les index. Ne présumez pas que la configuration PostgreSQL ou MySQL par défaut est la bonne.

De plus, vous avez toujours la possibilité d'avoir plusieurs serveurs d'applications exécutant Django si tel est le point lent, avec un équilibreur de charge logiciel ou matériel en face.

Enfin, proposez-vous du contenu statique sur le même serveur que Django? Utilisez-vous Apache ou quelque chose comme nginx ou lighttpd ? Pouvez-vous vous permettre d'utiliser un CDN pour du contenu statique? Ce sont des choses auxquelles penser, mais tout cela est très spéculatif. 100k hits / jour n'est pas la seule variable: combien voulez-vous dépenser? Quelle est votre expertise dans la gestion de tous ces composants? De combien de temps disposez-vous pour tout rassembler?

Mazelife
la source
9

Le promoteur des développeurs pour YouTube a parlé de la mise à l'échelle de Python à PyCon 2012 , qui est également pertinent pour la mise à l'échelle de Django.

YouTube compte plus d'un milliard d'utilisateurs et YouTube est construit sur Python.

orokusaki
la source
3
Mais YouTube n'est pas construit avec Django. Python peut être rapide, mais pas pour django.
Joshua Partogi
4
Oui, mais le fait est que, à mesure que Django grandit, il repose sur une bonne base pour la refactorisation de la vitesse et avec Google travaillant sur des projets comme Unladen Swallow, ça ira tout simplement mieux.
orokusaki
7

J'utilise Django depuis plus d'un an maintenant et je suis très impressionné par la façon dont il parvient à combiner modularité, évolutivité et rapidité de développement. Comme avec toute technologie, il est livré avec une courbe d'apprentissage. Cependant, cette courbe d'apprentissage est rendue beaucoup moins abrupte par l'excellente documentation de la communauté Django. Django a très bien géré tout ce que j'ai lancé. Il semble qu'il pourra évoluer dans le futur.

BidRodeo Penny Auctions est un site Web de taille moyenne alimenté par Django. Il s'agit d'un site Web très dynamique qui gère un bon nombre de pages vues par jour.

Krystian Cybulski
la source
6

Notez que si vous attendez 100 000 utilisateurs par jour, qui sont actifs pendant des heures à la fois (soit un maximum de 20 000 utilisateurs simultanés +), vous aurez besoin de BEAUCOUP de serveurs. SO compte environ 15 000 utilisateurs enregistrés, et la plupart d'entre eux ne sont probablement pas actifs quotidiennement. Alors que la majeure partie du trafic provient d'utilisateurs non enregistrés, je suppose que très peu d'entre eux restent sur le site plus de quelques minutes (c'est-à-dire qu'ils suivent les résultats de la recherche Google puis s'en vont).

Pour ce volume, attendez au moins 30 serveurs ... ce qui représente encore 1 000 utilisateurs simultanés plutôt lourds par serveur.

Bip Bip
la source
2
Il ressort du podcast que SO n'utilise que 3 serveurs. Mais SO est construit en utilisant C #, pas Python, donc il déchire.
S.Lott
1
Évidemment, la question sera: combien de serveurs puissants sont-ils?
mamcx
6

Quel est le "plus grand" site construit sur Django aujourd'hui? (Je mesure la taille principalement par le trafic des utilisateurs) Pinterest
disqus.com
Plus ici: https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

Django peut-il gérer 100 000 utilisateurs par jour, chacun visitant le site pendant quelques heures?
Oui, mais utilisez une architecture appropriée, la conception de la base de données, l'utilisation du cache, utilisez des équilibrages de charge et plusieurs serveurs ou nœuds

Un site comme Stack Overflow pourrait-il fonctionner sur Django?
Oui suffit de suivre la réponse mentionnée dans la 2ème question

Ranju R
la source
5

Un autre exemple est rasp.yandex.ru, service d'horaire de transport russe. Sa fréquentation répond à vos exigences.

Glader
la source
5

Si vous avez un site avec du contenu statique, alors mettre un vernis serveur devant augmentera considérablement vos performances. Même une seule boîte peut alors facilement cracher 100 Mbit / s de trafic.

Notez qu'avec un contenu dynamique, l'utilisation de quelque chose comme Varnish devient beaucoup plus délicate.

Anders Rune Jensen
la source
1
Le problème ici est que le vernis augmentera considérablement les performances de tout. Et les frameworks plus rapides seront toujours plus rapides.
ZJR
5

Mon expérience avec Django est minime mais je me souviens que dans The Django Book, ils ont un chapitre où ils interviewent des gens qui exécutent certaines des plus grandes applications Django. Voici un lien. Je suppose que cela pourrait fournir des informations.

Il dit que curse.com est l'une des plus grandes applications Django avec environ 60 à 90 millions de pages vues en un mois.

tomeedee
la source
1
les URL de curse.com se terminent maintenant par .aspx ... (ne sais pas s'ils les fabriquent)
ZJR
5

Je développe des sites à fort trafic en utilisant Django pour le diffuseur national en Irlande. Cela fonctionne bien pour nous. Développer un site performant, c'est bien plus que choisir un framework. Un cadre ne sera qu'une partie d'un système aussi solide que son maillon le plus faible. L'utilisation du dernier framework «X» ne résoudra pas vos problèmes de performances si le problème est des requêtes de base de données lentes ou un serveur ou un réseau mal configuré.

vivaneau
la source
4

Même s'il y a eu beaucoup de bonnes réponses ici, j'ai juste envie de souligner que personne n'a mis l'accent sur ..

Cela dépend de l'application

Si votre application est légère sur les écritures, comme vous lisez beaucoup plus de données de la base de données que vous n'écrivez. Ensuite, la mise à l'échelle de django devrait être assez banale, diable, elle est livrée avec une mise en cache de sortie / vue assez décente tout de suite. Utilisez-le et dites redis en tant que fournisseur de cache, placez un équilibreur de charge devant lui, faites tourner n-instances et vous devriez être capable de gérer un TRÈS grand volume de trafic.

Maintenant, si vous devez faire des milliers d'écritures complexes par seconde? Histoire différente. Django va-t-il être un mauvais choix? Eh bien, pas nécessairement, cela dépend vraiment de la façon dont vous concevez votre solution et de vos besoins.

Juste mes deux cents :-)

JustDanyul
la source
3

Découvrez ce micro agrégateur de nouvelles appelé EveryBlock .

Il est entièrement écrit en Django. En fait, ce sont eux qui ont développé le framework Django lui-même.

siddu
la source
everyblock.com lançant 503
Nishant Nawarkhede
3

Le problème n'est pas de savoir si Django peut évoluer ou non.

La bonne façon est de comprendre et de savoir quels sont les modèles de conception de réseau et les outils à mettre sous votre projet django / symfony / rails pour bien évoluer.

Certaines idées peuvent être:

  • Multiplexage.
  • Proxy inversé. Ex: Nginx, Vernis
  • Session Memcache. Ex: Redis
  • Clusterisation sur votre projet et db pour l'équilibrage de charge et la tolérance aux pannes: Ex: Docker
  • Utilisez un tiers pour stocker des actifs. Ex: Amazon S3

J'espère que ça aide un peu. Ceci est mon petit rocher à la montagne.

gmourier
la source
3

Si vous souhaitez utiliser l'Open source, il existe de nombreuses options pour vous. Mais python est le meilleur parmi eux car il possède de nombreuses bibliothèques et une communauté super géniale. Voici quelques raisons qui pourraient vous faire changer d'avis:

  • Python est très bon mais c'est un langage interprété qui le rend lent. Mais il existe de nombreux services d'accélérateur et de mise en cache qui résolvent en partie ce problème.

  • Si vous songez à un développement rapide, Ruby on Rails est le meilleur parmi tous. La devise principale de ce framework (ROR) est de donner une expérience confortable aux développeurs. Si vous comparez Ruby et Python, les deux ont presque la même syntaxe.

  • Google App Engine est un très bon service, mais il vous liera dans sa portée, vous n'aurez pas la chance d'expérimenter de nouvelles choses. Au lieu de cela, vous pouvez utiliser le cloud Digital Ocean qui ne prendra que 5 $ / mois pour sa gouttelette la plus simple. Heroku est un autre service gratuit où vous pouvez déployer votre produit.

  • Oui! Oui! Ce que vous avez entendu est tout à fait correct, mais voici quelques exemples qui utilisent d'autres technologies

    • Rails: Github, Twitter (précédemment), Shopify, Airbnb, Slideshare, Heroku etc.
    • PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp etc.

La conclusion est qu'un framework ou un langage ne fera pas tout pour vous. Une meilleure architecture, conception et stratégie vous donnera un site Web évolutif. Instagram est le plus grand exemple, cette petite équipe gère de telles données. Voici un blog sur son architecture qu'il faut lire.

pulkit
la source
Le développement de Django peut être très rapide. Django est le framework web pour les perfectionnistes avec des délais.
les
3

Je ne pense pas que le problème concerne vraiment la mise à l'échelle de Django.

Je vous suggère vraiment de regarder dans votre architecture, c'est ce qui vous aidera avec vos besoins de mise à l'échelle.Si vous vous trompez, il n'y a aucun point sur la performance de Django. Performance! = Échelle. Vous pouvez avoir un système qui a des performances incroyables mais qui ne s'adapte pas et vice versa.

Votre base de données d'application est-elle liée? Si c'est le cas, vos problèmes d'échelle sont également là. Comment prévoyez-vous d'interagir avec la base de données de Django? Que se passe-t-il lorsque votre base de données ne peut pas traiter les demandes aussi rapidement que Django les accepte? Que se passe-t-il lorsque vos données dépassent une machine physique? Vous devez expliquer comment vous prévoyez de faire face à ces circonstances.

De plus, que se passe-t-il lorsque votre trafic dépasse un serveur d'applications? la façon dont vous gérez les sessions dans ce cas peut être délicate, le plus souvent, vous aurez probablement besoin d'une architecture de partage de rien. Encore une fois, cela dépend de votre application.

Dans les langues courtes , ce n'est pas ce qui détermine l'échelle, une langue est responsable des performances (là encore, selon vos applications, différentes langues fonctionnent différemment). C'est votre conception et votre architecture qui font de la mise à l'échelle une réalité.

J'espère que cela aide, serait heureux de vous aider davantage si vous avez des questions.

Anand Davis
la source
2

Répartir les tâches uniformément, bref optimiser chaque aspect, y compris les bases de données, les fichiers, les images, les CSS, etc. et équilibrer la charge avec plusieurs autres ressources est nécessaire une fois que votre site / application commence à se développer. OU vous faites plus d'espace pour qu'il grandisse. La mise en œuvre des dernières technologies comme CDN, Cloud est incontournable avec des sites gigantesques. Le simple développement et la modification d'une application ne vous donneront pas le cent pour cent de satisfaction, d'autres composants jouent également un rôle important.

Ashwin
la source