Разделения сайта на несколько частей oAuth + API + Frontend, сложно ли и стоит ли?
Пришла идея для проекта (сайта) и думаю стоит ли разделять сайт таким образом и не увеличу ли я себе геморроя?
Суть такова:
1. Есть основной сайт. Он находится на домене site.ru. Это чистый фронтенд.
2. Есть API. Он находится на api.site.ru. Это собственно API.
3. Нужно добавить oAuth сервер для авторизаций сторонним сайтам. Как входящие в группу основного, так и сторонник. Планируется домен: oauth.site.ru.
База данных планируется одна. Или стоит сделать несколько? А если несколько, как правильно будет сделать синхронизацию между всеми базами?
Если с первыми двумя пунктами всё понятно и целесообразно, то на счёт 3 пункта я сомневаюсь (опыта мало). Или не париться и на домен api.site.ru добавить oauth сервер (Laravel + Laravel Passport)? Как вы считаете?
Если ваш oauth будет отдельным сервисом, а api будет его использовать отдельно - имеет смысл отделить бд. Но в целом сложно ответить. Многое зависит от способа взаимодействия ваших сервисов.
Почитайте Создание микросервисов Сэма Ньюмена, особенно про связность и зацепление.
В дополнение хочу пояснить чего хочу добиться:
Я хочу, что бы главный домен (site.ru) работал через API (api.site.ru). Будут ещё проекты, но уже на других доменах, возможно даже не мои.
Я хочу что бы они могли авторизоваться по тем данным, что есть на site.ru. Тем самым имели общую базу данных. Для этого думаю создать oauth сервер на домене oauth.site.ru.
На других же сайтах будет минимальным взаимодействие с api.site.ru. И другие сайты (кроме *.site.ru) будут иметь собственную бд.
При этом site.ru будет большим, можно сказать сайт-портал.
Я хочу что бы они могли авторизоваться по тем данным, что есть на site.ru. Тем самым имели общую базу данных. Для этого думаю создать oauth сервер на домене oauth.site.ru.
какой профит вы хотите получить за счет разделения доменов api и основного?
Я хочу что бы они могли авторизоваться по тем данным, что есть на site.ru. Тем самым имели общую базу данных. Для этого думаю создать oauth сервер на домене oauth.site.ru.
Многое зависит от того как будет работать ваш oauth, если это будет чисто набор эндпоинтов и грубо говоря - нераздельная часть от основного сайта и api - юзайте общую БД.
Если это будет именно отдельный сервис - юзайте api oauth с отдельной БД.
Я не просто так вам книгу сбросил. Задача разделения сервисов мягко говоря сложная, онднозначно правильного решения просто нет.
При этом site.ru будет большим, можно сказать сайт-портал.
Это мало о чем говорит)) Можно несколько лет командой строить сложную веб систему и которой фронта будет очень мало.
Основной домен - это чистый frontend (nuxtjs). api - backend.
нет смысла, от слова совсем. Для отдачи SPA вам с головой достаточно одного роута. Так же не надо будет париться по поводу кроссдоменного аякса между главным доменом и api, а так же с куками и сессиями. Возникнет проблема с коллизиями между бэковыми и фронтовыми роутами, но решается простым префиксом api для бэка.