myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Yii Как организовать структуру сложного проекта?

Всем привет! Начал проектировать сложный проект. Прошу помощи совета, чтобы в будущем не пришлось все перестраивать и ломать.

Сначала начал думать как организовать несколько профилей:
1. Профиль танцора.
2. Профиль тренера танцоров.
3. Профиль администратора студии.
4. Профиль руководителя студии.
5. Профиль судьи.
6. Профиль организатора мероприятий.

Разработка будет на Yii используя модульную структуру.

Первое, что в голову пришло - это повесить все на две Таблицы user и profile, так как различие между профилями будет не большое. В 1-4 поля. Далее сценариями Yii и Моделями Форм осуществлять работу с этими таблицами. Все это будет объединено в одном модуле user. Разделение профилей осуществляется по полю role.

Второе, что пришло в голову это использовать под каждый профиль отдельную таблицу dancer, judge, admin... Но использовать одну таблицу user где будет хранится информация с логинами и паролями. Здесь можно попробовать вынести отдельные модули на танцора, судью, админа... Однако при этом будет слабая связь с модулем user.

Третье - это полностью самодостаточные модули со своими данными авторизации.

Мне кажется, что удобнее проектировать все в одном модуле, как описано в первом случае. Однако, подумав ещё понял, что сам проект, скорее всего, будет разнесен на несколько приложений, что, скорее всего, будет иметь разные базы данных:

1. Студия танцев (функционал по работе со студией, в основном с сайтом, рейтингом. Учет будет в отдельной CRM системой)
2. Организация мероприятий (функционал по работе с мероприятиями: назначения судей, регистрация участников как из студии так и других, управление регистрацией...)
3. Приложение для работы на мероприятии (счетная)

Все данные профилей использоваться и пересекаться не только с модулями внутри приложения, но и между приложениями. Вижу в этом один способ — через api.

Но ещё хотелось бы данные авторизации: логин, пароль, токен хранить в одном месте...

Понимаю, проект сложный. Возможно придётся подключить других разработчиков Yii, но начинать буду один, возможно, после выхода Yii3. А сейчас важно заложить правильный путь и начать разрабатывать малоотвественные модули.

Если все пойдёт хорошо, то в системе будет от 100 000 человек. Но начнём с малого.

Так же планируется интеграция с действующей CRM системой имеющая уже 200 школ Россиии СНГ, которую использую сам. И одной из самых больших организаций в России. Сейчас уже есть действующая версия по работе с судьями России на базе этой организации реализованная мной.

Теперь самый непонятные для меня вопросы это: Как все связать? Как правильно выстроить? Как устраивать взаимосвязи между данными? Какую структуру использовать? В общем таких вопросом пока много.

Если не вдаваться в подробности, то структуру проекта вижу так:
1. Управление студией (админка, фронт)
- модуль пользователей
- подключаемый модуль рейтингов
- дополнительный модуль для своих нужд.

2. Организация мероприятий (админка, фронт)
- модуль пользователей
- модуль мероприятий
- модуль аттестации судей
- модуль рейтинга

3. Счетная система (админка)
По модульности не думал, скорее всего просто будет принимать данные и считать. На первом этапе возможно будет интегрирована с действующей программой.

Админка и фронт будут внедряться в сам модуль:
Controllers
Backend
Frontend
....
Module.php

Возможно, что не сможете помочь из-за большого непонимания деталей, но буду рад абсолютно любому высказыванию, наставлениями и советам по теме))

P.S. Если вопрос требует других тегов тостера или вы считаете его не правильно написанном - прошу предлагать правки вопроса. Если я что-то не понятно описал, пожалуйста, задайте свои уточняющие вопросы в комментариях.
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ответы на вопрос 2
Берете за основу структуру приложения advanced, только вместо frontend, и backend, у вас будут свои приложения для нужд проекта. То-есть получается несколько фронтенд приложений, и одно бекенд приложение + база данных на всех. Что касается производительности и 100 000 аккаунтов, то тут вам в помощь шардинг, репликация и т.д.
Если логика разделения ролей сложная, то тут без RBAC никак, и стандартное решение Yii2 наверняка с ней справится.
Ответ написан
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Всё это делается одним приложением, чтобы потом не ломать голову себе и окружающим. Ну, понятно, что админка сама собой. Но, так как они пересекаются с фронтом, то общие модули в common'е. Тут главное - допилить имеющийся RBAC под свои нужды, и не забывать его где нужно использовать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы