Привет, друзья! На связи Даниил, я руководитель направления ИТ-архитектуры и хочу поделиться с вами опытом в выборе архитектуры для продуктовой реализации. Сразу скажу, что я приверженец кайдзен — поэтому рассказывать буду с точки зрения философии непрерывных улучшений и совершенствования бизнес-процессов.

Эта статья — часть серии, где я буду делиться практическими подходами к построению современных продуктовых решений: от выбора архитектуры и технологий до логирования в условиях ограничений. Но сейчас поговорим именно о выборе архитектуры.

я не описываю в статье процесс создания продукта или публикации в Росреестре, а рассказываю о выборе технологий, архитектуры разработки и развития продукта на основе личного опыта.

Изображение выглядит как мультфильм, искусство  Контент, сгенерированный ИИ, может содержать ошибки.
Кайдзен — это японская философия

Я часто замечаю одни и те же ошибки в различных решениях — как по работе, так и в жизни. Зачастую многие думают, что сейчас сделают прототип, а потом допилят, но не учитывают, как будет развиваться решение и что лучше взять за основу. Поэтому эта статья будет полезна не только архитекторам при выборе основы, но и разработчикам для понимания более важных и ценных задач. А также проектным менеджерам — чтобы создать верную стратегию развития.

Разберём на примере — к вам приходит задача:

Перенести часть системы из альфа продукта в новую экосистему бета с сохранением функциональности и новых потребностей запроса пользователей по шаблону через конструктор запросов в UI.

Для работы по кайдзен я использую элементы подхода TOGAF, в частности — подход к описанию бизнес-способностей (business capabilities). Он помогает понять, какие компетенции и процессы формируют ценность компании и где лежат точки роста. На основе этого можно развивать систему поэтапно и детализировать архитектуру каждого слоя.

Но изучение всего подхода может занять больше времени, чем поиск истины в философии дзена или путешествие по древним храмам Китая в поисках себя. Поэтому вместо этого мы просто обращаемся к концепции Agile и ее этапу стратегического планирования архитектуры системы. Почему? Потому что основные идеи Agile:

  • люди и общение важнее процессов и инструментов;

  • работающий продукт важнее исчерпывающей документации;

  • готовность к изменениям важнее следования плану.

  • сотрудничество с заказчиком важнее согласований условий контракта

Место архитектуры в Agile на этапе проектирования
Место архитектуры в Agile на этапе проектирования

На этом и сосредоточимся: люди и общение нужны для создания работающего продукта, который может меняться.

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

Ключевые преимущества стратегической архитектуры для Agile-предприятия

  • Понимание контекста организации, чтобы определять стратегические темы и направления.

  • Выявление потоков ценности и требований.

  • Подтверждение принципов, определяющих границы продукта или услуги.

  • Определение организационных возможностей: навыков, инструментов, управления.

  • Формирование целостного представления об архитектурном ландшафте для дорожных карт планирования миграции, если есть слабосвязанные компоненты. Это позволяет реализовать взаимодействие между командами и интеграцию.

  • Создание информационной базы, чтобы планировать следующие этапы. Это облегчает детализацию задач и построение планов развития.

В свою очередь, стратегическая архитектура создает основу для архитектурных приложений более низкого уровня в архитектуре сегмента (в функциональной области, в которой мы проектировали). Если сконцентрироваться на пункте «выявление потоков ценности и требований» — ключевой шаг в подходе SAFe, который позволяет связать архитектуру с бизнес-результатами. В отличие от классического TOGAF, где акцент делается на формальную последовательность фаз и артефактов, как-раз набор готовых шаблонов в SAFe обеспечивает постоянную синхронизацию между бизнесом и командами. Это делает архитектуру не статичной схемой, а живой моделью, которая развивается вместе с продуктом.

Чтобы понимать достижение своих показателей, мы анализируем : карту бизнес способностей (business capabilities) компании и потоки ценностей (value streams). На основе этого формируется целевая архитектура. Это описание будущего состояния функциональной области, где определены взаимосвязи, требования и ожидаемые изменения. Именно она становится ориентиром для Agile-команд.

Чтобы оценивать достижение показателей и понимать, где развивать бизнес, мы начинаем с анализа бизнес-способностей — того, что компания умеет делать сегодня и какие процессы можно автоматизировать или улучшить. На основе этого строим целевую архитектуру — не просто перечень решений, а взаимосвязанную модель бизнес-способностей и ИТ-систем, показывающую, как существующие процессы будут меняться и в какой целевой вид должны перейти.

Изображение выглядит как текст, снимок экрана, диаграмма, Шрифт  Контент, сгенерированный ИИ, может содержать ошибки.
Пирамида архитектуры и зависимостей

Компоненты архитектуры предприятия

Основная часть Flow

  1. Сбор требований. Многие его игнорируют, говорят: «Я же технарь». Но без понимания задачи и потребностей заказчика разработка рискует стать бессмысленной — это будет «путь самурая» (как мы знаем у самурая нет цели, а есть только путь — но это не то, что нам нужно).

  2. Оформление требований. Собрать — половина дела, важно оформить их в виде нефункциональных требований (НФТ) и прописать ожидаемые уровни обслуживания (SLR). Нам это поможет на цифрах понимать критерии и ограничения, а не опираться на субъективное мнение.

  3. Факторная модель вариантов решения и «верхнеуровневая» оценка. Это поможет структурировать информацию о возможных решениях, сравнить альтернативы и принять обоснованное решение с учётом критериев и ограничений. Так мы снизим риски — выявим потенциальные проблемы заранее и минимизируем их.

  4. Выбор варианта в зависимости от стратегии. Это покажет, какое решение будет наиболее эффективным для наших целей, поможет сфокусироваться на приоритетных задачах и оптимально использовать ресурсы.

  5. Декомпозиция. Когда мы уже выбрали варианты, нам нужно сделать декомпозицию и определить зависимости в задачах, чтобы планировать следующие шаги и управлять реализацией проекта.

Только после этого можно приступить к разработке, чтобы не делать работу ради работы, а создать ценный для бизнеса продукт. Знаю, что многие привыкли делать по-старому, но технологии развиваются. Поэтому советую подходить к этому упражнению каждый раз, смотреть на решения свежим взглядом и собирать все НФТ как впервые.

Переходим к процессу

1.     Мы всё собрали — и что дальше?

На этом этапе важно не просто зафиксировать требования, но и сохранить работоспособность существующей системы, если речь идёт о переносе функциональности. Поэтому мы моделируем текущее состояние (As-Is) с описанием бизнес-процессов и потоков данных, а затем проектируем целевое (To-Be) — с новой архитектурой и связями. Это помогает не потерять функции, данные и зависимости при миграции, а также задать основу для будущего развития.

Вспомним нашу задачу (тут ссылка на прокрутку). Допустим, по ней мы собрали такие требования:

  • все текущие отчёты должны остаться;

  • скорость должна стать быстрее, а то долго ждать, когда отчёт выгрузится;

  • хотим оптимизировать команду, а то слишком много команд делают одно и тоже;

  • хотим быстро получать новый отчёт и не ждать разработки по полгода;

  • возможно, будем эту функциональность использовать и в других системах.

Под такие обширные требования можно предложить практически что угодно. Нам нужно больше конкретики — поэтому мы добавили нефункциональные требования (НФТ) и прописали ожидаемые уровни обслуживания (SLR).

2. Как мы добавили конкретики и прозрачности?

  • Используем на основании готовых отчётов рассчитанные меры в виде различных агрегатных функций: сумма, среднее, максимальное и 3х шаблона. В системе должна быть возможность загрузить шаблон в формате XSLS и указать, какие меры и куда заполнять.

  • Скорость открытия страницы 3s устроит бизнес. Но если будет более 5s — уже будет некомфортно, т. е. SLR отклика системы 3–5s при условии максимальной нагрузки.

  • В системе будет одновременно 100 работающих сотрудников, и она должна работать стабильно.

  • Стек технологий должен использоваться аналогичный текущему решению.

  • В системе должен быть конструктор запросов для администратора.

  • Запланированные постепенные тиражирования и система должна иметь возможность масштабирования и иметь слабые связи, т.к. должна быть отдельным независимым сервисом.

Выжимаем из этого получившиеся технические требования и возможности самой компании:

  • только технологии, разрешенные в компании, т.к. не готовы ждать апробации новых решений;

  • первоисточник данных должен иметь возможность также масштабироваться, т.к. объём данных планируется увеличивать в разы.

1.     Что с этим делать и как найти варианты?

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

Из требований мы выделили несколько частей реализации для себя:

  • часть, отвечающая за источник данных — так как есть требования о том, что он может поменяться и на него вырастет нагрузка;

  • часть, отвечающая за препроцессинг и расчёт мер, с учётом неохотной скорости реализации и ожиданий пользователей;

  • часть самого конструктора, которая должна подключаться к источнику данных и встраиваться как независимый сервис в новое приложение;

  • внутренние сервисы, которые должны предоставить возможность генерации отчётов на основе запросов из конструктора.

Мы собрали все требования в таблицу, немного их декомпозировали на встрече с архитекторами, и у нас появились идеи реализации. Всю задачу разбили на 3х крупных блока:

  1. интерфейс – далее не рассматривается

  2. интеграция и взаимодействия с данными – далее рассматриваем выбор

  3. работа с данными – далее нет описано в статье

Тут рассмотрим не все части, а только интеграция и взаимодействия с данными, т.к. это более важная часть, которая даёт требования к источнику данных и подключаемым интерфейсам.

Таблица с факторной моделю сравнения вариантов решения
Таблица с факторной моделю сравнения вариантов решения

Полдела сделано, и мы уже понимаем, какие варианты у нас есть. Выбираем по факторам, подсвеченным в таблице.

Для архитекторов существует множество инструментов, которые помогают учитывать нотации моделирования архитектуры и различные факторы при проектировании решений. Среди них можно выделить ArchiMate и ARIS — они дают возможность визуализировать и анализировать архитектуру системы, учитывая её сложность и взаимосвязь компонентов. Однако есть и более простые решения, такие как Draw.io или PlantUML. Они могут быть полезны для создания базовых диаграмм и схем, но их функциональность ограничена по сравнению с более продвинутыми инструментами.

Важно понимать, что выбор инструмента зависит не только от его возможностей, но и от основных принципов моделирования архитектуры. Необходимо учитывать специфику проекта, требования к системе и цели. Только тогда можно выбрать наиболее подходящий инструмент для проектирования.

Изображение выглядит как диаграмма, снимок экрана, текст, План  Контент, сгенерированный ИИ, может содержать ошибки.
концептуальная схема реализации

Схема MVP приложения

Так мы с вами получаем несколько DRAF вариантов реализации с верхнеуровневой оценкой и сразу отвечаем на вопрос — как будет проходить интеграция, какие компоненты и где нужно размещать.

Конечно, тут нужна оценка задачи. К примеру, мы сразу можем понять, что третий из вариантов самый дорогой и бизнес к нему не готов. А некоторые варианты могут содержать технологии, несогласованные в компании — в нашем случае это варианты 4.1 и 5.

При выборе учитываются такие критерии, как стоимость владения, гибкость доработки, интеграция с текущими системами, безопасность и поддержка в долгосрочной перспективе. В нашем случае мы выбрали гибридное решение в виде собственной сборки на основании open-source компонентов, но при этом регулярно анализируем рынок, чтобы понимать, какие готовые решения могли бы закрыть будущие задачи быстрее и выгоднее. Обязательно всегда учитывайте в выборе факторов все решения, в данном примере выбор был только из тех которые вошли в бюджет.

4.     Как выбрать вариант?

«Был бы бюджет, можно сделать всё! Но попробуйте то же самое без денег», — скажут вам. Цена, качество и скорость — частый компромисс в архитектуре, да и в жизни.

Изображение выглядит как текст, снимок экрана, круг, Шрифт  Контент, сгенерированный ИИ, может содержать ошибки.
Соотношения качество, скорости и цены

Для объективного выбора я обычно использую подход Cynefin. Он особенно актуален для современных ИТ-руководителей, которым приходится сталкиваться с запутанностью, порой даже парадоксальностью, хаосом и неопределенностью, что не снимает с них необходимость принимать управленческие решения. Каждый может доработать подход под себя.

Изображение выглядит как текст, снимок экрана, Шрифт, линия  Контент, сгенерированный ИИ, может содержать ошибки.
Распределение на схеме задач в соответствие с пониманием и возможностью контроля

Модель Cynefin

Процесс очень простой и интересный. Нужно разбить доску на четыре квадрата по следующему принципу:

  • всё, что выше — очень важно для бизнеса;

  • всё, что ниже — не очень важно;

  • слева — то, что дёшево;

  • справа — то, что дорого.

Изображение выглядит как текст, Самоклеющийся листок, снимок экрана, Шрифт  Контент, сгенерированный ИИ, может содержать ошибки.
Фактическое распределение на схеме задач в соответствие с пониманием и возможностью контроля

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

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

И, как мы видим, второй вариант проигрывает из-за отсутствия компетенций и понимания технологии — мы не сможем развивать далее все красные стикеры, а синие передвинуть влево. А варианты 1 и 4 на удивления близки к реализации.

Советую как классический метод Cynefin, так и его вариации.

  • Расширение количества доменов. В классической модели Cynefin есть четыре домена: «известное» (Simple), «запутанное» (Complicated), «сложное» (Complex) и «хаос» (Chaos). В некоторых вариациях добавляют пятый домен — «порядок» (Order) или рассматривают другие возможные состояния систем.

  • Интеграция с другими методологиями. Метод Cynefin можно комбинировать с такими подходами и инструментами, как Agile, Lean, Design Thinking и другими, чтобы создать более комплексную и эффективную систему управления.

  • Разработка новых инструментов и техник. На основе метода Cynefin можно создавать новые инструменты и техники для анализа и решения сложных проблем, например, модифицированные диаграммы, шаблоны и т. д.

  • Адаптация под специфические задачи. В зависимости от конкретной задачи или проекта можно адаптировать метод Cynefin, изменяя его параметры, критерии и подходы к анализу и решению проблем.

5.     У нас осталось два варианта. Как выбрать оптимальный и чем можно пожертвовать?

Не существует универсальных решений, которые подошли бы для любой ситуации. Выбор всегда зависит от конкретных условий и времени.

Для принятия решения я советую следующую методику: разделить факторы на несколько критериев. Это поможет систематизировать информацию и упростить процесс выбора. Критерии могут быть такими:

  • работает и без — факторы, которые уже функционируют и не требуют дополнительных изменений или вложений;

  • сможем добавить — факторы, которые можно внедрить или улучшить в будущем;

  • не сможем развивать — факторы, развитие которых невозможно или нецелесообразно по каким-либо причинам;

  • нужно для старта — факторы, необходимые для начала работы или реализации проекта.

В оценке можно использовать следующие методы:

  • экспертная оценка — привлечение экспертов для получения профессионального мнения и анализа ситуации;

  • мозговой штурм — коллективное обсуждение и генерация идей;

  • теория игр — анализ возможных стратегий и последствий;

  • метод декомпозиции — разделение сложной проблемы на более простые составляющие и детальный анализ.

В нашем случае основное отличие двух оставшихся вариантов только в движке, который будет выступать за препроцессинг и подготовку данных.

 

Вариант 1

Вариант 4

Экспертная оценка

Считаем, что на текущую схему базу данных можно настроить без доработок или переработок.

 

Считаем, что на текущую схему базу данных можно настроить без доработок или переработок.

 

Мозговой штурм

Решили, что можно масштабировать добавлением новых нод в кластере.

 

Решили, что однозначно можно будет масштабировать.

 

Теория игр

Стратегически использование языка и технологии даёт больше экспертизы и возможности доработок.

Стратегически компания использует, но нет компетенций у конкретной команды.

Декомпозиция

Можно реализовывать поэтапно — нет зависимостей и пользователь сможет получать реализацию порциями и раньше.

 

Не смогли получить порционные реализации меньшего размера относительно варианта 1.

Вот таким нехитрым способом у нас остался только вариант 1!

6.     Декомпозируем и оцениваем?

Наконец мы выбрали вариант для реализации, и что же делать дальше?

Надпись: 30 m
Приключение на 20 минут - вошли и вышли

Морти, конечно, молодец, но нам нужна не импровизация, а системность. Мы определяем стратегическую архитектуру, а затем формируем спецификацию для команд разработки. Это документ, описывающий, что и как должно быть реализовано – своего рода техническое задание (ТРЗ), где фиксируются функциональные и нефункциональные требования, оценка трудозатрат и приоритеты задач. Такой подход помогает командам реалистично планировать и фокусироваться на результате в рамках архитектурных принципов.

Распределение времени в идеальном мире:

  • 4 часа (50%) — программирование и написание кода;

  • 30 минут (6.25%) — перерывы;

  • 1 час (12.5%) — код-ревью и обмен знаниями;

  • 1 час (12.5%) — координация и планирование;

  • 1,5 часа (18.75%) — обучение и саморазвитие.

Распределение времени в идеальном мире
Распределение времени в идеальном мире

Но распределение времени сотрудника не так линейно. Поэтому не забываем, что даже чистые 4 часа у нас не получится заложить 😉

Можно долго рассуждать о переключении контекста и концентрации на одной задаче. Но чтобы эффективно организовать работу, достаточно просто использовать дорожную карту. На ней следует спланировать задачи, обозначить их зависимости и расставить приоритеты в соответствии с их значимостью.

Также важно определить результат в каждом случае. Это поможет команде сосредоточиться на наиболее важных задачах и чётко понимать, к чему нужно стремиться.

Диаграмма Ганта: как построить график управления проектом с помощью Excel и  онлайн-инструментов - Журнал Mindbox о разумном бизнесе
Диаграмма Ганта, график управления проектом с помощью визуализаций зависимостей и задач

Так мы с вами выберем нужный вариант и поймем, к какому сроку какую часть задачи мы сможем показать бизнесу.

Итоги

  1. При создании продуктового решения для меня важно учитывать принципы философии кайдзен, которая предполагает постоянное совершенствование бизнес-процессов.

  2. В выборе архитектуры и технологий для разработки продукта учитывайте стратегические цели и возможности организации.

  3. Подход TOGAF и концепция Agile могут быть полезны для проектирования и развития системы поэтапно, с возможностью адаптации к изменениям.

  4. Сбор и анализ требований, включая нефункциональные требования и ожидаемые уровни обслуживания — это ключевые шаги для успешного проектирования.

  5. Структурировать информацию и выбрать подходящий вариант помогут факторная модель вариантов решения и верхнеуровневая оценка.

  6. Выбирайте вариант решения на основе стратегии развития и учитывайте приоритеты и ресурсы организации.

  7. Декомпозиция и определение зависимостей в задачах помогают эффективно планировать и управлять реализацией проекта.

  8. Инструменты для моделирования архитектуры, такие как ArchiMate и ARIS, могут помочь визуализировать и анализировать архитектуру системы.

  9. Выбор инструмента для моделирования зависит от специфики проекта, требований к системе и целей.

  10. Принять обоснованное решение помогут такие методы, как экспертная оценка, мозговой штурм, теория игр и метод декомпозиции.