DevLearn logo
Skill Up With Me
Interactive Learning
Signing in…

Роль архитектора и типы архитектур (Solution vs System)

🔒 Sign in to use this

Архитектура программного обеспечения — это совокупность значимых решений об организации системы: выбор структурных элементов и их интерфейсов, описание их поведения в рамках взаимодействия, а также объединение этих элементов в подсистемы всё возрастающего масштаба. Но прежде чем погружаться в стили и паттерны, необходимо разобраться, кто принимает эти решения и почему разные контексты требуют разных ролей. В этом уроке мы рассмотрим работу архитектора, необходимые для неё навыки и таксономию типов архитектур, с которыми вы встретитесь на практике.

ℹ️Архитектура — это не про рисование квадратиков и стрелок. Это про принятие компромиссных решений, которые дорого обходится откатить. Главный навык архитектора — не технические знания, а умение рассуждать о компромиссах в условиях неопределённости.
Чем на самом деле занимается архитектор?

Расхожий образ архитектора — человека, который спускает схемы с небес и раздаёт указания командам, — давно устарел. Современные архитекторы работают в четырёх взаимопересекающихся измерениях: техническое лидерство, проектирование систем, коммуникация внутри организации и непрерывное обучение. Они определяют атрибуты качества (производительность, масштабируемость, безопасность, сопровождаемость), переводят бизнес-цели в структурные ограничения, наставляют команды разработки и берут на себя ответственность за решения, которые иначе принимались бы несогласованно в разных командах.

Нажмите на карточку, чтобы узнать, на что архитекторы тратят время
⚖️
Архитектурные решения
🔄
Анализ компромиссов
🗣️
Коммуникация на всех уровнях
🧑‍🏫
Развитие команды
📋
Архитектурное управление
📚
Непрерывное обучение
Матрица навыков архитектора

Архитектура — одна из немногих ролей, требующих одновременно и предельной глубины, и предельной широты. Старший инженер может быть мировым экспертом в одной области; архитектор должен быть компетентен во многих. Классическая метафора — T-образный набор навыков: глубина хотя бы в одной технической дисциплине, но достаточная широта, чтобы убедительно говорить о других. Марк Ричардс и Нил Форд добавляют второе измерение: анти-паттерн «замороженного пещерного человека» описывает архитекторов, которые перестали расширять кругозор и теперь применяют десятилетние решения к современным задачам.

Сравните профили навыков на разных уровнях
Область навыковСтарший инженерSolution-архитекторEnterprise-архитектор
Техническая глубинаЭксперт в 1–2 областяхЭксперт в одной, компетентен во многихШирокий кругозор, глубина в архитектуре
Проектирование системВ рамках одного сервисаПродукт или ограниченный доменБизнес-подразделения и портфели
Согласование с бизнесомРедкоРегулярноКлючевая ответственность
Коммуникация со стейкхолдерамиТехнические коллегиDev-команды + продакт-менеджерыC-level, совет директоров, вендоры
Технологическая стратегияВлияет на выборы командыОпределяет стек продуктаОпределяет стандарты организации
Полномочия в решенияхЛокальные / тактическиеНа уровне продуктаУровень организации, многолетний горизонт
Типичный горизонтСпринт / фичаКвартал / продуктГод / портфель
Типы архитектур: общая картина

Архитектура — не одна дисциплина, а семейство взаимопересекающихся задач на разных масштабах. Два наиболее часто смешиваемых в индустрии типа — Solution Architecture и System Architecture (она же Software Architecture). Понимание разницы критично: каждый из них работает на своём уровне охвата, отвечает на разные вопросы и производит разные артефакты.

Наведите курсор на кольцо, чтобы увидеть, на каком уровне оно работает
Enterprise-архитектураSolution-архитектураСистемная / программная архитектура
Наведите курсор на кольцо, чтобы увидеть, на каком уровне оно работает
Solution- vs System-архитектура: детальный разбор

Эти два типа часто путают, хотя они отвечают на совершенно разные вопросы. Solution-архитектура спрашивает: «Какие системы, сервисы и вендоры мы объединяем, чтобы решить эту бизнес-задачу, и как они соединяются?» Системная архитектура спрашивает: «Как мы структурируем внутреннее устройство конкретной системы, чтобы она соответствовала функциональным и нефункциональным требованиям?» Solution-архитектор рисует карту; системный архитектор проектирует кварталы города.

Когда включается каждый тип

Solution-архитектура включается, когда новая бизнес-инициатива требует объединить несколько систем — существующих и новых. Например: компания хочет запустить функцию мобильных платежей. Solution-архитектор выстраивает поток: мобильное приложение → API Gateway → Payment Service (новый) → существующая CRM → сторонний платёжный процессор → сервис уведомлений. Он выбирает паттерны интеграции (REST vs gRPC vs очереди сообщений), определяет владельцев данных, оценивает риск vendor lock-in, составляет смету расходов и представляет архитектуру стейкхолдерам. Как именно построен Payment Service внутри — не его задача. Системная архитектура включается, когда область применения уже ограничена. Команда, строящая Payment Service, должна решить: какие слои у него есть, как он тестируется, какова схема базы данных, как он обрабатывает сбои, каковы его SLO. Системный архитектор (нередко им выступает Tech Lead) принимает эти решения в тесном взаимодействии с командой разработки. В небольших компаниях роли часто совмещаются — один человек может делать и то, и другое, — но различие в образе мышления остаётся справедливым независимо от должностей.
Триггер — бизнес-инициатива
Интеграция нескольких систем
Решения по вендорам и стоимости
Внутренняя структура одной системы
SLO и обработка сбоев
Взаимодействие с Tech Lead
Другие типы архитектур, с которыми вы столкнётесь
Нажмите на карточку, чтобы понять область применения и артефакты каждого типа
🏛️
Enterprise-архитектура (EA)
🗄️
Архитектура данных
🔐
Архитектура безопасности
☁️
Инфраструктурная / облачная архитектура
Архитектурные fitness-функции

Нил Форд, Ребекка Парсонс и Патрик Куа ввели концепцию «эволюционной архитектуры» — архитектуры, которая направляет изменения, а не противится им. В её основе лежит fitness-функция: объективная функция, измеряющая, насколько текущая архитектура соответствует конкретной архитектурной характеристике. Fitness-функции могут быть автоматизированными тестами (проверка нежелательных зависимостей, верификация SLO времени отклика), ручными процессами (аудиты безопасности) или метрическими дашбордами. Ключевой инсайт: архитектура — это не единоразовое проектирование, а непрерывное свойство системы, которое необходимо активно поддерживать и измерять.

Нажмите на подсвеченные строки, чтобы понять, как fitness-функции реализуются на практике
java
1
// ── Fitness-функция зависимостей через ArchUnit ──────────────────
2
@ArchTest
3
static final ArchRule NO_DOMAIN_DEPENDS_ON_INFRA =
4
  noClasses().that().resideInAPackage("..domain..")
5
    .should().dependOnClassesThat()
6
    .resideInAPackage("..infrastructure..");
7
8
// ── Fitness-функция производительности (JMeter / Gatling) ───────
9
// assert p99 latency < 200ms for /api/checkout
10
// assert error rate < 0.1% under 500 concurrent users
11
12
// ── Fitness-функция безопасности ─────────────────────────────────
13
// OWASP Dependency Check: no HIGH CVEs in production deps
Распространённые заблуждения о роли архитектора
Нажмите на карточку — это реальные анти-паттерны из реальных команд
🏰
Архитектор из башни из слоновой кости
🚧
Узкое место для решений
💻
Архитектор, не пишущий код
📄
Архитектура для резюме
🕐
Игнорирование последних 10%
📐
Большой предварительный дизайн
От разработчика к архитектору: переход

Большинство архитекторов приходят из разработки — и переход сложнее, чем кажется. Навыки, сделавшие вас отличным разработчиком (глубокая техническая фокусировка, решение конкретных задач, поставка работающего кода), необходимы, но недостаточны для архитектуры. Переход требует развития новых «мышц»: системного мышления (как это решение повлияет на систему через десять шагов?), работы со стейкхолдерами (как согласовать людей с конкурирующими интересами?) и комфорта с неопределённостью (как принять правильное решение, не имея всей нужной информации?).

Сдвиг мышления: разработчик → архитектор

Главный сдвиг — от «как мне это построить?» к «какие компромиссы нам стоит принять?». Разработчик оптимизирует в рамках ограничений; архитектор определяет сами ограничения. Разработчик добивается успеха, поставляя рабочие фичи; архитектор — обеспечивая, что система сможет продолжать поставлять фичи ещё через несколько лет. Конкретно: разработчик, обнаружив проблему с производительностью, тянется за более быстрым алгоритмом или кэшированием. Архитектор спрашивает, не является ли проблема производительности симптомом архитектурного несоответствия — возможно, данные идут не через тот сервис, или была выбрана не та технология хранения. Разработчик мыслит на уровне метода; архитектор — на уровне границ системы. Ни один из взглядов не является полным без другого, поэтому лучшие архитекторы никогда полностью не перестают думать как разработчики.
Системное мышление
Согласование стейкхолдеров
Комфорт с неопределённостью
Рассуждение о компромиссах
Определение ограничений
Мышление на длинный горизонт
Главный вывод: основной продукт архитектора — не диаграмма, а набор хорошо обоснованных, явно задокументированных решений, позволяющих системе эволюционировать со временем. Роль требует технической глубины, широты кругозора, коммуникативных навыков и организационного мужества. Solution-архитектура и системная архитектура — разные, но взаимодополняющие дисциплины, каждая из которых работает на своём уровне охвата и отвечает на разные вопросы.
ℹ️Что дальше: теперь, когда мы понимаем, кто принимает архитектурные решения и на каком уровне, следующие уроки посвящены принципам, которыми руководствуются эти решения — начиная с SOLID, фундаментального набора принципов объектно-ориентированного проектирования, лежащего в основе большинства архитектурных паттернов.
🔒 Sign in to use this