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