Одна из проблем заключается в том, что если кому-то удастся скомпрометировать ваше веб-приложение и получить доступ к серверу в оболочке, он сможет получить доступ к базе данных непосредственно на уровне операционной системы, что позволит ему заменить файлы данных, удалить файлы журналов, поврежденные резервные копии и скоро. Хотя это может не предоставлять больше данных вашего приложения конечному пользователю, этот уровень доступа значительно усложняет отслеживание действий злоумышленника. Получение такого уровня доступа к серверу базы данных, как правило, наносит гораздо больший ущерб, чем получение его на сервере приложений, поэтому возникает желание разделить их.
Хотя это не является проблемой для приложений J2EE, для серверов приложений, на которых выполняется нативный код, есть также проблема, заключающаяся в том, что вы часто заканчиваете тем, что устанавливаете на свой сервер приложений намного больше пакетов (таким образом увеличивая поверхность атаки), чем вы бы хотели на выделенном сервере БД - так что если в вашей организации действует универсальная политика, то это может повлиять на нее.
Другой аргумент, который необходимо рассмотреть: в чем недостаток? Предполагая, что вы работаете на виртуализированном оборудовании, тогда нет существенного увеличения стоимости, выделение ресурсов и управление сервером приложений и сервером БД не намного сложнее, чем обеспечение их принудительного применения по отдельности, разделение имеет смысл с точки зрения архитектуры, и вы находитесь в лучшем положении. масштабировать, если вам нужно сделать это в будущем.