Данный сервис выступает центральным узлом для всего backend'а инфраструктуры ILPS. Его задача - сбор поступающих на него запросов от клиенских приложений и последующая маршрутизация запросов на микросервисы.
Все запросы, поступающие на API-Gateway, дублируются в целевые микросервисы. Это означает, что функциональность микросервисов полностью отражена в API-Gateway.
- Маршрутизация запросов для работы с текстами.
- Маршрутизация запросов на обработку аудио.
- Маршрутизация запросов, связанных с аутентификацией.
- Маршрутизация запросов, связанных с получением обратной связи.
- Маршрутизация запросов, связанных с управление профилем пользователя.
- Язык программирования: Python
- Фреймворк: FastAPI
- Протоколы: HTTP
Микросервис настраивается с помощью переменных окружения в конфигурационном файле .env. По умолчанию .env не содержится в репозитории, данный файл необходимо создать самому:
touch .envЕсли вы используете VSCode, не забудьте перезагрузить окно проекта, чтобы применить изменения в .env к вашему окружению.
Или используйте следующую команду:
export $(cat .env)
Ниже приведена таблица, содержащая описание основных параметров, которые необходимо настроить для работы сервиса.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| GATEWAY_DEBUG_MODE | Опционально | Флаг запуска микросервиса в режиме отладки. | BOOL | True |
| GATEWAY_SERVICE_NAME | Опционально | Имя микросервиса. Рекомендуется вообще не трогать. | STRING | ilps-service-texts |
Так как API-Gateway выступает центральным узлом, на котором завязаны все сервисы инфраструктуры ILPS, необходимо указать, куда нужно обращаться (на какой микросервис) при получении запроса. Для каждого сервиса конфигурируется отдельная группа настроек по следующему принципу:
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| GATEWAY_SERVICE_{service_prefix}_HOST | Обязательно | Адрес развернутого сервиса. | STRING | |
| GATEWAY_SERVICE_{service_prefix}_PORT | Обязательно | Порт развернутого сервиса. | INTEGER | |
| GATEWAY_SERVICE_{service_prefix}_PROTOCOL | Опционально | Протокол для обращения к сервису. | STRING | http |
Где {service_prefix} - это шаблон, вместо котого необходимо вставить префикс сервиса из числа доступных:
AUTH- Сервис аутентификации.TEXTS- Сервис управления обучающими текстами.MANAGE- Сервис управления задачами обработки аудио.
Сервис поддерживает отправку логов в Graylog, если эта функция включена при помощи специальной переменной среды.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| GATEWAY_GRAYLOG_ENABLE | Опционально | Флаг отправки логов в Graylog. | BOOL | False |
| GATEWAY_GRAYLOG_HOST | Опционально | Адрес развернутого Graylog. Может быть заглушкой. | STRING | localhost |
| GATEWAY_GRAYLOG_PORT | Опционально | Порт развернутого Graylog. Может быть заглушкой. | STRING | 12201 |
Для удобства локальной разработки API-Gateway следуйте этим рекомендациям.
Перед началом работы убедитесь, что все зависимости установлены. Или установите, если предыдущее условие ложно.
При разработке сервиса используется менеджер зависимостей Poetry.
pip install poetrypoetry install --no-rootДалее выберете виртуальную среду Poetry как основную для проекта.
Создайте файл .env и сконфигурируйте переменные огружения, согласно главе конфигурация.
В контексте локальной разработки необходимо задать только обязательные переменные среды. Опциональную переменную GATEWAY_DEBUG_MODE рекомендуется перевести в значение True.
Для развертывания API-Gateway в production-среде следуйте инструкциям, описанным в этом репозитории.
API-Gateway, как и все сопутствующие ему сервисы в инфраструктуре ILPS будут развернут автоматически посредством docker-compose.
Процессы установки зависимостей и применения миграций автоматизированны при сборке Docker контейнера.
Этот проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).