Как правильно вынести методы и классы проекта в отдельный API?

Есть проект, который пишется на скелете: https://github.com/daveh/php-mvc. Коротко опишу работу:

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

При загрузке страница пользователь посылает AJAX-запросы (около 3-4), получает данные с сайта (все запросы идут на адрес типа: /get/currency/price) и по полученным данным отрисовываются графики, бары и тд.

Такая логика работы используется на страницах с валютами, помимо этих страниц есть страница аккаунта (которая сразу рендерится сервером и отдается клиенту) и статичные страницы (также рендерятся сервером).

У меня возникло желание прийти к какому-то порядку в проекте, поэтому я хочу перенести большинство методов для работы с валютами в отдельный API, на который будет присылать запросы клиент. Но так как база одна (в ней данные по валютам, данные пользователь и тд, как сказано выше), возникли следующие вопросы:

  1. Является ли плохой практикой организовывать работу api и работу сайта с одной и той же базой? Или лучше вынести данные по валютам в отдельную базу и работать с ней только посредством api, а данные пользователей и тд - в базу, с которой работает сам сайт?
  2. Если в будущем потребуется брать данные по валютам при рендере страницы сервером, как быть? Получать данные с api или копировать метод из апи в ядро сайта, чтобы получать данные сразу (возможно логика работы и нагрузка будут идентичными в этом случае, но это недостаток теории), это если в случае использования одной базы для api и сайта?
  3. Что бы вы посоветовали почитать, дабы более углубленно разобраться в этом вопросе (и в вопросах этой области), скорее всего это вопросы из области проектирования, ибо учу все это сам и очень не хватает теоретических знаний?
  • Вопрос задан
  • 293 просмотра
Решения вопроса 1
@LiguidCool
Является ли плохой практикой организовывать работу api и работу сайта с одной и той же базой? Или лучше вынести данные по валютам в отдельную базу и работать с ней только посредством api, а данные пользователей и тд - в базу, с которой работает сам сайт?

Нет смысла разделять БД, да и зачем? Это актуально только для микросервисов.

Если в будущем потребуется брать данные по валютам при рендере страницы сервером, как быть? Получать данные с api или копировать метод из апи в ядро сайта, чтобы получать данные сразу (возможно логика работы и нагрузка будут идентичными в этом случае, но это недостаток теории), это если в случае использования одной базы для api и сайта?

Вариантов решений масса, но самый простой - делать универсальные MVC модули и контрполлеры, которые бы поддерживали отдачу как по API, так и просто рендер.

Что бы вы посоветовали почитать, дабы более углубленно разобраться в этом вопросе (и в вопросах этой области), скорее всего это вопросы из области проектирования, ибо учу все это сам и очень не хватает теоретических знаний?

Про MVC и HMVC в частности.
Ну и реализация на примерах, например Laravel.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dmitriylanets
@dmitriylanets
веб-разработчик
Рекомендую посмотреть в сторону фракталов от лиги league fractal и реализовать слой транспортировки данных. Для работы на стороне сервера репозитории с объектами и коллекциями.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽