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