Файл: Практическая работа 01 задача.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 29.11.2023

Просмотров: 51

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Практическая работа № 01

ЗАДАЧА.

Построить диаграмму развертывания Full-stack приложения, определяя требования к развертыванию микросервисной архитектуры (MSA). Среда разработки приложения: PyCharm (язык программирования: Python), среда выполнения кода: Интернет-браузер на платформе Firefox (табл. 1).

Таблица 1

Исходные данные (вариант 33) для установления требований к MSA

Значение

По цифре y

По цифре z

Цифры (yz) 

Типовые операции 2

Интерфейсы (API)

Разрешенные
типовые операции для заданных ролей

Условие
изменения роли User

Мессенджер

Браузер для тестирования в Selenium

Доступ к контенту БД

3

CQRS

RESTful / HTTP

Guest: CQ;

User: CQR; IgnUser: C; Admin: CQRS

IgnUser, если не пытался ответить на 4 вопроса подряд







3









WhatsApp

Firefox

API token

решение

Решение задачи определения требований к MSA для варианта № 33 (табл. 1) приводится по следующим исходным данным:

  • типовые операции: CQRS; доступ к типовым операциям:

    • Guest: CQ;

    • User: CQR

    • ; IgnUser: C;

    • Admin: CQRS;

  • условие изменения роли User: становится IgnUser, , если не пытался ответить на 4 вопроса подряд;

  • интерфейсы: RESTful / HTTP;

  • мессенджер: WhatsApp;

  • драйвер тестирования Selenium: для Интернет-браузеров на платформе Chromium;

  • доступ к контенту БД: по API-токену.

Соответствующая диаграмма развертывания представлена на рис. 1.

Ориентируясь на рис. 1, необходимо установить следующие требования при построении Full-stack приложения на основе MSA:

  • соответствие драйвера Selenium для задач автоматизированного тестирования: для установленного на компьютере Интернет-браузера Firefox (версия 109.0.1 для 64-разрядной Windows 10) выбрана предшествующая версия архива firefox_109.0.1.exe (версия 109.0.1 для операционной системы, совместимой с 32-разрядной Windows);




Рис. 1. Диаграмма развертывания для определения требований к MSA

  • взаимодействие с веб-сервером, используя Python, может осуществляться с помощью Spyne (выполняет RPC на языке Python): входной протокол HTTP, выходной протокол RESTful;

  • должен быть сформирован токен API, доступ к которому есть только у администратора (роль Admin);

  • СУБД должна быть типа ключ-значение, поскольку доступ задан с помощью HTTP;

  • если пользователь не отвечает на 4 отправленных запроса, пользователь, имеющий роль User, получает роль IgnUser.

Исходный код PlantUML-диаграммы:

@startuml

left to right direction

title Full-stack приложение на основе микросервисной архитектуры

node nPythonIDE as "Интегрированная среда разработки на Python\n{IDE=__PyCharm 2022.0.3__}\n{OS=__Windows x64__}"{

node nChecking as "Модуль проверки\nлогин-пароля\n{ API token}"{

artifact aKey as "API Token"

artifact aLogin as "Логин"

artifact aPassword as "Пароль"

}

node nService as "Сервис обработки сообщений WhatsApp"{

}

node nRole as "Модуль управления ролью \n{ Operations = __CQRS__ }"{

node Guest as "Гостевой пользователь\n __{Command, Query}__"

node User as "Зарегестрированный пользователь\n __{Command, Query, Responsibility}__"

node IgnUser as "Игнорируемый пользователь\n __{Command}__"

node Admin as "Администратор\n __{Command, Query, Responsibility,Segregation}__"

}

}

node nPythonRPC as "Сервер обработки RPC"{

node nDatabase as "Хранилище типа ключ-значение \n{Database = __{Google AppEngine Data Store,__\n __Microsoft: SQL Data Services, CouchDB}__}"{

artifact aMessages as "Число проигнорированных вопросов\n{MinCount = __4__}"

}

node nSpyne as "Веб-cервис Spyne"{

}

}

node nWebServer as "Веб-сервер"{

artifact aSelenium as "WebDriver Selenium\n{Version = __90.0.4430.24__}\n{OS = __Windows x86__}"

artifact aBrowser as "Firefox\n{Version = __109.0.1__}\n{OS = __Windows x64__}"

}

User .> IgnUser : manifest

Admin ..> nDatabase : deploy

Admin ..> nPythonRPC : manifest

nPythonIDE --> nPythonRPC : "\n__HTTP__"

nPythonRPC -> nWebServer : " __RESTful API__\n"

aLogin .left.> aKey : \nmanifest

aPassword .right.> aKey : \nmanifest

@enduml