Лабораторная работа 2
Тема: Проектирование архитектуры монолитной информационной системы
Части:
-
Часть 1 — Технологическая и инфраструктурная архитектура монолита
-
Часть 2 — Интеграционная архитектура монолита
-
Часть 3 — Внутренняя структура монолита (слои, модули, компоненты)
Дисциплина: Проектирование архитектуры информационных систем
Продолжительность: 2 пары (3 академических часа)
Форма проведения: индивидуальная работа + публичная защита с обсуждением.
1. Цель лабораторной работы
Сформировать у студентов навыки проектирования монолитной архитектуры информационной системы:
-
спроектировать технологическую и инфраструктурную архитектуру монолита (как и где разворачивается система);
-
описать интеграционные взаимодействия монолита с внешними системами и подсистемами;
-
спроектировать внутреннюю структуру монолита: слои, модули, основные компоненты и их связи.
2. Исходные условия и выбор темы
-
У каждого студента уже есть своя тема ИС, определённая после Лабораторной работы 1:
-
либо по собственным интересам (любая реалистичная ИС);
-
либо из списка наиболее популярных типов ИС с hh.ru (список будет предложен отдельно, после описания всех лабораторных).
-
-
Все артефакты ЛАБЫ 1 (контекст, стейкхолдеры, требования, логическая и информационная архитектура) считаются исходными данными для данной работы.
-
В рамках ЛАБЫ 2 для выбранной ИС студент рассматривает вариант архитектуры “монолит” (в дальнейшем в ЛАБЕ 3 будет рассмотрена альтернативная архитектура, например микросервисная).
3. Планируемые результаты
Студент должен уметь:
-
Проектировать схему развёртывания монолитной ИС (серверы, БД, окружение).
-
Определять интеграционные взаимодействия монолита с внешними системами и модулями.
-
Проектировать внутреннюю структуру монолита: слои (UI, бизнес-логика, данные), модули и компоненты.
-
Обосновывать, почему выбран монолитный подход и какие риски/ограничения он несёт.
-
Представлять результаты в виде диаграмм и текстового описания, умея публично защитить архитектурные решения.
4. Требования к программным средствам
-
текстовый редактор (Word, Google Docs и т.п.);
-
редактор диаграмм: Draw.io / diagrams.net, Lucidchart, PlantUML, Visual Paradigm, StarUML и др.;
-
ПО для показа презентации / диаграмм на проекторе.
5. Структура лабораторной работы
ЧАСТЬ 1. Технологическая и инфраструктурная архитектура монолита
Цель части:
Спроектировать, как монолитная ИС будет развёрнута в инфраструктуре: сервера, БД, дополнительные сервисы, сети.
Рекомендуемое время: 40–45 минут.
Задания
-
Определить основные инфраструктурные компоненты.
Для своей ИС перечислите:-
веб-/приложенийный сервер (или несколько серверов);
-
сервер(а) БД;
-
вспомогательные сервисы (кеш, файловое хранилище, почтовый сервер и т.п. — по необходимости);
-
балансировщик нагрузки (если требуется);
-
элементы безопасности (reverse proxy, firewall, VPN — при необходимости).
-
-
Определить схему развёртывания монолита.
Ответьте на вопросы (кратко, но предметно):-
Где физически или логически будет размещён монолит (on-premise, облако, смешанный вариант — концептуально)?
-
Будет ли использоваться кластер из нескольких экземпляров монолита или один экземпляр?
-
Как будет обеспечиваться резервирование БД (репликация, бэкапы)?
-
-
Построить диаграмму развёртывания (Deployment) для монолита.
На диаграмме должны быть:-
узлы (nodes): сервер приложения, сервер БД, внешние системы;
-
артефакты: монолитное приложение, база данных;
-
связи (сетевое взаимодействие, протоколы можно обозначить текстом);
-
по возможности — разделение на зоны (интернет, DMZ, внутренняя сеть).
-
-
Увязать инфраструктуру с нефункциональными требованиями.
На основе сценариев качества из ЛАБЫ 1 кратко опишите:-
как выбранная схема развёртывания помогает достичь нужной производительности и доступности;
-
где потенциальные точки отказа и как вы планируете их минимизировать.
-
Результат ЧАСТИ 1 (в отчёт):
-
Перечень инфраструктурных компонентов (кратко описанный).
-
Диаграмма развёртывания монолитной ИС.
-
Краткий текст (5–10 предложений) о связи инфраструктуры с нефункциональными требованиями.
ЧАСТЬ 2. Интеграционная архитектура монолитной ИС
Цель части:
Описать, как монолитная система будет интегрироваться с внешними ИС, сервисами и модулями.
Рекомендуемое время: 40–45 минут.
Задания
-
Выделить внешние системы и интерфейсы.
На основе ЛАБЫ 1 составьте таблицу:Внешняя система / стейкхолдер Назначение интеграции Тип взаимодействия (онлайн/офлайн) Протокол/механизм (концептуально)
-
Примеры:
-
платёжный шлюз;
-
внешняя CRM/ERP;
-
почтовый сервис/СМС-шлюз;
-
государственные сервисы.
-
-
Выбрать базовый интеграционный стиль для монолита.
Кратко опишите, что используется:-
классический запрос/ответ (REST/HTTP, gRPC и т.п.);
-
обмен файлами (пакетная интеграция);
-
очереди сообщений / события (если применимо).
Обоснуйте, почему это разумно для монолита вашей ИС.
-
-
Построить 1–2 диаграммы последовательности (Sequence) для ключевых сценариев.
Выберите 2 сценария, где есть интеграции с внешними системами, например:-
«Оформление заказа с онлайн-оплатой»;
-
«Отправка уведомления клиенту по e-mail/SMS»;
-
«Загрузка данных из внешней системы».
Для каждого сценария:
-
определите участников (Актор, Монолитная ИС, Внешний сервис …);
-
отобразите последовательность сообщений / запросов;
-
укажите ключевые данные, которые передаются.
-
-
Обозначить риски интеграции и их влияние на монолит.
В тексте (5–7 предложений) опишите:-
что произойдёт, если внешняя система недоступна;
-
как это повлияет на монолит и пользователей;
-
какие механизмы можно использовать (очереди, ретраи, деградация функционала и т.п.).
-
Результат ЧАСТИ 2 (в отчёт):
-
Таблица внешних интеграций.
-
1–2 диаграммы последовательности для выбранных сценариев.
-
Краткий аналитический текст о рисках интеграции и вариантах их снижения.
ЧАСТЬ 3. Внутренняя структура монолитной ИС (слои, модули, компоненты)
Цель части:
Спроектировать внутреннее устройство монолита: слои, модули, основные компоненты и связи между ними.
Рекомендуемое время: 40–45 минут.
Задания
-
Определить архитектурные слои монолита.
Для своей ИС явно зафиксируйте слои, например:-
Слой представления (UI) — веб-интерфейс, мобильный интерфейс, API для фронтенда;
-
Слой прикладной логики (Application) — обработка сценариев, orchestration;
-
Слой предметной области / бизнес-логики (Domain) — бизнес-правила, доменные объекты;
-
Слой доступа к данным (Data Access) — работа с БД, внешними хранилищами.
Можно адаптировать структуру под свои идеи (3-слойка, 4-слойка и т.п.), но слои должны быть явно названы и их ответственность — описана.
-
-
Разбить монолит на модули/подсистемы внутри слоёв.
Опираясь на подсистемы из ЛАБЫ 1, спроектируйте модули:-
в каких слоях какие модули существуют (например, «Модуль управления заказами» в слое Application и соответствующие компоненты в слое Domain и Data);
-
какие модули взаимодействуют между собой.
Можно оформить в виде таблицы:
| Модуль | Слой | Ответственность | Основные сущности/объекты | Соседние модули (зависимости) |
-
-
Построить диаграмму внутренней структуры монолита.
Варианты:-
UML Component Diagram (компоненты и их связи);
-
C4 диаграмма уровня Component (внутренние компоненты одного контейнера — монолита).
На диаграмме должны быть:
-
слои (можно показать “ярусами” или группами);
-
основные модули/компоненты;
-
связи между ними (кто кого вызывает / от кого зависит).
-
-
Определить правила взаимодействия между слоями и модулями.
В текстовой форме опишите:-
разрешённые направления зависимостей (например, UI → Application → Domain → Data Access);
-
запретные/нежелательные зависимости (например, UI → Data Access напрямую);
-
как вы хотите обеспечить слабое зацепление модулей (интерфейсы, фасады, сервисы).
-
-
Обозначить риски и ограничения монолитной архитектуры для данной ИС.
Напишите 5–7 предложений:-
какие плюсы монолита для вашей системы (простота развёртывания, целостность транзакций и т.д.);
-
какие минусы/риски (масштабируемость по функциональности, сложность изменений, размер кода и т.п.);
-
на каком горизонте развития системы монолит может перестать быть удобен.
-
Результат ЧАСТИ 3 (в отчёт):
-
Перечень архитектурных слоёв с описанием ответственности.
-
Таблица модулей и их связей.
-
Диаграмма внутренней структуры монолита (компонент/слоёв).
-
Текстовое описание правил зависимостей и анализ плюсов/минусов монолита.
6. Публичная защита и групповое обсуждение
В конце занятия каждый студент:
-
Показывает на проекторе:
-
диаграмму развёртывания монолита;
-
одну диаграмму интеграций (контекст или sequence);
-
диаграмму внутренней структуры монолита.
-
-
Кратко (3–5 минут) объясняет:
-
как устроен его монолит (слои, модули);
-
как он интегрируется с внешними системами;
-
в чём видит основные плюсы/минусы монолитного решения для своей темы.
-
-
Отвечает на вопросы группы и преподавателя.
Остальные студенты задают уточняющие и критические вопросы, предлагают альтернативы, указывают на возможные проблемы.
7. Структура отчёта по Лабораторной работе 2
-
Титульный лист
-
Цель и краткое описание темы ИС студента.
-
Часть 1. Технологическая и инфраструктурная архитектура монолита
-
перечень инфраструктурных компонентов;
-
диаграмма развёртывания;
-
текстовый комментарий.
-
-
Часть 2. Интеграционная архитектура монолита
-
таблица внешних интеграций;
-
диаграммы последовательности;
-
анализ рисков интеграции.
-
-
Часть 3. Внутренняя структура монолита
-
описание архитектурных слоёв;
-
таблица модулей и их связей;
-
диаграмма компонент/слоёв;
-
текстовое описание правил зависимостей и анализ плюсов/минусов.
-
-
Выводы по работе.
-
При необходимости — скриншоты/фрагменты презентации для защиты.
8. Примерные контрольные вопросы
-
В чём особенности архитектуры монолита по сравнению с распределёнными архитектурами?
-
Какие инфраструктурные решения чаще всего используются при развёртывании монолита?
-
Какие интеграционные стили подходят для монолитных систем и почему?
-
Что такое слой в архитектуре приложения и чем он отличается от модуля?
-
Какие зависимости между слоями являются корректными, а какие — нежелательными?
-
В чём достоинства и недостатки монолита применительно к вашей теме ИС?
-
Какие риски возникают при интеграции монолита с внешними системами?