Почему не рекомендуется размещать базу данных и веб-сервер на одном компьютере? - PullRequest
111 голосов
/ 18 марта 2009

Слушая интервью Скотта Хансельмана с командой переполнения стека ( part 1 и 2 ), он был непреклонен в том, что сервер SQL и сервер приложений должны находиться на разных компьютерах. Это просто для того, чтобы убедиться, что если один сервер скомпрометирован, обе системы не доступны? Перевешивают ли проблемы безопасности сложность двух серверов (дополнительные расходы, выделенное сетевое соединение между ними, дополнительное обслуживание и т. Д.), Особенно для небольших приложений, где ни один из компонентов не использует слишком много ЦП или памяти? Даже с двумя серверами, с одним скомпрометированным сервером, злоумышленник все же может нанести серьезный ущерб, либо удалив базу данных, либо испортив код приложения.

Почему это так важно, если производительность не является проблемой?

Ответы [ 18 ]

3 голосов
/ 18 марта 2009

Это зависит от применения и цели. Когда высокая доступность и производительность не критичны, неплохо бы не разделять БД и веб-сервер. Особенно с учетом повышения производительности - если приложение выполняет большое количество запросов к базе данных, можно устранить значительную нагрузку на сеть, сохранив все это в одной системе, сохранив время отклика низким.

2 голосов
/ 20 октября 2009

Лицензии на базы данных не являются дешевыми и часто взимаются за процессор, поэтому, отделяя ваши веб-серверы, вы можете снизить стоимость ваших лицензий на базы данных.

Например, если у вас есть 1 сервер, выполняющий как веб, так и базу данных, содержащую 8 процессоров, вам придется заплатить за лицензию на 8 процессоров. Однако, если у вас есть два сервера, каждый из которых имеет 4 ЦП, и база данных работает на одном сервере, вам нужно будет заплатить только за лицензии на 4 процессора

2 голосов
/ 19 марта 2009

Я слушал этот подкаст, и это было забавно, но аргумент безопасности не имел для меня никакого смысла. Если вы взломали сервер A и этот сервер может получить доступ к данным на сервере B, то вы сразу получите доступ к данным на сервере B.

2 голосов
/ 18 марта 2009

Я думаю, это потому, что две машины обычно нужно оптимизировать по-разному. Кроме того, я понятия не имею, мы запускаем все наши приложения с базой данных сервера на одном компьютере - если мы не общедоступны - но у нас не было проблем.

Я не могу себе представить, что слишком много людей заботятся о том, чтобы один компьютер был скомпрометирован из-за обоих, поскольку веб-приложение обычно имеет практически неограниченный доступ к как минимум данным, если не к схеме внутри базы данных.

Интересует, что могут сказать другие.

1 голос
/ 18 марта 2009

Дополнительной проблемой является то, что базы данных любят занимать всю доступную память и держать ее в резерве на случай, если она захочет ее использовать. Вы можете принудительно ограничить память, но это может значительно замедлить доступ к данным.

0 голосов
/ 20 сентября 2013

Утверждение о том, что при запуске сервера базы данных на веб-сервере можно добиться реального повышения производительности, является ошибочным аргументом.

Поскольку серверы баз данных принимают строки запросов и возвращают наборы результатов, данные, фактически передаваемые с сервера данных на веб-сервер, относительно невелики, но мощность, необходимая для обработки запроса и генерации набора результатов, относительно велика. Оптимизация производительности во время передачи данных, следовательно, оптимизация вокруг неправильной вещи.

Что касается безопасности, то наличие сервера данных в другом окне отличается от веб-сервера. Наличие такой настройки - это еще не все, и конец всей безопасности, но это шаг в правильном направлении.

Что касается масштабируемости, легко и относительно дешево добавить веб-серверы и поместить их в кластер для обработки увеличенного трафика. Не так просто и дешево добавить серверы данных и объединить их в кластеры. Кроме того, веб-серверы и серверы данных имеют разные аппаратные потребности, поэтому несколько масштабов помогают с масштабируемостью.

Если вы начинаете с малого и у вас есть только один блок, то хорошим вариантом будет использование виртуальных машин. Запуск веб-сервера и сервера данных в разных виртуальных машинах на одном хосте дает вам все преимущества отдельных боксов по цене одной большой коробки.

0 голосов
/ 11 марта 2013

Хорошо! В этом-то и дело, что безопаснее установить сервер БД на другом компьютере и приложение на веб-сервере. Затем вы подключаете свое приложение к БД с помощью веб-ссылки. Спасибо.

0 голосов
/ 19 марта 2009

Операционная система является еще одним соображением. Хотя вашей базе данных может потребоваться больший объем памяти и, следовательно, UNIX, ваш веб-сервер - или, точнее, сервер приложений, поскольку вы упоминаете только два уровня, - может быть основан на .Net и, следовательно, требует Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...