Categorygithub.com/Ivan-Bolotov/golang-calculating-project
module
0.0.0-20240425220724-4d8305b3ea75
Repository: https://github.com/ivan-bolotov/golang-calculating-project.git
Documentation: pkg.go.dev

# 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.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author