В предыдущем уроке вы познакомились с диаграммой компонентов — одним из способов представления архитектуры. В этом уроке вас ждёт ещё один способ представления архитектуры ПО — диаграмма развёртывания. Эта диаграмма позволяет описать то, как система будет развёрнута на аппаратном обеспечении.
Айгуль
Пока всё с диаграммой компонентов понятно?
Даня
Вроде бы да, но не уверен 🙃
Айгуль
Это ок, со временем освоишься 😉
Даня
А что теперь?
Айгуль
Разберём диаграмму развёртывания!
Диаграмма развёртывания
Диаграмма компонентов показывает отношения между разными компонентами системы, а диаграмма развёртывания — между программными и аппаратными компонентами системы в среде развёртывания. То есть она описывает то, как система будет развёрнута на аппаратном обеспечении.
Если провести аналогию, диаграмма развёртывания — это план здания, а диаграмма компонентов — план этажей этого здания.
Диаграмма развёртывания создаётся архитектором, разработчиком и DevOps-инженером.
Диаграмма развёртывания необходима:
если команда разрабатывает встроенные системы, которые используют внешнее аппаратное обеспечение (например, приложение для умных часов);
система имеет клиент-серверную архитектуру;
система распределённая и на разных серверах могут размещаться разные версии ПО.
Элементы диаграммы
Кроме уже известных вам компонентов, в диаграмме развёртывания используются такие элементы:
Узлы (ноды).
Артефакты.
Среда исполнения.
Устройства.
Спецификации развёртывания.
Отношения.
Узлы (ноды)
В нотации UML узел, или нода (node), — это элемент диаграммы развёртывания, который представляет вычислительный ресурс системы. Например, компьютер, сервер, смартфон. Ноды соединяются между собой и образуют схему аппаратной и программной части системы.
На диаграмме нода изображается в виде куба. Название ноды соответствует той части ПО, которую она представляет.
Продолжим рассматривать приложение по доставке цветов и подарков. ПО имеет клиент-серверную архитектуру, которую можно представить в виде двух нод, которые соединены между собой: клиент и сервер.
Так же, как и у компонента, у ноды есть стереотип. С помощью стереотипа можно дополнительно указать конкретный тип аппаратного обеспечения. Например, для обозначения обычного сервера можно использовать стереотип <<server>>, а если в архитектуре используется мэйнфрейм, то указывается стереотип <<mainframe>>. Как вы помните, для обозначения стереотипа всегда используются двойные угловые скобки.
В зависимости от стиля архитектуры система может иметь несколько экземпляров одной и той же ноды. Например, команда разработки решила масштабировать сервис и создала его дополнительный экземпляр на отдельном сервере. На диаграмме этому отдельному серверу будет соответствовать своя нода.
Название каждого экземпляра ноды должно быть уникальным и должно состоять из двух частей, перечисленных через двоеточие:
название экземпляра ноды : нода
Название каждого экземпляра выделяется подчёркиванием.
Артефакты
В диаграмме развёртывания артефакт — это конкретный элемент ПО. Например, компонент из диаграммы компонентов, база данных и прочее. Артефакты развёртываются на нодах и определяют, какие данные используются каждым элементом системы. На диаграмме артефакт обозначается в виде прямоугольника. Элемент обязательно содержит стереотип <<artifact>> и название артефакта. Название артефакта, в свою очередь, состоит из стереотипа компонента и названия компонента ПО.
Обратите внимание, что компонент на диаграмме компонентов — это артефакт на диаграмме развёртывания.
Среда исполнения
На диаграмме развёртывания можно указывать среду, в которой будет выполняться развёртывание ПО. Например, команда разработки создаёт приложение для Android, эту операционную среду нужно указать на диаграмме. Или команда использует определённую СУБД (DBMS, Database Management System), это также отображается на диаграмме.
Среда исполнения относится к определённой ноде, поэтому внутри ноды размещается ещё один куб. Название куба соответствует среде исполнения. Внутри этого куба размещаются те артефакты, которые будут работать в указанной среде. Рассмотрим на примере:
Смартфон на базе Android имеет установленную версию ОС — 13. Внутри среды исполнения расположен артефакт «Приложение». То есть компонент будет развёртываться в среде Android 13. Иными словами, приложение будет запускаться на смартфонах с версией Android 13.
Для развёртывания баз данных «Товары» и «Заказы» команда разработки использует СУБД PostgreSQL.
На диаграмме развёртывания среда исполнения обозначается так:
стереотип среды исполнения в двойных угловых скобках (например, <<DBMS>>);
название среды (например, PostgreSQL).
Устройства
Устройство (<<device>>) — это разновидность ноды, которая представляет собой определённую систему, к которой принадлежат артефакты. Этот тип ноды позволяет разделить разные типы устройств, у которых есть своя среда исполнения. Например, если команда разрабатывает нативное приложение для смартфона, оно будет развёртываться на разных типах устройств с разной средой исполнения.
Спецификация развёртывания
Спецификация развёртывания — это файл, в котором содержится подробная инструкция по развёртыванию артефактов на ноде. Наличие этого файла необязательно. Но если на ноде много артефактов, такой файл сильно облегчает жизнь разработчика и DevOps-инженера. На диаграмме этот файл изображается в виде прямоугольника со стереотипом <<deployment spec>> и названием файла.
Отношения
Отношения — это элемент диаграммы развёртывания, который определяет, как ноды взаимодействуют друг с другом для работы системы. Существует несколько типов отношений между нодами:
Коммуникационные пути
Это тип отношений между нодами, который показывает, каким образом ноды обмениваются сообщениями друг с другом. Например, посредством TCP/IP.
Коммуникационные пути обозначаются сплошной линией.
Отношения ассоциации
По аналогии с диаграммой компонентов, отношения ассоциации на диаграмме развёртывания — это связь между экземплярами разных элементов одного типа. Например, между экземплярами узлов (нод). Для обозначения отношений ассоциации используется стрелка со сплошной линией.
Отношения развёртывания Отношения развёртывания связывают ноду с определённым артефактом. Например, если база данных должна быть развёрнута на определённой ноде. Отношения развёртывания обозначаются в виде стрелки с пунктирной линией и надписью <<deploy>>.
Подведём итоги
Диаграмма развёртывания — способ представления архитектуры ПО, который показывает отношения между программными и аппаратными компонентами системы.
Элементы нотации UML, которые используются для построения диаграммы:
Узлы (ноды) — элемент диаграммы развёртывания, который представляет вычислительный ресурс системы.
Артефакты — это конкретный элемент ПО: компонент, исполняемый файл, библиотека, база данных.
Среда исполнения — условия, в которых будет выполняться развёртывание ПО.
Устройства — это разновидность ноды, которая представляет собой определённую систему, к которой принадлежат артефакты.
Спецификации развёртывания — это файл в формате XML, в котором содержится подробная инструкция о том, как необходимо разворачивать артефакты на ноде.
Отношения — это элемент диаграммы компонентов и диаграммы развёртывания, который определяет, какие элементы взаимодействуют друг с другом для осуществления своих функций.
Во вложении вы найдете файл с основными элементами диаграммы компонентов и диаграммы развёртывания.