# README
Запуск:
- Убедитесь, что у вас установлен Docker. Если нет, вы можете установить его, следуя инструкциям на https://docs.docker.com/engine/install/.
- После запуска Docker выполните команду в терминале:
docker compose up
илиdocker-compose up
. Перед запуском убедитесь, что порты 80, 8080 и 5432 не заняты другими приложениями. - Затем перейдите в браузере по любой из ссылок: http://127.0.0.1, http://localhost, http://127.0.0.1:80, http://localhost:80.
- Теперь вы можете протестировать работу приложения (Добавление выражений, их вычисление через определённое время, устаноска времени выполнения каждой математической операции, проверка сохранения выражений в БД после перезапуска).
Как это всё работает:
-
При запуске приложения создаётся 3 docker-контейнера:
- Frontend, написанный на ReactJS (запускается на 80 порту);
- Server - контейнер с главным сервером-оркестратором (порт 8080) и дочерними серверами-вычислителями;
- Postgres - база данных PostgreSQL для хранения выражений, пользователей и пользовательских настроек (на порту 5432).
-
Основной сервер (папка /internal) реализует логику взаимодействия с БД и логику авторизации и регистрации (технология JWT). Общение между сервером-оркестратором и вычислителем реализовано с применением технологии gRPC (Папка /grpc). Запуск сервера находится с папке cmd/app/. Папка /sql ответственна за первичную настройку работы СУБД (Создание domain'ов, таблиц, ограничений, процедур и триггеров). В директории /pkg находятся реализация workerpool'а для сервера-вычислителя и некоторые вспомогательные функции. Файл .env содержит в себе некоторые переменные окружения (которые всегда можно поменять): кол-во горутин, запущенных на вычислителе и порт оркестратора. Весь код структурирован, содержит комментарии с пояснениями.
-
P.S. При старте приложения по умолчанию пользователь находится под дефолтным user'ом (root), который не требует авторизации / регистрации. Root тоже может иметь свои выражения и хранить их в БД. После смены пользователя (после авторизации) следует обновить страницу, чтобы увидеть актуальный список выражений этого пользователя.
По всем вопросам писать в тг: @i_a_bolotov.