Я намагаюся створити веб-рішення SaaS, і я потрапив на дорогу, де я не впевнений, що я буду використовувати багаторічну оренду чи багатопримірник. Я спробую описати, чого я намагаюся досягти, і кожен підхід має переваги та недоліки (моя думка, відповідно до прочитаного). Будь ласка, додайте свої пропозиції, якщо я пропустив щось в одному підході над іншим.
Як я вже згадував, додаток, який я намагаюся створити, - це рішення SaaS, в якому компанії можуть створювати свої рахунки, і кожен рахунок / компанія має своїх користувачів, клієнтів, продуктів, послуг ... тощо. Кожен користувач; хто є працівником компанії; пов'язані з одним обліковим записом / компанією матимуть доступ лише до своїх клієнтів, продуктів та послуг своєї компанії. Компанії можуть мати необмежену кількість клієнтів, продуктів і послуг, тому кожна компанія повинна мати власний центр обробки даних.
Для цього я вирішив створити спільну базу даних (збереження всіх облікових даних користувачів для цілей входу) та кілька спільних схем баз даних (база даних на акаунт / компанію). В основному, Multi-оренду .
Тоді хтось запропонував замість цього використовувати Multi Instance , де кожна компанія матиме власний екземпляр програми (тобто код, бібліотеки, бази даних, фреймворки тощо), повністю відокремлені від інших компаній. Це звучить краще, оскільки мені не потрібно піклуватися про додатковий рівень, де мені потрібно переконатися, що користувачі кожного орендаря мають доступ лише до даних своєї компанії. Я думаю, що добре згадати, що я залежу від Докера, щоб досягти цього підходу (я його ніколи раніше не використовував), але я думаю, у нього відсутні функції (докладніше про ці пізніші), які мені знадобляться в майбутньому (принаймні, я не не знайду їх з невеликим пошуком).
Однак кожен підхід має плюси і мінуси, тому я не міг прийняти рішення, з яким підходом дійти. Ось список, але голий зі мною, оскільки мені не вистачає знань щодо них обох, тож може бути щось, про що я не знаю, або рішення проблеми, про яку я не знайшов в Інтернеті: [Кожен підхід має упорядкований список, за яким я послідував по одному порівнянню]
Багаторічна оренда :
- Спільний хост / апаратне забезпечення, спільний код та багатозахисна база даних.
- Це простіше , щоб розширити функціональні можливості коду і виправлення помилок (загальний код).
- Це складніше розширити обладнання (можна використовувати хмарний сервіс), або перемістити базу даних індивідуального орендаря на іншу систему , не роблячи змін в коді.
- Найголовніше, як я вже згадував раніше, мені потрібно додати додатковий шар у систему, щоб переконатися, що користувач насправді належить його компанії та не має доступу до інформації іншої компанії.
Мультиекземпляр :
- Спільний або незаповнений хост / обладнання, код на примірник та базу даних на примірник.
- Це важче , щоб розширити функціональні можливості або виправлення помилок (я не впевнений , якщо є спосіб зробити це в Докер , де ви можете додати функціональність / функцію одного примірника або Докер контейнер, і розгорнути його на інші).
- Це простіше , щоб перемістити весь екземпляр на інший хост / апаратне забезпечення.
- Як приклад, мені не потрібно піклуватися про цей шар, оскільки кожен екземпляр матиме власну базу даних.
Усі переваги та недоліки є зайвими, якщо я хочу зробити що-небудь вручну (як створення екземпляра для кожного орендаря вручну), і тому я сумніваюся в рішенні Докера, якщо немає способу вирішити це, що, можливо, є головним причина питання. Буду вдячний, якщо ви відповісте на питання із посиланням на рішення, і чому ви вважаєте, що такий підхід кращий за інший.
У випадку, якщо це допоможе (можливо?), Ми використовуємо Laravel як основний каркас для бек-енду (все RESTfully).