Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • C competence search
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Container Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • 240 Поисковик компетенций
  • competence search
  • Wiki
  • Руководство разработчика

Руководство разработчика · Changes

Page history
Update Руководство разработчика authored May 12, 2021 by Григорий Хромов's avatar Григорий Хромов
Hide whitespace changes
Inline Side-by-side
Руководство-разработчика.md
View page @ 46798289
# 1 Архитектура сервиса
## 1.1 Описание архитектуры приложения
Архитектура приложения представляет собой набор микросервисов, общающихся через внутреннюю сеть по протоколам HTTP/REST. Каждый микросервис выполняет определенную задачу – сбор обратной связи, обработка данных одного сервиса Цифрового МИЭМа, предоставление API внешним сервисам. Схема взаимодействия микросервисов представлена на рисунке.
![image](uploads/7463a552f60651cd261868c230cba6a0/image.png)
Каждый прямоугольник на рисунке 2 представляет собой отдельный Docker контейнер. Границей приложения является пунктирная линия. Все контейнеры запускаются и управляются через Docker Compose.
За счет использования различных вариантов docker-compose.yml файлов возможно создание нескольких вариантов конфигураций для запуска приложения. В свою очередь, использование контейнерной виртуализации Docker позволяет снизить количество проблемных ситуаций при развертывании приложения на серверах, так как все приложение работает в изолированной, заранее подготовленной и настроенной виртуальной среде.
Красным прямоугольником обозначен главный контейнер – «Competence Search». Это HTTP/REST сервер проекта, распространяющий публичный REST API. Он принимает извне поисковые запросы, затем делегирует исполнение запросов микросервисам-обработчикам, собирает их ответ, обрабатывает и выдает результат поиска обратно. Данный микросервис также занимается приемом запросов на сохранение обратной связи, обработку этих запросов он делегирует микросервису «Gtable».
Фиолетовым прямоугольником обозначен микросервис «Zulip bot». Это чат-бот в корпоративном чате Zulip, который является интерфейсом для взаимодействия с сервисом для обычных пользователей. Данный микросервис получает всю необходимую информацию в процессе взаимодействия с микросервисом «Competence Search» по открытому REST API.
За счет наличия открытого API, сервис может быть использован и другими сервисами, позволяя интегрировать функционал данного приложения в другие сервисы. Данная особенность отражена на рисунке 12 в виде облака «External service» в правой части.
В нижней части рисунка располагаются три контейнера. Каждый из них представляет собой микросервис-обработчик, который обрабатывает данные из одного сервиса. Внутри этих контейнеров располагаются два процесса, работающих параллельно в одном контейнере.
Верхние процессы являются локальными HTTP/REST серверами, которые принимают запрос на поиск по данным своих сервисов от главного сервера по локальному закрытому API, а также возвращают результат. В их оперативной памяти хранится экземпляр модели обработки данных, которая производит поиск.
Нижние процессы являются программами, которые по заданному расписанию собирают данные с соответствующих сервисов, обрабатывают их, а затем обучают модель на этих данных. По завершении обучения программы отправляют запрос на соответствующий им верхний процесс, сообщая ему, что новая версия модели сохранена в общей файловой системе и может быть загружена в оперативную память. Процессы-серверы получают бинарные файл модели из общей папки внутри контейнера.
Такой подход позволяет обеспечить работу обработчиков во время их обучения – сервисы не будут переставать отвечать на запросы во время обновления, так как обновлением занимается отдельный параллельный процесс. Сервис будет недоступен только во время короткого промежутка времени (по сравнению с обучением модели) загрузки модели из файловой системы в оперативную память.
Зеленый контейнер – микросервис «Gtable». Этот микросервис является HTTP/REST сервером, принимающим данные об отзывах пользователей и записывающим их в специальную Google Таблицу.
Все контейнеры взаимодействуют друг с другом с помощью REST API. В данной архитектуре существует два типа REST API запросов:
- Открытые;
- Локальные.
Запросы открытого типа предоставляет лишь микросервис «Competence Search», так как эти запросы могут быть использованы внешними сервисами. Остальные микросервисы используют только локальные запросы, недоступные извне, так как они являются служебными и служат лишь для работы внутри самого приложения.
Описанная архитектура приложения позволяет легко добавлять новые сервисы – достаточно написать микросервис-обработчик на подобие уже написанных, а также внести новый сервис в список обработчиков в главном микросервисе «Competence Search». При необходимости также стоит добавить отображение данных нового сервиса в чат-бот.
Архитектура проекта описана на странице по [ссылке](Архитектура-проекта).
## 1.2 Описание алгоритма работы системы
Алгоритм работы системы можно описать следующей последовательностью действий:
......
Clone repository
  • Home
  • Архитектура проекта
  • Руководство администратора
  • Руководство разработчика