Архитектура приложения - profcomff/.github GitHub Wiki

Все сервисы

Системное

Нужны для работы всего приложения. Подняты, в отличие от всех остальных сервисов, в единственном экземпляре, общем для прода и теста.

  • Proxy (Caddy) – Необходим для общения сервера по HTTP с внешним миром. Позволяет держать на одном сервере несколько сервисов и создавать безопасные HTTPS соединения
  • Database (Postgres) – Используется для хранения всех данных
  • Event Queue (Kafka) – Используется для передачи данных/событий между сервисами

Твой ФФ!

  • Webapp UI – Приложение, которое видят пользователи, включая расписание, меню, админки
  • Services API – Программный интерфейс для работы списка приложений (меню) в приложении
  • Timetable API – Программный интерфейс для работы календаря-расписания
  • Rating API (не реализован) – Программный интерфейс для работы рейтинга преподавателей и отзывов (дубинушка)
  • Управление пользователями
    • Auth API – Программный интерфейс для проверки личности (аутентификации) и доступов (авторизации) пользователя
    • Userdata API – Программный интерфейс для управления данными о пользователях
    • Achievement API – Программный интерфейс уплавления достижениями пользователей
  • Marketing API – Программный интерфейс для. Так же используется для хранения логов терминала принтера

Бесплатный принтер

  • Print UI – Приложение принтера, которое видят пользователи
  • Print TG Bot – Бот принтера для телеграм
  • Print VK Bot – Бот принтера для ВК
  • Print API – Программный интерфейс для принятия заданий на печать и отправки файлов на терминалы
  • Converter API (не введен в эксплуатацию) – Программный интерфейс для конвертации форматов (например, DOCX в PDF) для принтера
  • Print Winapp – Приложение на ПК для получения по коду данных из API и отправки на печать

Сбор и обработка данных

  • DWH – комплекс для сбора данных из различных источников и из обработки
    • DWH Airflow – настройки для сборки своей версии приложения Airflow
    • DWH Definitions – описания объектов БД
    • DWH Pipelines – сами программы для обработки данных

Другие сервисы

  • Social API – сервис для получения событий из различных сервисов (соцсетей VK, Telegram, GitHub), обработки и реакции на них
  • Issue Viribus TgBot – бот для создания задач на доске из телеграмма
  • CI/CD API (ограниченно введен в эксплуатацию) – программный интерфейс для запуска приложений по запросу от GitHub. Используется только для DEV среды Webapp UI. Требует доработки.
  • Pinger API (не введен в эксплуатацию) – приложение для проверки, что наши сервисы работают, и отправки уведомлений в случае, если нет. Требует доработки.

Связи

HTTPS

По HTTP у нас ходят в интернет почти все сервисы, за исключение ботов, созданных @Annndruha, и винаппа не стоящего на нашем сервере

Есть внутренняя связь по HTTP между Auth API и остальными API (питон программами) с использованием Auth Lib. Это единственная внутренняя зависимость между сервисами.

БД

Базу данных используют все сервисы, кроме:

  • Issue Viribus Bot – не требует БД
  • UI и Print Winapp – находятся на стороне пользователя, не требуют БД
  • CI/CD API и Pinger API – находятся на сторонних серверах и имеют свои локальные БД

Очередь событий

Позволяет асинхронно передавать данные между сервисами. Мы передаем данные в формате JSON, схемы данных лежат в event-schema. Сейчас данные передаются только между Auth API и Userdata API.