Может ли программист досконально знать и, главное, точно понимать все аспекты бизнеса своего заказчика? Это возможно, но на приобретение узкопрофильных знаний нужно потратить много времени. При этом 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-компаниями или внутренними командами инженеров в любой отрасли позволит бизнесу получать более продуманный и соответствующий реальным потребностям конечный продукт, который проще не только понять, но и дорабатывать и сопровождать, что даст возможность сэкономить ресурсы и деньги компании.
➤ Подписывайтесь на телеграм-канал «РБК Трендов» — будьте в курсе последних тенденций в науке, бизнесе, обществе и технологиях.