Задача
Построить диаграмму развертывания Full-stack приложения, определяя требования к развертыванию микросервисной архитектуры (MSA). Среда разработки приложения: PyCharm (язык программирования: Python), среда выполнения кода: Интернет-браузер на платформе Chromium.
Решение
Решение задачи определения требований к MSA для варианта №35 приводится по следующим исходным данным:
Типовые операции CQRS; доступ к типовым операциям:
Command: Admin, IgnUser, User, Guest;
Query: Admin, User, Guest;
Respond: Admin, User;
Segregate: Admin;
изменения роли User: становится IgnUser, если не пытается ответить на 4 вопроса подряд;
Интерфейсы: RESTful / HTTP;
Мессенджер: Telegram;
Драйвер тестирования Selenium: для Интернет-браузера на платформе Firefox;
Доступ к контенту БД: логин и пароль от 8 до 10 букв/цифр.
Требования при построении Full-stack приложения на основе MSA
Соответствие драйвера Selenium для задач автоматизированного тестирования: для установленного на компьютере Интернет-браузера Firefox;
Взаимодействие с веб-сервером, используя Python, может осуществляться с помощью Spyne (выполняет RPC на языке Python): входной протокол HTTP Document, выходной протокол RESTful (фреймворки: Django Rest Framework, Flask и Pyramid);
На основе логина и пароля, требования к которым определяются регулярным выражением «[A-Za-z0-9]{8, 10}», должен быть сформирован логин и пароль (от 8 до 10 букв / цифр), доступ к которому есть только у администратора (роль Admin);
СУБД должна быть нереляционной, поскольку доступ задан с помощью RESTful;
Код PlantUML-диаграммы с учетом требований к MSA для 35 варианта:
@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,10}__}"{
artifact aKey as "API Token"
artifact aLogin as "Логин"
artifact aPassword as "Пароль"
}
node nService as "Сервис обработки сообщений Telegram"{
}
node nRole as "Модуль управления ролью \n{ Operations = __CQRS__ }"{
node Guest as "Гостевой пользователь\n __{Query, Command}__"
node User as "Зарегистрированный пользователь\n __{Query, Respond, Command}__"
node IgnUser as "Ограниченный пользователь\n __{Command}__"
node Admin as "Администратор\n __{Command, Query, Respond, Segregare}__"
}
}
node nPythonRPC as "Сервер обработки RPC"{
node nDatabase as "Сервер базы данных \n{Database = __{MongoDB,__\n __Redis, CouchDВ}__}"{
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 = __91.0.4472.101__}\n{OS = __Windows x64__}"
}
User .> IgnUser : manifest
Admin ..> nDatabase : deploy
Admin ..> nPythonRPC : manifest
nPythonIDE --> nPythonRPC : "\n__HTTP__"
nPythonRPC -> nWebServer : " __RESTful__\n"
aLogin .left.> aKey : \nmanifest
aPassword .right.> aKey : \nmanifest
@enduml
Do'stlaringiz bilan baham: |