Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ideas for project structure, data model, suggestions for interacting system components, e.t.c. #9

Open
nerosketch opened this issue Feb 25, 2022 · 3 comments

Comments

@nerosketch
Copy link

Идеи по концепции, модели данных, структуре проекта. Предложения по взаимодействию компонентов системы, и.т.д.

@F0rzend
Copy link

F0rzend commented Feb 25, 2022

We decided to use English. Please change the issue

@igorek097
Copy link

in progress with data model...

@igorek097 igorek097 mentioned this issue Feb 25, 2022
@Ingco
Copy link

Ingco commented Mar 20, 2022

Abstract project architecture.

I propose this abstract project structure:

erDiagram
          TELEGRAM-API |o..o| Proxy : ""
          Proxy |o..|{ Client : ""
          Proxy |o--o| Backend : "external network"
          Proxy |o--o| TelegramBot : "external network"
          Backend }o--o| Postgresql : "internal network; self database"
          Backend }o--o| RabbitMQ : "internal network; AMQP, Message Queue"
          TelegramBot }o--o| Postgresql : "internal network; self database"
          TelegramBot }o--o| RabbitMQ : "internal network; AMQP"
          Dramatiq }o--o| RabbitMQ : "internal network; Message Queue"
          Dramatiq-periodic }o--o| RabbitMQ : "internal network; Static periodic tasks"
Loading
  • Each rectangle represents a docker container.

  • The ‘Backend’ and ‘TelegramBot’ connect to each other via RabbitMQ server (using AMQP). This allows us not to create a RestAPI for them, but to separate them into different containers.

  • The ‘Backend’ and ‘TelegramBot’ use the same database container (‘Postgresql’) but can have different databases.

  • The ‘Backend’ service can send background tasks (eg: newsletter) to the ‘Dramatic’ container.

  • The ‘Dramatic-periodic’ will perform the recurrent payment tasks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants