Моделирование#

Предусловия#

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

Последовательность выполнения#

  1. Выполните действия описанные в секции Доступ к приложению для того, чтобы перейти на главную страницу «Моделирование нагрузок».

main

Рис.1 - Главная страница «Моделирование нагрузок»

Примечание: если у вас уже имеется схема со всеми взаимосвязанными микросервисами, то функционал моделирования предусматривает возможность импортировать и работать с уже имеющиеся схемой. Для этого вам необходимо перейти на пункт 7 и выполнить все описанные там шаги.

  1. Нажмите на кнопку «Новый проект», если хотите создать новый проект.

main

Рис.2 - Кнопка «Новый проект»

Откроется окно «Создание новой цифровой модели системы».

main

Рис.3 - Окно «Создание новой цифровой модели системы»

Заполните поля «Название проекта», «Версия проекта», «Описание проекта» и нажмите кнопку «Создать».

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

main

Рис.4 - Рабочая область для моделирования схемы

  1. Нажмите на кнопку «+», чтобы добавить новый цифровой двойник.

В открывшейся окне вы можете выбрать способ создания микросервиса:

  • Генерация цифрового двойника на основе существующих метрик.

main

Рис.5 - Кнопка «Сгенерировать цифровой двойник»

Если вы нажали на кнопку «Сгенерировать цифровой двойник», то вас перекинет на страницу «Генерация цифрового двойника», где вы сможете сгенерировать цифровой двойник на основе существующих метрик. Подробнее как это сделать описано в разделе документации «Генерация цифрового двойника».

  • Импорт существующего цифрового двойника.

main

Рис.6 - Кнопка «Загрузка существующего цифрового двойника»

Если вы выбрали загрузку существующего цифрового двойника, то при нажатии на кнопку «Загрузка существующего цифрового двойника» будет выведена форма для добавления нового цифрового двойника в виде файла в формате json (например, если вы выгрузили json с данными по цифровому двойнику из раздела «Генерация цифрового двойника»).

Далее нажмите на кнопку «Импортировать json».

main

Рис.7 - Кнопка «Импортировать json»

В результате в форме будут отображены данные цифрового двойника, где значения цифрового двойника будут заполнены следующим образом (пример):

{
  "approximation": {
    "name": "example",
    "r2_score": 0.8274659416286798,
    "r2_score_memory": 0.8693824694164557,
    "degree": 4,
    "degree_memory": 5,
    "equation": "y = 0.1721160786 + -0.0040123388 * tps + 0.0000467083 * tps^2 + -0.0000001518 * tps^3 + 0.0000000002 * tps^4",
    "equation_memory": "y = 0.4518521493 + -0.0019271983 * tps + -0.0000071230 * tps^2 + 0.0000002039 * tps^3 + -0.0000000008 * tps^4 + 0.0000000000 * tps^5",
    "coefficients": {
      "intercept": 0.17211607864438944,
      "coefs": [
        -0.004012338761542752,
        0.00004670833417044238,
        -1.5176740185022632e-7,
        1.610320292661595e-10
      ]
    },
    "coefficients_memory": {
      "intercept": 0.4518521493063319,
      "coefs": [
        -0.0019271983417529267,
        -0.000007123033571743772,
        2.03885491727988e-7,
        -7.893728712896916e-10,
        9.034571635130323e-13
      ]
    },
    "data_bounds": {
      "tps_min": 0.15000000000000002,
      "tps_max": 363.45,
      "cpu_min": 0.01,
      "cpu_max": 0.46,
      "memory_min": 0.35,
      "memory_max": 0.56,
      "tps_memory_min": 0.15000000000000002,
      "tps_memory_max": 363.45
    },
    "metadata": {
      "cpu_limits": 600,
      "memory_limits": 851443712
    }
  },
  "name": "example",
  "version": "1"
}

Поле

Тип данных

Описание

name

String

Имя цифрового двойника

version

Integer

Верчия цифрогового двойника

approximation.name

String

Имя сервиса

approximation.r2_score

Integer

Оценка точности модели

approximation.r2_score_memory

Integer

Оценка точности модели по памяти

approximation.equation

String

Уравнение cpu от tps

approximation.equation_memory

String

Уравнение cpu от tps по памяти

approximation.degree

Integer

Значение точности

approximation.degree_memory

Integer

Значение точности по памяти

approximation.coefficients.intercept

Integer

Коэффициент уравнения

approximation.coefficients.coefs

Integer

Коэффициенты уравнения при степенях

approximation.coefficients_memory.intercept

Integer

Коэффициент уравнения по памяти

approximation.coefficients_memory.coefs

Integer

Коэффициенты уравнения при степенях по памяти

approximation.data_bounds.tps_min

Integer

Ограничение по минимальному tps, в рамках которого будет корректный расчет

approximation.data_bounds.tps_max

Integer

Ограничение по максимальному tps, в рамках которого будет корректный расчет

approximation.data_bounds.cpu_min

Integer

Ограничение по минимальному CPU, в рамках которого будет корректный расчет

approximation.data_bounds.cpu_max

Integer

Ограничение по максимальному CPU, в рамках которого будет корректный расчет

approximation.data_bounds.memory_min

Integer

Ограничение по минимальному memory, в рамках которого будет корректный расчет

approximation.data_bounds.memory_max

Integer

Ограничение по максимальному memory, в рамках которого будет корректный расчет

approximation.data_bounds.tps_memory_min

Integer

Ограничение по минимальному tps_memory_min, в рамках которого будет корректный расчет

approximation.data_bounds.tps_memory_max

Integer

Ограничение по максимальному tps_memory_max, в рамках которого будет корректный расчет

approximation.metadata.cpu_limits

Integer

Лимиты контейнера по CPU

approximation.metadata.memory_limits

Integer

Лимиты контейнера по memory

Таблица. Описание полей цифрового двойника

Примечание: значения цифрового двойника не могут быть отрицательными. Значения для секции approximation берутся из ручки digital-twin.

После того, как вы ввели данные/импортировали json файл с цифровым двойником и нажали кнопку «Добавить», ваш новый сервис отобразиться на общей схеме (без связей).

main

Рис.8 - Добавление нового элемента

  1. Добавьте связь к новому сервису. Соблюдайте корректность, соединенного входа и выхода.

В данном примере необходимо делать связь от выхода генератора нагрузки (предварительно был добавлен для входящей нагрузки) к входу «example», далее от выхода «example» на вход «egw» (предварительно был добавлен еще один компонент egw).

В результате соединения нового сервиса с другими получаем следующий результат:

main

Рис.9 - Добавление связей с новым элементом

Примечание: при необходимости вы можете указать значение входного TPS в специальной ноде «Генератор нагрузки». Значение не может быть отрицательным.

main

Рис.10 - Генератор нагрузки

Примечание: вы можете добавить заглушку (output нода), нажав на соответствующую кнопку. В результате появляется возможность оценить зависимости и учитывать нагрузочные характеристики выходных потоков.

main

Рис.11 - Заглушка

Как видно на картинке для каждого сервиса выводится следующая информация: процент утилизации, процент утилизации по памяти, количество реплик и нагрузка на реплику в tps (рис.11).

main

Рис.12 - Результат расчета

  1. Используйте специальные кнопки для отображения дополнительной информации.

Нажмите на переключатель «Результат расчета», чтобы увидеть результат значений tps между сервисами (на стрелках):

main

Рис.13 - Кнопка «Результат расчета»

main

Рис.14 - Отображение по кнопке «Результат расчета»

Также можно нажать на переключатель «Показывать дополнительную информацию», чтобы увидеть дополнительную информацию по весу стрелок между компонентами:

main

Рис.15 - Кнопка «Показывать дополнительную информацию»

main

Рис.16 - Результат работы кнопки «Показывать дополнительную информацию»

  1. Нажмите на кнопку «Экспорт» при раскрытии меню слева, чтобы сохранить на свое устройство схему цифровой архитектуры с результатом расчета:

main

Рис.17 - Кнопка «Экспортировать схему»

Далее шаги 7-16 являются опциональными.

  1. Нажмите на кнопку «Импортировать» на главной странице, чтобы загрузить схему цифровой архитектуры в формате json.

main

Рис.18 - Кнопка «Импортировать схему»

Примечание: также есть возможность импортировать схему при создании проекта, для этого нажмите на кнопку «Импортировать» слева в меню:

main

Рис.19 - Кнопка «Импортировать схему» в меню

В результате будет импортирована схема, которая будет выглядеть следующим образом:

main

Рис.20 - Результат импортирования схемы

Элементы данной схемы можно отредактировать при нажатии на кнопку «Карандаш», которая есть у каждого компонента:

main

Рис.21 - Кнопка «Редактирование»

Окно редактирования параметров будет иметь следующий вид:

main

Рис.22 - Форма редактирования параметров

Примечание: значения не могут быть отрицательными.

После настройки сервиса нажмите на кнопку «Сохранить».

Далее, при необходимости выполните опциональные шаги с 8 по 16, если нет необходимости в их выполнении, то выполните действия согласно шагу 6, чтобы сохранить полученную схему на свое устройство.

  1. Функционал предусматривает возможность добавить несколько входящих нагрузок (опционально).

Нажмите кнопку «Генератор нагрузки».

main

Рис.23 - Кнопка «Генератор нагрузки»

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

main

Рис.24 - Отображение второго input элемента с входящей нагрузкой

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

  1. Функционал предусматривает возможность добавить выходящую нагрузку (опционально).

Данный функционал позволяет моделировать output-ноды и описывать выходные точки системы, что повышает точность моделирования.

Нажмите на значок «Заглушка» в меню добавления элемента.

main

Рис.25 - Значок «Заглушка»

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

main

Рис.26 - Отображение выходящей нагрузки

  1. Функционал предусматривает удаление сервиса, но не является обязательным (опционально).

Например, для удаления сервиса example перейдите в режим редактирования сервиса и нажмите кнопку «Удалить»:

main

Рис.27 - Кнопка «Удалить» сервис

  1. Функционал предусматривает возможность замены цифрового двойника (обновления версии), но не является обязательным (опционально).

Например, для замены компонента example (обновления версии) нажмите на кнопку «Заменить цифровой двойник»:

main

Рис.28 - Кнопка «Заменить цифровой двойник»

При нажатии на нее открывается всплывающее окно для редактирования:

main

Рис.29 - Окно для редактирования цифрового двойника

В окне предусмотрена кнопка «Импорт элемента» для загрузки файла JSON:

main

Рис.30 - Кнопка импорт элемента

После того, как вы изменили данные/импортировали json файл с цифровым двойником (обновили версию) и нажали кнопку «Заменить», ваш новый сервис отобразиться на общей схеме с новыми значениями и произойдет перерасчет.

  1. Используйте кнопки дополнительных функциональностей (опционально).

main

Рис.31 - Кнопки дополнительных функциональностей

Предусмотрены вспомогательные кнопки:

1 - Увеличение масштаба.

2 - Уменьшение масштаба.

3 - Настроить вид (кнопка изменения масштаба или положения элемента на экране так, чтобы он полностью помещался в пределах видимой области).

4 - Переключатель состояний (кнопка фиксации элементов на экране).

Также предусмотрена кнопка настройки панели (схемы):

main

Рис.32 - Кнопка настройки панели

Нажмите на данную кнопку, если хотите указать «Название»,»Описание»,»Версию».

  1. Используйте кнопку «Документация» (опционально).

Если есть ссылка на документацию, то для пользователя будет доступна кнопка «Документация».

main

Рис.33 - Кнопки «Документация»

  1. Функционал предусматривает расчет по нескольким эпохам (опционально).

Нажмите на значок дополнительных функций:

main

Рис.34 - Значок дополнительных функций

Нажмите на кнопку «Добавить эпоху»:

main

Рис.35 - Кнопка «Добавить эпоху»

После добавления нескольких эпох вы можете посмотреть на графике результат. Для этого нажмите на кнопку «Показать график».

main

Рис.36 - Кнопка «Показать график»

main

Рис.37 - Результат отображения эпох

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

main

Рис.38 - Кнопка «Применить на схему»

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

При необходимости вы можете удалить одну выбранную эпоху. Для этого выберите эпоху и нажмите на кнопку «Удалить».

main

Рис.39 - Удаление эпохи

Нажмите на кнопку «Скачать результат», если хотите выгрузить полученный результат по эпохам (Epoches.yaml) и спецификацию вашей схемы (ScaleObjects.yaml).

main

Рис.40 - Кнопка «Скачать результат»

  1. Функционал предусматривает генерацию отчета по эпохам (опционально).

Добавьте предварительно эпохи согласно пункту 13.

Нажмите на кнопку «Сгенерировать отчет».

main

Рис.41 - Кнопка «Сгенерировать отчет»

В результате будет выведен отчет содержащий следующую информацию:

Данные по максимальным значениям среди всех сервисов:

  • Максимальная утилизация по памяти.

  • Максимальная утилизация.

  • Максимальная входная нагрузка.

main

Рис.42 - Визуализация максимальных значений среди всех сервисов

Также отчет содержит графики, которые показывают следующую информацию:

  • Входная нагрузка от эпох.

  • Входная нагрузка на каждый сервис на эпоху.

  • Число реплик на каждый сервис на эпоху.

  • Утилизация по CPU на каждый сервис на эпоху.

  • Утилизация по памяти на каждый сервис на эпоху.

  • Утилизация по CPU на каждый сервис на эпоху абсолютные значения.

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

  • Общая утилизация по CPU на проекте.

  • Общая утилизация по памяти на проекте.

В качестве примера представлено несколько графиков:

main

Рис.43 - График «Входная нагрузка от эпох»

main

Рис.44 - График «Входная нагрузка на каждый сервис на эпоху»

main

Рис.45 - График «Утилизация по памяти на каждый сервис на эпоху»

  1. При возникновении вопросов вы можете обратиться за помощью в чат поддержки по кнопке (опционально)

main

Рис.46 - Кнопка «Чат поддержки»

Результат#

В ходе выполнения данных шагов пользователь получает файл в формате json, который содержит схему с взаимосвязанными сервисами, рассчитанными значениями утилизации, утилизации по памяти и количеством реплик.

Для проверки успешности использования моделирования необходимо:

  1. Выполнить шаг 1.

  2. Выполнить шаги 2-5 (или выполнить действия согласно шагу 7, если вы работаете с уже имеющиеся схемой).

  3. Выполнить шаги 8-16 (опционально).

  4. Выполнить шаг 6.

  5. Импортировать полученную схему.

  6. Проверить, что раннее экспортированный файл соответствует импортированному по содержанию: корректность рассчитанных данных и связей между сервисами.

Правила эксплуатации#

Особых правил эксплуатации не предусмотрено.

Cценарий не предусматривает загрузку и выгрузку данных (журналы событий, база пользователей, атрибуты доступа, ролевая модель и т. д.) в/из внешних источников (сервисы, автоматизированные системы и т.д.).