Очень простой, элементарный пример того, как вы бы это сделали.
Предположим, у вас есть простое приложение, предназначенное для решения конкретного бизнес-кейса. Например, вы создали приложение для обработки бронирования номеров в вашем офисе.
Чтобы "преобразовать" это приложение в сервис , вам необходимо настроить его таким образом, чтобы большинство пользовательских частей приложения были параметрическими (их можно было "шаблонизировать" - из-за отсутствия лучшего слова). ).
Вот как будет конвертирован внешний интерфейс. Вы можете создать переменные для хранения логотипа, заголовка, тизера, цветовой схемы приложения; позволяя каждому пользователю настраивать свой экземпляр.
Пока что ваше приложение может настраивать себя на внешнем интерфейсе. Он все еще использует ту же базу данных, которая была разработана на первом этапе.
Теперь встает вопрос показа только тех полей, которые относятся к конкретному пользователю. Это будет параметризация базы данных. Таким образом, вы можете добавить столбец, который идентифицирует каждую строку как принадлежащую конкретному пользователю; затем создайте представления или хранимые процедуры, которые фильтруют записи на основе зарегистрированного пользователя.
Теперь приложение можно «сдавать в аренду»; так как вы можете настроить экземпляр на основе пользователя.
Затем он становится больше - в зависимости от масштаба, типа и предполагаемой настройки вашего приложения. Вы можете решить, что ваше приложение работает лучше, когда у каждого пользователя есть собственная выделенная база данных вместо хранимой процедуры + просмотр комбинированного списка.
Вы можете решить, что для некоторых типов пользователей (или «пакетов») вам нужен выделенный экземпляр вашего приложения. Таким образом, для «премиум» или «ультра» пользователей вы хотите иметь свою собственную выделенную систему.
Если вашему приложению требуется много места для хранения - вы можете решить отдельно взимать плату за хранение.
Суть в том, что это не имеет никакого отношения к используемому языку. Это скорее проблема архитектуры и дизайна.