Ведь что такое #архитектура ПО? Это разбиение большой системы на части, как-то связанные, взаимодействующие друг с другом. Причем, у одной и то же системы одновременно может быть много различных разбиений. Вот, сходу приходят на ум:
- Модульное разбиение в терминах языка программирования - на библиотеки, компоненты, пакеты и прочие модули, каждый из которых имеет свое именование, место хранения, экспортируемые интерфейсы/методы и, возможно еще какие-то свойства - версия, статус и т.п. Это разбиение позволяет сгруппировать код по блокам, каждый из которых имеет относительно независимый жизненный цикл.
- Разбиение по репозиториям в смысле места хранения кода, управления доступом к коду.
- Разбиение по конструктивным элементам деплоя - контейнерам/сервисам, которые могут быть независимо развернуты в среде исполнения
- Разбиение по функциональным подсистемам, взаимодействующим друг с друг в рантайме. Это одно из самых сложно понимаемых разбиений, поскольку часто границы функциональных подсистем проходят поперек других, более интуитивно понятных разбиений. Для иллюстрации функционального разбиения часто в качестве примера приводят ножницы - тут есть три конструктивные части (два ручколезвия и скрепляющий их винтик), и две функциональные части - режущая и управляющая.
- Разбиение по архитектурным "слоям", когда базовые, низкоуровневые слои предоставляют функциональность для реализации слоям на более высоком уровне абстракции.
- По исполнителям - какой исполнитель или какая организация отвечает за создание и поддержку той или иной части системы.
- В конце концов, разбиение по ограниченным контекстам в соответствии с моделированием бизнес-доменов.
Этот список явно не исчерпывающий, он лишь иллюстрирует, что нет одного "канонического" способа представления архитектуры. Мы выбираем те способы разбиения, которые удобны и полезны для решаемой задачи. Иногда удобно делать так, чтобы границы разбиений совпадали, например неудобно один модуль размазывать по нескольким репозиториям, но часто границы разных разбиений проходят совершенно в разных местах...
Post #144
331
- 👍 5
- ✍ 1