7
votes

Facteurs clés de la conception d'une application Web évolutive

Je travaille actuellement sur une application Web. Je veux savoir quels sont les facteurs clés qu'un concepteur devrait prendre soin tout en concevant une application Web évolutive?


0 commentaires

6 Réponses :


1
votes

Chaque application est différente. Vous devrez profiler votre application pour voir où vous devez concentrer vos efforts d'optimisation. Certaines applications Web peuvent nécessiter des optimisations d'accès à la base de données, tandis que d'autres ont une logique commerciale compliquée qui cause le goulot d'étranglement.

N'essayez pas d'optimiser des parties arbitraires aléatoires de votre application sans profilage d'abord. Vous pouvez finir par avoir à prendre en charge un code optimisé compliqué qui ne rend pas votre application Snappier.


0 commentaires

2
votes

avoir une bonne lecture de HighScalability.com devrait vous donner quelques idées. Je recommande fortement les articles Amazon.


1 commentaires

Je ne mettrais pas en train de mettre en œuvre aucune de ces stratégies avant leur besoin. Conception avec eux à l'esprit, mais mettez en œuvre des optimisations comme elles sont nécessaires.



5
votes

C'est une question assez vague et large et quelque chose que vous pourriez écrire des livres. Jusqu'où allez-vous le prendre? À un moment donné, la performance des jointures SQL se décompose et vous devez mettre en œuvre une stratégie de frange / partitionnement. Est-ce que le niveau que vous voulez dire?

Principes généraux sont:

  • Cache et version Tout le contenu statique (images, CSS, JavaScript);
  • mettre un tel contenu sur un autre domaine pour arrêter le trafic de biscuits inutiles;
  • gzip / dégonfler tout;
  • uniquement exécuté JavaScript requis;
  • Ne faites jamais avec JavaScript sur ce que vous pouvez faire sur le server (par exemple, des rangées de table de style avec CSS plutôt que d'utiliser des tours de fantaisie jQuery impair / pair, ce qui peut être un tueur en temps réel);
  • garde des demandes http externes au minimum. Cela signifie très peu de fichiers CSS, JavaScript et Image. Cela peut signifier mettre en œuvre une forme de la forme de la source CSS et / ou de la combinaison de fichiers CSS ou JS;
  • Utilisez la mise en cache des servsside si nécessaire mais seulement après avoir trouvé un problème. La mémoire est un compromis coûteux mais souvent efficace pour plus de performances;
  • Testez et ajustez toutes les requêtes de base de données;
  • minimiser les redirections.

4 commentaires

+1. Mais pouvez-vous expliquer ce que vous vouliez dire par "Utiliser des tours d'impair / pair de jquery ... peut être un tueur en temps réel"? Il fera sans doute que la page rendra un peu plus lente sur le côté Client mais comment est-il affectant négativement une évolutivité WebApp?


@ CHSSPLY76 Si l'application Web effectivement échelle par certaines métriques que nous pouvons voir n'a pas d'importance. Qu'est-ce que la matière est la perception de la mise à l'échelle à l'utilisateur final.


@Rex m - Bien que cela soit vrai, ce n'est pas pertinent pour le sujet à portée de main. À moins que votre page ait de nombreuses tables avec beaucoup de lignes chacune, il faut que JQuery doit les décorer est négligeable. Et si cela dispose de nombreuses tables / rangées, cela prendra probablement plus longtemps pour générer / télécharger / rendre la page avec tous les attributs supplémentaires class = "impair" , Même avec gzip et tout.


@cletus recommandant joliment ces "leçons apprises" après une année exacte? ;) +1



0
votes

aucun. Il suffit de coder l'application à l'aide de techniques de conception appropriées (séparation des préoccupations, etc.), puis lorsque l'application est effectuée ou presque terminée, vos tests de performance. Vous trouverez les vrais goulots d'étranglement alors - ils ne seront pas ce que vous auriez pu deviner au début. C'est là que votre conception adéquate du début entre en jeu - il facilite la modification de la réparation des goulots d'étranglement.


1 commentaires

@Rex m: Je suis d'accord avec toi. Mais je veux juste savoir tout en concevant quels sont les facteurs clés que je devrais prendre en charge tout en concevant l'amélioration de l'évolutivité?



0
votes

Parfois, une réponse spécifique est plus utile que des conseils génériques.

Si vous souhaitez échoué, la seule chose à cibler est la vitesse (dans le matériel et le logiciel) et des ressources (dans le matériel).

matériel, ce dernier est cher (plus de serveurs, équilibreurs de charge, etc.).

Donc, en sélectionnant soigneusement votre cadre de développement initial, vous économiserez beaucoup de temps et de ressources - à plusieurs ordres de grandeur.

Par exemple, Nginx est (beaucoup) plus rapide que Apache.

D'autres solutions sont plus rapides que Nginx (pour le contenu statique et dynamique), mais je ne pouvais pas les divulguer sans censurer sur Stackoverflow (il a été noté SPAM & Publicité malgré le fait qu'il s'agisse d'une solution gratuite).

Ce sont les limites du "partage": nous ne devons partager que des solutions "acceptables" plutôt que des solutions efficaces.

acclamations,

Pierre.


0 commentaires

1
votes

J'ai le sens des autres réponses ici qu'il existe une confusion générale entre évolutivité et performance. Haute performance signifie que la réponse est rapide. Haute évolutivité signifie que vous obtenez une réponse, peu importe combien d'autres utilisent également le site en même temps. Il y a une grande différence.

En fait, vous devez réellement sacrifier une petite performance pour obtenir une bonne évolutivité. Un schéma général d'évolutivité est distribué informatique. L'affacturage de la fonctionnalité dans des niveaux distincts de serveurs en cluster (Web, règles commerciales, base de données) est l'approche habituelle de l'évolutivité. Ce voyage aller supplémentaire ralentira un peu la page de page.

Tout le monde veut toujours se concentrer sur une forte évolutivité, mais n'oubliez pas non plus que, pour les fournisseurs de logiciels qui vendent des licences aux clients qui hébergent l'application, la mise à l'échelle peut être aussi importante que l'élargissement. Une application pouvant exécuter sur un seul serveur pour dix utilisateurs, mais peut également être configurée pour exécuter sur un cluster Web Server TEN Server, un cluster de trois serveurs et un cluster de base de données Server pour 10 000 utilisateurs seraient un système bien conçu pour l'évolutivité.


0 commentaires