Я пытаюсь создать веб-решение SaaS, и я ударил по дороге, где я не уверен, что я использую несколько арендаторов или несколько экземпляров. Я попытаюсь описать то, что я пытаюсь достичь, и каждый подход к преимуществам и недостаткам (мое мнение, согласно тому, что я читал). Пожалуйста, включите ваши предложения в случае, если я пропустил что-либо одним подходом к другому.Многоквартирный дом или несколько экземпляров?
Приложение, которое я пытаюсь создать, является, как я уже упоминал, решением SaaS, где компании могут создавать свои учетные записи, а у каждой учетной записи/компании есть собственные пользователи, клиенты, продукты, услуги ... и т. Д. Каждый пользователь; который является сотрудником компании; связанные с одной учетной записью/компанией, будут иметь доступ только к своим клиентам, продуктам и услугам компании. Компании могут иметь неограниченное количество клиентов, продуктов и услуг, поэтому каждая компания должна иметь собственный центр обработки данных.
Для этого я решил создать общую базу данных (сохранение всех учетных данных пользователей для целей входа) и общую схему общих баз данных (база данных для каждой учетной записи/компании). В основном, Многоквартирный дом.
Затем кто-то предложил использовать Multi Instance, где каждая компания будет иметь свой экземпляр приложения (то есть код, библиотеки, базы данных, фреймворки ... и т. Д.), Полностью отделенные от других компаний. Это звучит лучше, поскольку мне не нужно заботиться о дополнительном слое, где мне нужно убедиться, что пользователи каждого арендатора имеют доступ только к данным своей компании. Я думаю, что хорошо упомянуть, что я в зависимости от для достижения такого подхода (я никогда не использовал его раньше), но я думаю, что ему не хватает функций (подробнее об этом позже) мне понадобится в будущем (по крайней мере Я не нашел их с небольшим поиском).
Однако каждый подход имеет свои плюсы и минусы, поэтому я не мог принять решение, с каким подходом идти. Вот список, но голый со мной, поскольку мне не хватает знаний в них обоих, поэтому может быть что-то, что я не знаю, или решение проблемы, которую я не нашел в Интернете: [Каждый подход упорядоченный список которых я следовал один за другим сравнения]
Мульти Tenancy:
- Shared хост/аппаратных средств, общий код, и нескольких баз данных.
- Это проще, чтобы расширить функциональность кода и исправить ошибки (общий код).
- Это сложнее, чтобы расширить аппаратное обеспечение (может использовать облачный сервис) или переместить базу данных отдельного арендатора в другую систему без внесения изменений в код.
- Самое главное, как я уже упоминал ранее, мне нужно добавить дополнительный уровень в систему, чтобы убедиться, что пользователь действительно принадлежит его/ее компании и не имеет доступа к информации другой компании.
нескольких экземпляров:
- Shared или неразделенная хост/аппаратных средств, код каждого экземпляра и базы данных в экземпляре.
- Это сложнее, чтобы расширить функциональность или исправить ошибки (я не уверен, есть ли способ сделать это в Docker, где вы можете добавить функциональность/функцию в один экземпляр или контейнер Docker и развернуть его другим пользователям).
- Это проще, чтобы переместить весь экземпляр на другой хост/оборудование.
- В качестве экземпляра мне не нужно заботиться об этом слое, так как каждый экземпляр будет иметь свою собственную базу данных.
Все преимущества и недостатки являются избыточными в случае, если я хочу сделать что-либо вручную (как создание экземпляра для каждого арендатора вручную), и именно поэтому я сомневаюсь, что решение Docker, если не способ решить, что , что, возможно, является основной причиной вопроса. Я был бы признателен, если бы вы ответили на вопрос со ссылками на решения и почему, по вашему мнению, этот подход лучше, чем другой.
В случае, если это поможет (может быть?), Мы используем Laravel в качестве основной структуры для back-end (все RESTfully).
Спасибо. Я отвечу на ваши вопросы в начале. Вначале будут два клиента (компании), поэтому два экземпляра. По второму вопросу, просто еще один SaaS, это может быть успех или неудача, однако, по крайней мере, будут два клиента. Понятно, что все зависит от варианта использования, но модель зрелости, на которую вы ссылались, рассматривает решение с несколькими экземплярами как более низкий уровень (уровень 1) и другое решение для нескольких арендаторов (уровень 2) как более высокий уровень, но я не вижу этого. Он также ничего не упоминал о переходе от уровня к другому ... – Anas