152 votes

Pourquoi est-il déconseillé de disposer de la base de données et du serveur Web sur le même ordinateur?

À l'écoute Scott, Hanselman entretien avec un Débordement de Pile dans l'équipe (partie 1 et 2), il a insisté pour que le serveur SQL et le serveur d'application doit être sur des machines distinctes. Est-ce juste pour s'assurer que si un serveur est compromis, les deux systèmes ne sont pas accessibles? Faire de la sécurité l'emportent sur la complexité de deux serveurs (coût supplémentaire, réseau dédié de connexion entre les deux, plus de maintenance, etc.), surtout pour une petite application, où ni la pièce est trop grande utilisation de l'UC ou de la mémoire? Même avec deux serveurs, avec un serveur compromis, un attaquant pourrait encore faire de graves dommages, soit par la suppression de la base de données, ou de jouer avec le code de l'application.

Pourquoi serait-ce une grosse affaire, si la performance n'est pas un problème?

188voto

Mark Brackett Points 46824
  1. De sécurité. Votre serveur web vit dans une DMZ, accessible au public sur internet et de prendre douteuses en entrée d'utilisateurs anonymes. Si votre serveur web est compromis, et vous avez suivi un minimum de privilèges règles lors de la connexion à votre base de données, l'exposition maximale est ce que votre application peut faire par le biais de l'API de base de données. Si vous avez une entreprise de niveau entre les deux, vous avez un pas de plus entre l'attaquant et de vos données. Si, d'autre part, votre base de données est sur le même serveur, l'attaquant a maintenant accès à la racine de vos données et le serveur.
  2. L'évolutivité. En gardant votre serveur web apatrides vous permet de redimensionner vos serveurs web horizontalement assez bien sans effort. Il est très difficile de l'horizontale à l'échelle d'un serveur de base de données.
  3. Les performances. 2 boîtes = 2 fois le CPU, 2 fois la quantité de RAM, et 2 fois les broches pour les accès disque.

Tout cela étant dit, je peux certainement voir raisonnables cas qu'aucun de ces points vraiment d'importance.

68voto

dbr Points 66401

Cela n'a pas vraiment d' importance (vous pouvez très facilement faire fonctionner votre site avec Web / base de données sur la même machine), c'est simplement l'étape la plus simple de la mise à l'échelle.

C'est exactement ce que StackOverflow a fait - en commençant avec une seule machine exécutant IIS / SQL Server, puis lorsqu'il a commencé à être très chargé, un deuxième serveur a été acheté et le serveur SQL a été déplacé sur celle-ci.

Si les performances ne sont pas un problème, ne gaspillez pas votre argent en achetant / entretenant deux serveurs.

24voto

James Curran Points 55356

D'autre part, en se référant à un autre blogging Scott (Watermasyck, de Telligent) - ils ont constaté que la plupart des utilisateurs pourrait accélérer la vitesse de sites web (à l'aide de Telligent du Serveur de Communauté), en mettant la base de données sur la même machine que le site web. Toutefois, dans les cas où, habituellement, la db et le serveur web sont les seules applications sur la machine, et le site n'est pas de forcer la machine que beaucoup. Ensuite, l'efficacité de ne pas avoir à envoyer des données à travers le réseau, plus que le fait de l'augmentation de la souche.

17voto

Dana the Sane Points 7976

Tom est correcte sur ce point. D'autres raisons sont qu'il n'est pas rentable et qu'il y a des risques de sécurité supplémentaires.

Les serveurs web n'ont différents besoins en matériel que les serveurs de base de données. Serveurs de base de données en sortent mieux, avec beaucoup de mémoire et un disque rapide tableau tandis que les serveurs web seulement besoin de suffisamment de mémoire pour les fichiers de cache et de fréquentes DB demandes (selon votre configuration). Concernant la rentabilité, les deux serveurs ne sera pas forcément moins cher, toutefois, le rendement/coût ratio doit être supérieur étant donné que vous n'avez pas à différentes applications de la compétition pour les ressources. Pour cette raison, vous allez probablement avoir à dépenser beaucoup plus pour un serveur qui s'adresse à la fois et offre des performances équivalentes à 2 spécialisés.

Le problème de sécurité est que si la machine est compromise, à la fois de serveur et de base de données sont vulnérables. Avec deux serveurs, vous avez une marge de manœuvre que le 2ème serveur sera toujours sûr (au moins pour un temps).

Aussi, il y a quelques évolutivité des avantages puisque vous ne pouvez avoir à maintenir un peu de serveurs de bases de données qui sont utilisés par un tas de différentes applications web. De cette façon, vous avez moins de travail à faire application de mises à jour ou correctifs et de faire le réglage des performances. Je crois qu'il y a des outils de gestion de serveur pour rendre ces tâches plus facile si (dans le cas de l'ordinateur).

16voto

Tom Ritter Points 44352

Je pense que le facteur important serait la performance. Le code serveur / application Web et SQL Server mettraient en cache les données demandées couramment en mémoire et vous réduisez les performances de votre cache en les exécutant dans le même espace mémoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X