Skip to content

🖥️ API шлюз для инфраструктуры ILPS

License

Notifications You must be signed in to change notification settings

FEFU-ILPS/api-gateway

Repository files navigation

BACKEND-API-GATEWAY


Оглавление

  1. Назначение
  2. Функциональность
  3. Технологии
  4. Конфигурация
  5. Локальная разработка
  6. Развертывание
  7. Лицензия

Назначение

Данный сервис выступает центральным узлом для всего 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

Сервис поддерживает отправку логов в Graylog, если эта функция включена при помощи специальной переменной среды.

Переменная Значимость Описание Тип данных Стандартное значение
GATEWAY_GRAYLOG_ENABLE Опционально Флаг отправки логов в Graylog. BOOL False
GATEWAY_GRAYLOG_HOST Опционально Адрес развернутого Graylog. Может быть заглушкой. STRING localhost
GATEWAY_GRAYLOG_PORT Опционально Порт развернутого Graylog. Может быть заглушкой. STRING 12201

Локальная разработка

Для удобства локальной разработки API-Gateway следуйте этим рекомендациям.

Установка зависимостей

Перед началом работы убедитесь, что все зависимости установлены. Или установите, если предыдущее условие ложно.
При разработке сервиса используется менеджер зависимостей Poetry.

pip install poetry
poetry 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).

About

🖥️ API шлюз для инфраструктуры ILPS

Topics

Resources

License

Stars

Watchers

Forks