Архитектура приложения - 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.