Я разработал ряд ведомственных клиент-серверных приложений, и теперь я готов начать работу над перемещением одного из этих приложений в модель SaaS. Я сделал некоторые базовые веб-разработки, но я новичок, когда речь заходит о архитектурах SaaS.
Один из первых вопросов, который приходит на ум, когда я пытаюсь спроектировать архитектуру, - это вопрос о едином или множественном аренде. Все плюсы и минусы каждого из них существенно различаются в зависимости от типа требуемого приложения и масштаба, поэтому я хотел бы описать потребности в приложении и масштабе ниже, и надеюсь, что другие могут прокомментировать, как я должен начать работу с архитектурой.
В настоящее время клиент-серверное приложение состоит из базы данных Firebird и приложения Windows. База данных содержит около 20 таблиц, содержащих несколько тысяч записей в 4 первичных таблицах, и несколько сотен записей в различных справочниках и связанных таблицах. Хотя количество записей невелико, размер может стать большим, так как база данных может содержать большие BLOBS. Каждый клиент настраивает свою собственную базу данных и имеет несколько пользователей в связанной с ней организации. Когда я обновляю схему db, открывается новое приложение Windows и проверяет схему db, а затем при необходимости применяет обновления.
Для приложения SaaS я проектирую для 100 (не 1000 или миллионов) новых клиентов в год. Моя первая мысль заключалась в том, чтобы пойти с моделью с несколькими арендаторами, чтобы упростить обновление (закрытие применяет обновления к одной базе данных, а затем запускает). С другой стороны, одна модель аренды будет предоставлять средства для одновременного обновления групп клиентов и распространения риска повреждения данных - то есть, если что-то пойдет не так с базой данных, это повлияет на одного клиента, а не на всех клиентов. С этой идеей я думал о наличии единого веб-интерфейса, который подключался бы к одной базе данных клиентов при входе в систему. Таким образом, когда новый клиент создает учетную запись, будет создана новая база данных (каждый клиент будет иметь свой собственный db с несколькими пользователями по мере необходимости для клиента).
В этой модели для обновления db потребуется либо процесс, чтобы пройти через каждый db для применения изменений схемы, либо триггер при входе в систему, чтобы инициировать обновление схемы, аналогичное используемой в настоящее время модели клиент-сервер.
Может ли кто-нибудь указать мне информацию для аналогичных приложений, которые были перенесены с клиент-сервера на SaaS? Или предоставить какие-либо указатели для рассмотрения? В основном я ищу примеры архитектуры для приема ведомственного приложения и предоставления его в качестве сайта самообслуживания для нескольких клиентов. Спасибо за любые предложения, ресурсы и т.д.