Файл: Практическая работа 01 по дисциплине программирование критических сервисов Студент гр. Иб06с Фамилия И. О.docx

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

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

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

Добавлен: 12.12.2023

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

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

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

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
 
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Кафедра информационных управляющих систем

Практическая работа № 01
по дисциплине
«ПРОГРАММИРОВАНИЕ КРИТИЧЕСКИХ СЕРВИСОВ»

Студент гр. ИБ-06с ____________________________ Фамилия И.О.

(подпись)

Проверил ___________________________ Параничев А.В.

(оценка и подпись)

Санкт-Петербург

2021 год

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

ЗАДАЧА.

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

Таблица 1

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

Значение

По цифре y

По цифре z

Цифры (yz) 

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

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

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

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

Мессенджер

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

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

0

CRUDL

SOAP / XML

Guest: R;
User: CR;
TopUser: CRD;
Admin: CRUD

TopUser, если сообщений 10 и более







0









WhatsApp

Chrome

Логин и пароль (более 8 букв / цифр)


решение

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

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

    • Create: Admin, User, TopUser;

    • Read: Guest, User, Admin, TopUser;

    • Update: Admin;

    • Delete: Admin, TopUser;

    • Listing: Guest, User, TopUser, Admin;

  • условие изменения роли 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