Критические сервисы ПР1. Практическая работа 01 задача
Скачать 109.09 Kb.
|
Практическая работа № 01 ЗАДАЧА. Построить диаграмму развертывания Full-stack приложения, определяя требования к развертыванию микросервисной архитектуры (MSA). Среда разработки приложения: PyCharm (язык программирования: Python), среда выполнения кода: Интернет-браузер на платформе Firefox (табл. 1). Таблица 1 Исходные данные (вариант 33) для установления требований к MSA
решение Решение задачи определения требований к 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 |