Файл: Практическая работа 01 по дисциплине программирование критических сервисов Студент гр. Иб06с Фамилия И. О.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.12.2023
Просмотров: 18
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Кафедра информационных управляющих систем
Практическая работа № 01
по дисциплине
«ПРОГРАММИРОВАНИЕ КРИТИЧЕСКИХ СЕРВИСОВ»
Студент гр. ИБ-06с ____________________________ Фамилия И.О.
(подпись)
Проверил ___________________________ Параничев А.В.
(оценка и подпись)
Санкт-Петербург
2021 год
Практическая работа № 01
ЗАДАЧА.
Построить диаграмму развертывания Full-stack приложения, определяя требования к развертыванию микросервисной архитектуры (MSA). Среда разработки приложения: PyCharm (язык программирования: Python), среда выполнения кода: Интернет-браузер на платформе Chromium (табл. 1).
Таблица 1
Исходные данные (вариант 00) для установления требований к MSA
Значение | По цифре y | По цифре z | |||||
Цифры (yz) | Типовые операции 2 | Интерфейсы (API) | Разрешенные типовые операции для заданных ролей | Условие изменения роли User | Мессенджер | Браузер для тестирования в Selenium | Доступ к контенту БД |
0 | CRUD | SOAP / XML | Guest: R; User: CR; TopUser: CRD; Admin: CRUD | TopUser, если сообщений 10 и более | – | – | – |
0 | – | – | – | – | | Chrome | Логин и пароль (более 8 букв / цифр) |
решение
Решение задачи определения требований к MSA для варианта № 00 (табл. 1) приводится по следующим исходным данным:
-
типовые операции: CRUD; доступ к типовым операциям:-
Create: Admin, User, TopUser; -
Read: Guest, User, Admin, TopUser; -
Update: Admin; -
Delete: Admin, TopUser;
-
-
условие изменения роли User: становится TopUser, если сообщений 10 и более; -
интерфейсы: SOAP / XML; -
мессенджер: WhatsApp; -
драйвер тестирования Selenium: для Интернет-браузеров на платформе Chromium; -
доступ к контенту БД: логин и пароль с более 8 буквами или цифрами.
Соответствующая диаграмма развертывания представлена на рис. 1.
Ориентируясь на рис. 1, необходимо установить следующие требования при построении Full-stack приложения на основе MSA:
-
соответствие драйвера Selenium для задач автоматизированного тестирования: для установленного на компьютере Интернет-браузера Google Chrome (версия 91.0.4472.101 для 64-разрядной Windows 7) выбрана предшествующая версия архива chromedriver_win32.zip (версия 90.0.4430.24 для операционной системы, совместимой с 32-разрядной Windows);
Рис. 1. Диаграмма развертывания для определения требований к MSA
-
взаимодействие с веб-сервером, используя Python, может осуществляться с помощью Spyne (выполняет RPC на языке Python): входной протокол XML Document, выходной протокол SOAP 1.1; -
на основе логина и пароля, требования к которым определяются регулярным выражением «[A-Za-z0-9]{8,}», должен быть сформирован токен API, доступ к которому есть только у администратора (роль Admin); -
СУБД должна быть реляционной, поскольку доступ задан с помощью XML; -
при числе сообщений более 10, пользователь, имеющий роль User, получает привилегии роли TopUser.
Исходный код PlantUML-диаграммы:
@startuml
left to right direction
title Full-stack приложение на основе микросервисной архитектуры
node nPythonIDE as "Интегрированная среда разработки на Python\n{IDE=__PyCharm 2020.3.3__}\n{OS=__Windows x64__}"{
node nChecking as "Модуль проверки\nлогин-пароля\n{ RegExp = __[A-Za-z0-9]{8,}__}"{
artifact aKey as "API Token"
artifact aLogin as "Логин"
artifact aPassword as "Пароль"
}
node nService as "Сервис обработки сообщений WhatsApp"{
}
node nRole as "Модуль управления ролью \n{ Operations = __CRUD__ }"{
node Guest as "Гостевой пользователь\n __{Read}__"
node User as "Зарегистрированный пользователь\n __{Create, Read}__"
node TopUser as "Привилегированный пользователь\n __{Create, Read, Delete}__"
node Admin as "Администратор\n __{Create, Read, Update, Delete}__"
}
}
node nPythonRPC as "Сервер обработки RPC"{
node nDatabase as "Сервер базы данных \n{Database = __{MySQL,__\n __PostgreSQL, MariaDB}__}"{
artifact aMessages as "Число сообщений\n{MinCount = __10__}"
}
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 "Google Chrome\n{Version = __91.0.4472.101__}\n{OS = __Windows x64__}"
}
User .> TopUser : manifest
Admin ..> nDatabase : deploy
Admin ..> nPythonRPC : manifest
nPythonIDE --> nPythonRPC : "\n__XML__"
nPythonRPC -> nWebServer : " __SOAP API__\n"
aLogin .left.> aKey : \nmanifest
aPassword .right.> aKey : \nmanifest
@enduml