Предметно-ориентированное проектирование: почему это выгодно бизнесу
Может ли программист досконально знать и, главное, точно понимать все аспекты бизнеса своего заказчика? Это возможно, но на приобретение узкопрофильных знаний нужно потратить много времени. При этом IT-специалисты сейчас не работают в одной компании годами, как это было раньше. Поэтому бизнесу приходится перестраивать подходы к разработке и сопровождению программного обеспечения (ПО) так, чтобы новые сотрудники могли максимально быстро погрузиться в предметную область, с которой им предстоит работать.
В этом случае решением может стать предметно-ориентированный подход к проектированию ПО или Domain-Driven Design (DDD) — именно так звучит название подхода в оригинале. В основе этого подхода — тесное сотрудничество бизнес-экспертов и разработчиков. Эксперт посвящает команду в особенности и логику предметной области, участвует в проектировании IT-решения. Это помогает разработчикам быстрее и лучше понимать требования бизнеса.
Предметно-ориентированное проектирование используют в своих решениях многие иностранные вендоры, такие как Amazon, Oracle, SAP, Microsoft и др. На российском рынке одним из примеров практического применения DDD является решение Platform V DataSpace — low-code-инструмент от российского разработчика ПО «СберТеха».
Что такое предметно-ориентированное проектирование
Предметно-ориентированное проектирование — это подход к разработке ПО, основанный на глубоком понимании и моделировании предметной области (домена) с использованием единой терминологии.
В основе DDD лежит концепция домена (domain) — области знаний или сферы деятельности, которую необходимо моделировать в процессе разработки ПО. Например, система управления складом: доменная модель может включать такие сущности, как товары, заказы, клиенты, поставщики и т.д. Каждая сущность будет иметь свои свойства и методы, отражающие их поведение в реальной жизни. Например, товар может иметь уникальный идентификатор, цену, количество на складе и т.п.
Целью подхода является создание систем, которые максимально точно отражают в своей архитектуре логику реального бизнеса. Заметим, что создаваемая система моделей должна учитывать сложные и многоуровневые взаимоотношения объектов внутри функционирующей организации. Например, проектирование CRM-системы: доменная модель CRM-системы может включать клиентов, сделки, задачи, контактные данные и т.д. Каждая сущность связана с определенным контекстом и действиями, которые могут быть выполнены над ней. Задача может быть назначена на конкретного сотрудника, выполнена или перенесена на другой срок.
Плюсы и минусы предметно-ориентированного проектирования
Активное развитие предметно-ориентированного проектирования связано с тем, что подход помогает справляться с возрастающей сложностью современных приложений. Рассмотрим, какие преимущества дает он бизнесу.
Речь идет о концептуальном подходе, а потому любые сильные и слабые стороны находятся в зависимости от навыков команды, создающей решения с использованием DDD.
Преимущества
- Пожалуй, главным аргументом для заказчика будет лучшее понимание требований его бизнеса именно теми командами разработчиков, которые применяют DDD, что позволит получить на выходе более качественное и продуманное решение.
- Другой важный фактор — повышение производительности: хорошо спроектированные модели позволяют сократить время разработки и повысить производительность системы.
- Решения, полученные на основе DDD, обладают важными качествами — простотой масштабирования и кастомизации: при соблюдении правил проектирования развивать систему в дальнейшем будет гораздо проще и дешевле, так как модульная структура позволяет легко добавлять новые функции и изменять существующие без значительных переделок.
Резюмируя, можно сказать: наиболее важной и сильной стороной предметно-ориентированного подхода является простота и экономическая эффективность последующего сопровождения. Развитие и доработка IT-решений, созданных с использованием DDD, требуют меньше ресурсов, ввод новых разработчиков в проект происходит легче и быстрее.
Виктор Бирюков, директор по технологиям дивизиона визуальных средств разработки «СберТеха»:
«Можно просто написать ТЗ на разработку с требованиями, что и как надо сделать, определить сущности, связи и параметры, а потом дать это программистам. На выходе что-то получится и даже как-то будет работать. А можно усадить их за один стол с бизнес-экспертами и дать инструменты для совместного создания и описания домена, определить правила игры и терминологию общения. Суть и ценность самого подхода даже не в том, что кто-то из разработчиков не смотрит или не знает про контекст и модель предметной области, а в правильной организации взаимодействия между разработчиками и бизнесом».
Однако эксперты отмечают, что эффективность метода связана с необходимостью соблюдения правил проектирования, что логически приводит к вопросу ограничений в применении DDD.
Ограничения
Среди ограничивающих внедрение предметно-ориентированного проектирования факторов можно отметить его организационную сложность и трудоемкость. Значительные усилия и временные затраты требуются как от команды разработчиков, так и от бизнес-экспертов на начальных этапах проекта.
Принципиальный фактор — участие в процессах разработки доменных экспертов (экспертов предметной области / бизнес-экспертов), то есть специалистов, которые будут вводить программистов в курс дела. Если вы строите софт для управления бухгалтерией, то вам понадобится включить в команду разработчиков не только бухгалтера, но и юриста из этой сферы, а возможно, и других профессионалов. Подход будет способствовать улучшению коммуникации внутри команды и снижать риск возникновения ошибок, связанных с неправильным пониманием требований бизнеса, а итоговый результат будет напрямую зависеть от вовлеченности экспертов в новый процесс.
Виктор Бирюков, директор по технологиям дивизиона визуальных средств разработки «СберТеха»:
«Несмотря на очевидную сложность интеграции этой методологии в процесс разработки, особенно на начальных этапах, в это стоит вкладываться, чтобы проект в конечном итоге не превратился в Big Ball of Mud («большой комок грязи» — термин, использующийся для описания плохо спроектированной и неконтролируемо разрастающейся системы программного обеспечения)».
Компании, которые уже используют предметно-ориентированное проектирование
«Сбер»
Крупнейший банк в России, Центральной и Восточной Европе, один из ведущих финансовых институтов. Реализует DDD во многих проектах, включая зарплатные проекты, цифровые финансовые активы, кредитование и во многих других. Подход позволяет ускорить разработку, сократить время вывода сервисов в промышленную эксплуатацию и оптимизировать трудозатраты.
Taxdoo
Это компания, предлагающая комплексное решение в сфере бухгалтерского учета и налогообложения для бизнеса. Более 3 тыс. западных организаций используют сервис. Taxdoo работает с самой чувствительной зоной ответственности: помогает автоматически соблюдать международные правила НДС или проводить финансовый аудит без стресса. Исключить риски и поддерживать устойчивое ПО позволил именно предметно-ориентированный подход.
Uber
Международная компания, агрегатор службы такси, доставки и сопутствующих сервисов. Управляет порядка 2,2 тыс. микросервисов с помощью предметно-ориентированной микросервисной архитектуры (Domain-Oriented Microservice Architecture, DOMA).
Danske Bank
Компания предоставляет более чем для 3 млн клиентов не только банковские сервисы, но и IT-поддержку, финансовые услуги для бизнеса и продукты, связанные с риск-менеджментом. В 2023 году банк полностью перестроил свое ПО, используя предметно-ориентированное проектирование, и стал продвигать этот метод на рынке.
Популярность DDD в России
Конечно же, не существует статистической шкалы «проникновения предметно-ориентированного проектирования в бизнес-практику» в той или иной стране. Однако тематические источники и опрошенные нами эксперты свидетельствуют: подход известен нашим специалистам давно, и они применяют его на практике.
Мнения экспертов подтверждает ряд косвенных данных. Сервис «Яндекс Вордстат» демонстрирует растущий график количества запросов по ключевым словам domain-driven design начиная с 2018 года. Другой показатель — рынок труда, который дает оперативные сигналы по специалистам с определенными навыками. На HH.ru размещено порядка 850 тыс. резюме разработчиков, из них 4 тыс. содержат упоминание DDD.
Еще одним способом понять, насколько терминология DDD проникла в профессиональную коммуникацию отечественных программистов, может быть подсчет количества упоминаний этой аббревиатуры в материалах «Хабра». Если смотреть статьи, то упоминаний DDD будет порядка 7 тыс. (подсчет при помощи сервиса Google). Очевидно, тенденция на рост интереса к подходу (пусть и с небольшим запозданием относительно западных стран) подтверждается крупными отечественными компаниями, которые уже «раскусили» все возможные перспективы и преимущества.
Как устроен отечественный предметный софт
Для корпораций практическое использование DDD делает доступным, например, продукт Platform V DataSpace — low-code-инструмент с широкими возможностями поиска и получения данных, который обеспечивает возможность быстрого прототипирования и позволяет создавать безопасный backend для приложений любого уровня сложности.
Особенностью Platform V DataSpace является возможность работать с моделью предметной области в удобном визуальном редакторе, опираясь при этом на принципы DDD.
В основе этого решения лежат три концепции:
- low-code — метод разработки приложений с помощью графических инструментов, которые снижают профессиональные требования к написанию кода, ускоряют и удешевляют разработку;
- DaaS (Data-as-a-Service) — модель предоставления данных в качестве услуги клиентам через облачную платформу или API;
- BaaS (Backend-as-a-Service) — это облачная модель предоставления готовых серверных компонентов и функций для разработки приложений, таких как базы данных, аутентификация/авторизация пользователей, хранение файлов и push-уведомления, без необходимости настройки и поддержки собственной инфраструктуры.
В портфеле продукта большой набор кейсов для банковской и авиационной отраслей. Пример банковского кейса: в рамках проекта по созданию системы по управлению цифровыми финансовыми активами Platform V DataSpace помогает сохранять операционную информацию, а также обеспечивает необходимый набор требований надежности, безопасности и масштабируемости системы. Задачи, которые решает продукт:
- предметно-ориентированное проектирование;
- прикладная репликация (приведение нескольких баз данных в одно и то же непротиворечивое состояние, сопровождающееся взаимным внесением изменений);
- интеграция с корпоративной аналитической платформой;
- интеграция с централизованным хранилищем секретов;
- дедупликация клиентских данных (поиск и объединение записей в базе данных, которые относятся к одному и тому же человеку).
Согласно внутренней аналитике Platform V Data Space, подход DDD и применение продукта позволяют:
- сократить трудозатраты разработки до двух раз;
- уменьшить сроки выпуска новых сервисов до трех раз;
- оптимизировать ресурсы поддержки до пяти раз.
Кому пригодится предметно-ориентированное проектирование
Использование DDD потребует от компаний дополнительных усилий, чтобы освоить и начать применять его на практике, однако бизнес-эффекты, если судить по опыту названных выше компаний, могут значительно превысить вложения. Данный подход позволит новым разработчикам глубже погрузиться в контекст и быстрее понять задачи и цели бизнеса, а также повысить качество продукта. А бизнесу это позволит быть максимально эффективным, быстро адаптироваться к новым условиям и усилить кросс-функциональное взаимодействие между командами.
Если говорить про отраслевую применимость DDD, эта история не имеет подобной специфики, так как Domain-Driven Design — это подход. Использование его при разработке решений IT-компаниями или внутренними командами инженеров в любой отрасли позволит бизнесу получать более продуманный и соответствующий реальным потребностям конечный продукт, который проще не только понять, но и дорабатывать и сопровождать, что даст возможность сэкономить ресурсы и деньги компании.
➤ Подписывайтесь на телеграм-канал «РБК Трендов» — будьте в курсе последних тенденций в науке, бизнесе, обществе и технологиях.