Доброго времени суток.
Намечается новый проект у меня, и мне нужно подумать над архитектурой. Ниже я изложу свое мнение и буду рад услышать минусы, или совсем другие реализации.
И так, мне нужно сделать что-то типа аукциона с веб интерфейсом(логин, роли, уведомления). Вся логика для аукциона уже готова и к ней будем доступатся по API(назовем ее
AUCTION API
), а сами аукциона сохраняются в ЦБД.
AUCTION API
- открытая(почти), поэтому мой сайт не буде единственный, который работает с базой аукционов(поэтому и доступ к логике только через API). На сайте должна быть регистрация, распредиление по ролях(закажчик, участник, админ), личный кабинет, поиск по аукционах, и тд.
На сайте буде своя БД, в которой будет держаться информация об юзерах, и основная информация об аукционах(полная инфо - в ЦБД).
Как будет происходить аукцион - пользователь(закажчик) создает аукцион на сайте. На бек-енде, идет запрос в
AUCTION API
на создание аукциона. Потом на участие в нем могу подать заявку другие пользователи(также запрос к API). Аукцион имеет несколько этапов: реестрация участников, вопросы, сам аукцион, жалобы, победа и другие.
Кроме всего, нужно что бы после некоторых действий от других пользователей, и API ответов, менять информацию на фронте для всех пользователей(напр. если мы на странице регистрации участника аукциона, то другие учасники, должны добавлятся на страницу для всех по мере регистрации в том же аукционе, или когда аукциона перешл в другий этап)
Думаю что все сложно, но понять можно) Перейдем к архитектуре, и что у меня нарисовалось.
В качестве бек-енда плану использовать
Django Rest Framwork
+
PostgreSQl
+
ElasticSearch
. Для фронта -
React/Vue
. А вот для комуникации к
AUCTION API
, планирую использовать
Dramatiq
(так как запросы могуть обрабатыватся около 2х сек), а для изменений на фронте(после респонсов от API или других тасок по времени) -
Django channels
.
Поскольку проэкт может быть очень большим(относительно), и это первое задание для меня в плане придумывания архитектуры, то у меня есть несколько вопросов к Вам:
- Имеет ли такая архитектура право на жизнь?
- Какие подводные камне меня могут ожидать?
- Достаточную нагрузку выдержить ли эта архитектура?
- Какие другие библитеки/фреймворки/подходи спользовать?
Имеет ли такая архитектура право на жизнь?
Заранее благодарен за помощь.
П.С. извините за плохой русский язык.