Я думаю, что модным ответом на это является «Сервис-ориентированная архитектура» - это действительно вариант 2.
Это крупномасштабное мероприятие с множеством захватывающих тупиков, которые нужно изучить, но в основном вместо того, чтобы думать о базах данных и таблицах, подумайте об услугах, в которых нуждаются эти 15 приложений. Некоторые могут быть общими, некоторые могут быть специфичными для одного приложения. Найдите способ представить эти службы приложениям, но помните, что вызов веб-службы может быть значительно медленнее, чем эквивалентный прямой вызов базы данных, поэтому не принимайте «сервис-ориентированную архитектуру», чтобы означать, что вам нужно внедрять веб-службы повсюду - это скорее образ мышления, чем спецификация продукта.
Репликация и синхронизация - по моему опыту - создают очень хрупкие системы с режимами сбоев, которые мешают мозгу даже думать.
Другое - ну, вы на самом деле не говорите, какую конкретно проблему вы пытаетесь решить. Если его производительность - самый дешевый способ решения проблем с производительностью - бросить аппаратное обеспечение на проблему. Если это управляемость - SOA может помочь с этим - но она также часто добавляет дополнительную инфраструктуру в смесь, которую также необходимо поддерживать. Убедитесь, что вы действительно понимаете, что определяет ваш выбор архитектуры, потому что не существует единого «лучшего» решения - все дело в компромиссах.