Skip to content
/ pass-ru Public

IONDV. Pass-ru - фронт-офис демонстрационного приложения организации пропусков и их проверки, с полным описанием подготовки приложений для высокой (пиковой нагрузки)

License

Notifications You must be signed in to change notification settings

iondv/pass-ru

Repository files navigation

IONDV. Pass-ru

IONDV. Pass-ru - демонстрационное приложение организации пропусков и их проверки для различных мероприятий (в том числе карантинных), с полным описанием подготовки приложений для высокой (пиковой нагрузки). 

Приложение реализовано на основе IONDV. Framework. Распространяется по лицензии Apache 2.0.

Приложение в активной разработке.

Кратко об IONDV. Framework

IONDV. Framework - это опенсорный фреймворк на node.js для разработки учетных приложений или микросервисов на основе метаданных и отдельных модулей. Он является частью инструментальной цифровой платформы для создания enterprise (ERP) приложений состоящей из опенсорсных компонентов: самого фреймворка, модулей и готовых приложений расширяющих его функциональность, визуальной среды Studio для разработки метаданных приложений.

Подробнее об IONDV. Framework на сайте, документация и исхоные коды доступны в репозитории на github.

Инструкция к демо

TODO - находится в разработке. Ниже постановка.

Демо развернуто по адресу https://pass-ru.iondv.ru. Для входа под готовой учетной записью нажмите авторизоваться. Демо доступ обычного пользователя demo пароль ion-demo. Можно также просто зарегистрироваться. Пароль для подтверждения регистрации (смс не подключены) 123456. Пользователь может:

  • смотреть свой профиль
  • получить пропуск
  • смотреть список своих пропусков
  • смотреть данные своего пропуска с QR

Пользователь для проверки других пропусков control пароль ion-demo. Инструкция для проверяющего пользователя:

  • войдите в систему с браузера на смартфоне поддерживающего открытие ссылки по QR, например Opera.
  • авторизуйтесь.
  • теперь откройте ссылку пропуска с QR
  • альтернативный вариант пункт меню просмотр пропуска - ввести код пропуска вручную.

Пользователь бек-офиса. Перейдите по отдельной ссылке [****] - бек офис развернут в отдельной системе. Учетная запись operator пароль ion-demo. Функциональность профиля:

  • просмотр всех пропусков, возможность аннуляции пропуска после ввода комментария по бизнес-процессу;
  • возможность просмотра данных запросившего пропуск и поиска пропусков

Администратор бек-офиса. Перейдите по отдельной ссылке [****] - бек офис развернут в отдельной системе. Учетная запись admin пароль ion-demo. Функциональность профиля:

  • аналогично пользователю бек-офиса, кроме бизнес-процесса на пропуске;
  • просмотр всех пользователей;

Принципы разработки

Точки наибольшей нагрузки:

  • на главную страницу с которой осуществляется авторизация. Соответственно:
    • основная страница минимизирована, она не кешируется, т.к. инициализирует сессию - если её нет, она создается в Mongo, если есть обновляется срок действия.
    • запрос проверки авторизации осуществляется AJAX запросом, этот запрос не идет дальше сервера пропусков и СУБД для проверки сессии.
    • если пользователь авторизован (сессия валидна), то показываются кнопки действий, если нет кнопка регистрации или входа
    • все остальное включается кеширование в браузере пользователя и в кеше nginx
  • страница регитрация осуществляется на отдельной странице, регистрация может быть заменена на вход под ЕСИА или учеткой соц.сетей. Регистрация подразумевает проверку телефона. В демо приложении сервис не подключен.
  • страница входа запрашивает только сама страница, остальное кеш. После входа переход на страницу с пропусками.
  • формирование пропуска

Безопасность данных

  • внешний сервер не содержит никаких данных, только сессия пользователя и его идентификатор в БД. Все остальное запрашивается с бек-офиса. В случае ошибок бек-офиса - фронт продолжает работать, но не показывает данные.

Нужные доработки

  • авторизация и регистрация через выбранную стратегию
  • логика автоматических ограничений при проверке и выдаче пропуска
  • логика автоматической аналитики и проверок по уже созданным пропускам, в том числе их верификации

ДЕМО

TODO

Развертывание инфраструктуры

Общая инфраструктура

DNS

Подключаем Round-Robin DNS на примере cloudns.net, информация https://www.cloudns.net/wiki/article/182/. Для чего нужно:

  • пользователи получают IP адрес случайного сервера, нагрузка между ними выравнивается
  • обеспечивается высокую скорость отклика и надежность
  • позволяет не наращивать один сервер а подключать множество небольших виртуалок простым тиражированием и добавлением их IP, без остановки серверов для добавления ресурсов.

Как сделать:

  • прописываем записи типа А для каждого сервера.

В демо - две записи pass-ru.iondv.ru A [ip_адрес сервера 1] и pass-ru.iondv.ru A [ip_адрес сервера 2]

Проверка - с разных IP посмотрим curl -v https://pass-ru.iondv.ru и увидим разные IP.

Mongo

Для упрощения в системе используется одна СУБД Mongo, её рекомендуется развернуть в кластерном варианте и на SSD дисках. В настройках конфига возможно будет целесобразно указать большее кол-во памяти, т.к. по умолчанию Mongo использует для кеширования 60% минус 1 Гб.

В демо - стандартные настройки на виртуалке 2xCPU c 2Гб памяти, обычные диски, одна инстанция (не кластер) в докер контейнере, включена авторизация, SSL отключен.

Пример mongo.conf

TODO

Пример скрипта запуска

TODO

Redis

При очень высокой нагрузке имеет смысл добавить для хранения сессий пользователей портала в Redis.

В демо - не используется.

Инфраструктура для получателей пропусков IONDV. PASS-ru

TODO

Инфраструктура для операторов IONDV. PASS-ru

TODO

Тестирование нагрузки

TODO

Обновление главной странички

Регистрация уникальных пользователей

  • скрипт генерации POST запросов (ammo) для яндекс.танка.

Авторизация

  • скрипт генерации POST запросов для яндекс. танка

Создание талонов

  • скрипт авторизации и получения сессии
  • скрипт генерации под этой сессией талонов на создание.

About

IONDV. Pass-ru - фронт-офис демонстрационного приложения организации пропусков и их проверки, с полным описанием подготовки приложений для высокой (пиковой нагрузки)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages