Для запуска приложения необходим сервер, удовлетворяющий следующим требованиям:
Для запуска приложения на сервере должна быть установлена операционная система Debian Linux версии 10 и выше или Ubuntu Linux версии 20.04 LTS и выше.
Для работы открытого API
на сервере должен быть открыт порт 80
для всех внешних подключений.
Для запуска приложения на сервере должен быть установлен Docker
и Docker Compose
последней версии. Все остальные необходимые программные средства будут установлены в виртуальную среду приложения автоматически после завершения процедуры запуска.
Docker
и Docker Compose
Для эффективного администрирования приложения рекомендуется ознакомиться с архитектурой приложения. Это позволит лучше понимать принцип работы приложения и, соответственно, позволит быстрее опознавать проблемы при их возникновении.
Перед запуском приложения необходимо получить у разработчиков следующий набор файлов:
credentials/credentials.json
- Содержит реквизиты сервисного аккаунта Google. Необходим для работы микросервиса Gtable;credentials/zulip_admin.txt
- Содержит реквизиты аккаунта администратора Zulip. Необходим для работы с API
Zulip микросервисам Zulip и Zulip bot;credentials/zulip_bot.txt
- Содержит реквизиты бота Поисковик компетенций. Необходим для работы микросервиса Zulip bot;wiki/.env
- Содержит токен для работы с API
МИЭМ Wiki. Необходим для работы микросервиса Wiki.Для запуска микросервиса Zulip bot в тестовой конфигурации (будет произведен запуск бота test_bot_240 вместо бота Поисковик компетенций) необходим файл credentials/zulip_bot_dev.txt
.
В папке каждого микросервиса обработчика хранятся текстовые файлы .env
(cabinet/.env
, wiki/.env
, zulip/.env
). Внутри каждого файла находятся два параметра – TRAINER_SCHEDULE и TRAIN_ON_START.
Первый параметр задает время в формате часы:минуты:секунды
в которое будет запущен процесс обучения модели. После завершения обучения модель автоматически обновляется. Выбор дня обучения не доступен через файлы конфигурации и выставлен разработчиками в коде.
Значения следующие:
zulip/.env
;wiki/.env
;cabinet/.env
. Внимание!
Время обучения сервисов стоит выставлять с разницей минимум 3-4 часа в целях снижения нагрузки на сервер.
Параметр TRAIN_ON_START принимает значение 0
или 1
. Если значение равно 1
, обучение будет произведено при запуске микросервиса. Это полезно использовать в случаях первого запуска или при желании выполнить обучение в текущий момент времени. Обучение по расписанию не отключается. Если значение TRAIN_ON_START равно 0
, обучение производится только по расписанию.
Для изменения значений достаточно отредактировать файл и перезапустить сервисы.
Чтобы включить сбор дополнительной статистики, необходимо задать значение параметра MORE_STATS в файле chat_bot/.env
на 1
. Для выключения - 0
.
Статистика будет собираться в директорию logs/
в файл bot_usage_stats.csv
. В данном файле сохраняется информация о каждом поисковом запросе к боту: время получения запроса, префикс почты пользователя, от которого был получен запрос, сам запрос.
Для запуска программы необходимо перейти в корневую директорию проекта. В корневой директории находятся два файла: docker-compose.yml
и docker-compose.prod.yml
.
Для запуска приложения необходимо ввести следующую команду в консоли, указав нужное имя файла в параметре <имя_конфигурационного_файла>
.
docker-compose -f <имя_конфигурационного_файла> up --build -d
Первый файл является конфигурационным файлом запуска приложения в тестовом режиме. В этом режиме извне доступны все микросервисы. Чат-бот использует конфигурацию из файла credentials/zulip_bot_dev.txt
и запускается под именем test_bot_240. Уровень логирования всех микросервисов установлен на режим DEBUG
(показываются сообщения всех уровней логирования). В данной конфигурации логи печатаются как в консоль, так и в файл в директорию logs/
. Установлена ротация файлов — максимальное количество лог-файлов равно 5, а размер каждого файла не превышает 10 миллионов байт.
Второй файл является конфигурационным файлом запуска приложения в финальном режиме. В этом режиме извне доступен только главный микросервис Competence Search, а также чат-бот. Чат-бот использует конфигурацию из файла credentials/zulip_bot.txt
и запускается под именем Поисковик компетенций. Уровень логирования всех микросервисов установлен на режим DEFAULT
. В данной конфигурации в консоль печатаются логи уровня INFO
и выше, а в файл в директории logs/
— сообщения уровня INFO
и выше. Также установлена ротация файлов — максимальное количество лог-файлов равно 5, а размер каждого файла не превышает 10 миллионов байт.
Модели обработки данных находятся в микросервисах-обработчиках Zulip (использует данные сервиса «Чат МИЭМ»), Wiki (использует данные сервиса «МИЭМ Wiki») и Cabinet (использует данные сервиса «Личный кабинет МИЭМ»). Действия, необходимые для запуска и настройки планирования запуска обучения описаны в пунктах 3.2 и 3.3.
В процессе обучения микросервисы-обработчики сохраняют файлы, необходимые для обучения в директориях zulip/data
, wiki/data
и cabinet/data
. По окончании обучения модели обработки данных формируют файл model.model
в соответствующих директориях. В случае перезапуска микросервиса-обработчика программа загрузит данный файл во время поступления первого запроса.
Загрузка модели занимает некоторое время. В это время сервис не может отвечать на запросы. Именно по этой причине первый запрос к системе после перезапуска выполняется дольше остальных – перед обработкой запроса сервис сначала загружает модель, а затем формирует ответ на запрос.
Файл model.model
формируется только во время окончания обучения. В случае, если во время обучения произошла ошибка, старая версия модели останется в файловой системе и может быть загружена.
Для перезапуска всего приложения необходимо выполнить следующую команду в корневой директории:
docker-compose restart
Для остановки приложения необходимо выполнить следующую команду в корневой директории:
docker-compose stop
Для запуска программы со сборкой контейнера (необходимо в случае первого запуска или изменений в файлах Pipfile
, Pipfile.lock
или Dockerfile
) необходимо выполнить команду:
docker-compose up --build -d
Для запуска программы без сборки контейнера (что выполняется значительно быстрее) достаточно выполнить команду:
docker-compose up -d
Все перечисленные выше команды можно применять к отдельным микросервисам, входящим в состав программы. Для этого необходимо добавить имя (или имена через пробел) в конец команд.
Список имен микросервисов:
zulip
;wiki
;cabinet
;competence_search
;gtable
;chat_bot
.