🧱 FDAP подтверждает, что разработчики отлично умеют выделять абстракции и переиспользовать технические модули. Этому, на мой взгляд, сильно завидует размытая бизнес-идея «IT как LEGO», предполагающая возможность быстро создавать новые продукты из уже проработанных решений. Однако, обычно процесс оказывается не таким уж быстрым.
🧩 Идея всеобщей переиспользуемости быстро захватывает умы, когда затрагивается тема «IT как Lego». Вдобавок к библиотекам, фреймворкам и aaS-сервисам, которые упрощают процесс разработки, начинается активное переиспользование бизнес-логики и данных. Также происходит построение целых бизнес-платформ.
🔗 Вынос бизнес-логики приводит к сильной зависимости вашего продукта от “общих” решений. Реализация определённых бизнес-функциональностей может потребовать привлечения дополнительной команды разработчиков и интеграцию в их поток задач. Это, в свою очередь, увеличивает время вывода продукта на рынок, что противоречит обещанию сокращения сроков за счёт переиспользования. Как этого избежать? Здесь я бы рекомендовал применять принципы DDD (Domain-Driven Design) и научиться различать Core, Supporting и Generic домены, чтобы не вынести лишнее из своего решения.
📊 Вынос данных ведёт также к передаче ответственности. Обеспечение качества и свежести информации возлагается на “общее” решение. Это бывает посложнее, чем поддержка чужой бизнес-логики. Возникает необходимость в формировании экспертизы с параллельным взглядом на данные, а также создании единой модели данных для компании, что также противоречит идеям, заложенным в DDD.
🔄 А что если каждый продукт сможет подписываться на данные соседних решений, обогащать их новыми бизнес-данными, про которые он точно лучше знает, так как строит на них свой продукт, и публиковать их дальше для нуждающихся? Это позволит построить децентрализованное решение, но при этом сохранит доступ к данным для заинтересованных соседних продуктов в рамках некой data-платформы. Это также стимулирует формирование своего уникального представления в своем ограниченном контексте. Осталось только разработать data-платформу с аналогичным функционалом.
❓ На что-то похоже… Не Data Mesh ли это?