Я использую SQL Server 2005 и IIS6. У меня каждый на отдельных коробках (Quad cpu, 4G). Клиент хочет объединиться в одну коробку. Это корпоративное приложение с 400 пользователями. Производительность сейчас хорошая, но я сомневаюсь в том, что можно сэкономить на изменении производительности и управлении услугами. Итак, для 1) будущих функций / роста, 2) производительности, 3) модульности и прочего? Перейдите в 1 коробку или оставьте 2.
Я на 100% работаю на Linux, но думаю, что применимы некоторые общие принципы.
Если вы ожидаете масштабирования, разделение серверов даже при простом использовании программного обеспечения для виртуализации дает вам возможность легко добавлять узлы по мере необходимости и балансировать нагрузку между ними - это также обеспечивает лучшую безопасность, поскольку вы открываете только те порты, которые вам нужны.
Наличие сервера базы данных в коробке, которую я обнаружил, хорошо для дополнительных услуг, таких как почтовые серверы или какой-либо другой инструмент конфигурации, который использует внутреннюю базу данных ... эти следы относительно малы, и масштабируемость не вызывает беспокойства.
На самом деле недостаточно информации, чтобы сказать вам, в каком направлении двигаться, это действительно будет зависеть от вашей среды. Чтобы сделать правильный вызов, вам нужно собрать метрики на обоих серверах в их текущем состоянии и проанализировать, что у вас есть. В любом случае вам нужны реальные данные, чтобы доказать это. «Корпоративное приложение» на самом деле ничего не говорит о других показателях, кроме того, что «оно может быть большим». Возможно, вы сможете комбинировать, но если вам придется покупать новое оборудование с большей мощностью, вы можете выстрелить себе в ногу.
Пара мыслей (в основном с точки зрения базы данных):
Одна из теорий безопасности заключается в том, что если злоумышленник получает доступ к вашему веб-серверу, он получает доступ к серверу базы данных. Это может быть или не обязательно быть правдой, в зависимости от того, как злоумышленник получает доступ, как вы настроили безопасность на своем веб-сервере и как хранятся ваши строки подключения. Хотя, безусловно, стоит обратить на это внимание.
По умолчанию SQL потребляет столько памяти на сервере, сколько может. При размещении веб-сервера и SQL Server на одном компьютере для поиска подходящего места, где они оба работают приемлемо, потребуется немного спланировать и настроить. Это будет постоянно меняться по мере роста вашей базы данных и увеличения использования вашего приложения. Не то чтобы он все равно не будет постоянно меняться, просто иногда бывает труднее найти баланс между двумя сервисами.
У вас не будет накладных расходов на сетевые подключения от веб-сервера к серверу SQL.
Каковы предполагаемые преимущества консолидации?
Если вам нужно лучшее из обоих миров, вы можете настроить две виртуальные машины на одном хосте. Когда любой из них становится слишком большим, вы можете просто переместить его на новый хост (или, возможно, на новую выделенную машину).
В общем, я бы не советовал запускать их на одном компьютере в производственной среде; Помимо последствий для безопасности, настройка и обслуживание не так просты, поскольку обе роли всегда будут бороться за ресурсы.
Некоторым специалистам по безопасности не нравится иметь веб-сервер и сервер базы данных на одном компьютере. У нас это будет скользко, если мы установим IIS на отдельный раздел.
Я бы сказал, попробуйте это на непроизводственной копии вашей системы и посмотрите.
Любое важное приложение, которое активно поддерживается, должно иметь возможность тестирования производительности. Приобретите аппаратные коробки производственного уровня (те же спецификации, которые вы бы развернули в производственной среде сейчас - не устаревшие) и протестируйте их с помощью одной коробки и двух коробок.
Я предполагаю, что размещение базы данных на одном компьютере будет работать лучше, если приложение база данных + помещается в оперативную память - и хуже в противном случае. Фактически это означает, что размещение их на одном компьютере повышает производительность, но снижает масштабируемость. Этот компромисс между производительностью и масштабируемостью является типичным.
Но попробуйте и убедитесь. Обязательно используйте производственное оборудование и некоторое программное обеспечение для моделирования, по крайней мере, вашего производственного уровня использования.
Есть также последствия для надежности (использования одной машины). Но у вас могут быть другие резервные копии в виде теплых (ish) резервных копий, не слишком сильно влияющих на производство (в зависимости от того, какой тип репликации / кластеризации и т.