2008-10-23 8 views
4

évolutivité/performance/sécurité La plupart des articles de design et des livres sont axés sur l'obtention à couplage lâche et un logiciel très cohérent ..Design for etc

Une ligne directrice générale de ne pas concevoir pour la performance, mais il suffit d'écrire du code qui est efficace. La performance peut ensuite être fixée à des points chauds. Je parle en termes d'applications de domaine riche.

Qu'en est-il de l'évolutivité et de la sécurité? Quand commencez-vous à considérer ces critères? Par exemple: si je dois commencer à servir des millions d'utilisateurs à partir de disons quelques centaines ... Quand dois-je mettre mon site web utilisé en interne sur internet? etc etc ..

Répondre

2

La sécurité devrait toujours être une considération depuis le début. S'attaquer à la sécurité après les faits est un moyen sûr de s'assurer que votre application n'aura jamais la sécurité nécessaire. L'évolutivité est quelque chose qui peut être ajouté plus tard sans trop perturber la base de code, en supposant que vous ayez au moins pensé à la mise à l'échelle lorsque vous étiez en train de coder (aucune implémentation nécessaire).

1

Sécurité Je pense que c'est quelque chose qui doit être considéré dès le début, car il peut être plus difficile de retravailler des éléments liés à la sécurité. Je crois que jusqu'à un certain point, l'évolutivité est comme la performance où des ajustements peuvent être faits plus tard si vous devez le faire tant que vous vous concentrez sur l'écriture d'un code efficace globalement. Mais ce n'est pas une règle absolue. Je dirais qu'en fonction de votre langage de choix, certains éléments d'évolutivité doivent être pris en compte dès le début, tels que l'utilisation de Session dans ASP.NET ...

0
  1. La sécurité doit être abordée dès le début. Il est beaucoup plus facile d'optimiser les performances que d'essayer de corriger un trou de sécurité.
  2. L'évolutivité peut être prise en compte dans le processus de conception sur quels serveurs, db, le logiciel à utiliser.
  3. Un code efficace a tendance à être de haute perfor- mance de toute façon, ce qui n'est pas un problème aussi important.
0

L'évolutivité est quelque chose qui ne peut pas être atteint après le développement de l'application entière. Si vous devez répondre aux critères de millions de résultats, vous devez réfléchir avant d'écrire une seule ligne de code.

Il existe un concept de mise à l'échelle verticalement et de mise à l'échelle horizontalement. La mise à l'échelle verticale peut être réalisée en injectant plus de mémoire et plus de puissance de traitement sur un problème. Mais il finira par s'épuiser. Vous devriez toujours planifier pour la mise à l'échelle horizontalement.

Échelle d'une manière que vous pouvez diviser votre entreprise par haute utilisation, usage moyen et faible utilisation. Vous pouvez ensuite mettre des flux de travail à haute utilisation dans différents serveurs d'application/web. Votre flux de travail à haute utilisation peut toucher différentes bases de données. Pouvez-vous casser la charge de la base de données et répartir la charge sur différentes boîtes? Si oui, alors étalez-le au niveau de la base de données aussi. Voici une merveilleuse description de l'architecture eBay décrivant la façon dont ils ont réussi à l'échelle horizontale:

http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf

0

Performance et Evolutivité ne sont jamais un problème ... jusqu'à ce qu'ils soient un problème. Votre approche générale consistant à écrire un code de bonne qualité et à traiter ensuite les points chauds est un bon plan tant que vous continuez à tester la performance et à la mesurer tout au long du développement.Lorsque vous travaillez avec de grands projets, il s'agit toujours des caractéristiques, des fonctionnalités, des fonctionnalités, mais sans les mesures régulières des performances, vous ne savez pas si l'ajout d'une fonctionnalité spécifique pose problème. Revenir pour trouver le problème 3 ans plus tard est une tâche beaucoup plus décourageante. Donc, je dirais ne vous inquiétez pas de la performance, mais commencez à la mesurer dans le cadre de vos constructions quotidiennes/hebdomadaires/d'itération. Il vous fournira une grande perspicacité et confiance dans votre code.

0

Sécurité depuis le début, difficile à changer plus tard.

En ce qui concerne les performances et l'évolutivité, il y a une interview avec les créateurs de stackoverflow sur Hanselminutes: http://www.hanselminutes.com/default.aspx?showID=152

J'aime l'approche pragmatique qu'ils ont avec ce site, parfois même fait grincer des dents me. Par exemple, ils ont une base de données et un serveur Web sur la même machine. Oh, et le serveur de dev, aussi. Mais ça fonctionne. Et la mise en place d'un autre serveur DB séparé est assez facile une fois qu'il y a trop de trafic pour une machine.

1

La sécurité est un impératif pour tous les projets internes, sauf les plus simples. En ce qui concerne l'évolutivité/performance/disponibilité, cela dépend vraiment du service que vous essayez de fournir. La plupart des sites (à peu près tous les sites sauf les véritables moteurs de recherche à l'échelle web) ne sont pas un problème majeur et peuvent être résolus simplement en plaçant quelques équilibreurs de charge devant les serveurs Webapp avec la mise en cache (par ex. , en utilisant memcached, etc.) et en adoucissant les données (tables de partition par identifiant d'utilisateur etc.). Le seul casse-tête vient généralement de l'exigence de haute disponibilité des données, car la plupart des solutions de stockage pour la réplication de base de données et le basculement ne fonctionnent pas très bien. Si vous voulez construire un moteur de recherche pour l'ensemble du Web, vous devez penser à la performance, à l'évolutivité dès le premier jour, ou vous perdriez votre temps et vos ressources.