Любой корпоративный ИТ-ландшафт состоит из множества приложений, большинство из которых имеет собственные базы данных. В этих базах хранятся информационные объекты, представляющие бизнес-объекты, события и фазы бизнес-процессов. Многие объекты бизнес-процессов имеют «отражения» сразу в нескольких базах данных: например, единица оборудования промышленного предприятия с разных точек зрения описана в системах бухучета, управления ремонтами и обслуживанием, управления производством и др.
Чтобы бизнес-приложения, автоматизирующие разные бизнес-процессы, могли как-то работать вместе, их необходимо интегрировать: внедрять продукты класса MDM (Master Data Management, система управления мастер-данными) и ESB (Enterprise Service Bus, корпоративная сервисная шина), позволяющие хоть как-то управлять обменом информацией между множеством разноплатформенных решений. Тем, кто занимался такой интеграцией, хорошо известно, что это долгий, сложный и неблагодарный труд.
А что, если найдется способ избавиться от всех интеграционных проблем разом? Такая «волшебная пуля» существует, и называется она — дата-центрическая архитектура. Ее основная идея состоит в том, чтобы сделать центральным элементом корпоративной ИТ-архитектуры не бизнес-приложения, а данные. Этот принцип изложен в Манифесте дата-центрической архитектуры и в книге The Data-Centric Revolution: Restoring Sanity to Enterprise Information Systems.
Представьте, что в компании существует единое виртуальное хранилище данных, в котором каждый бизнес-объект или событие существует в единственном экземпляре. Для наглядности можно вообразить, что идея системы MDM доведена до логически полного воплощения, и именно MDM является хранилищем всех корпоративных данных; бизнес-приложения не имеют собственных СУБД и работают только с объектами данных из MDM. Преимущества такой архитектуры очевидны:
Раз и навсегда отменяется необходимость в интеграционных процедурах.
Снижаются затраты на хранение данных за счет избавления от множества копий каждого бизнес-объекта в разных системах.
Упрощается аналитика и поддержка принятия решений, так как теперь для построения любого аналитического среза больше не нужно месяцами добывать и склеивать данные из разных систем — они всегда под рукой.
Повышается качество данных за счет избавления от неполных, не актуальных представлений бизнес-объектов.
Упрощается процесс замены одних бизнес-приложений на другие, потому что все они работают с одними и теми же данными. Можно легко и быстро создавать микро-фронт-энды для решения частных бизнес-задач.
«Это какая-то фантастика», скажут некоторые. Нельзя же выбросить все существующие бизнес-приложения и начать с чистого листа, вывернув наизнанку всю корпоративную ИТ-архитектуру?
Нужен плавный процесс перехода, и его вполне можно обеспечить, если думать о корпоративной платформе управления данными не только как о физическом хранилище, содержащем материализованные представления всех бизнес-объектов, но и как о логической витрине данных, способной извлекать эти объекты из любых хранилищ, в том числе баз данных и сервисов унаследованных бизнес-приложений. Клиенту платформы должно быть безразлично, где находятся нужные ему данные — в одном из множества хранилищ, спрятанных внутри платформы, или в СУБД какого-либо бизнес-приложения. На практике, вероятнее всего, нужный объект данных будет собран платформой в момент выполнения запроса из нескольких источников.
Итак, если на первом этапе построить платформу, работающую в режиме логической витрины данных, способную предоставить «прозрачный» доступ ко всем (или хотя бы ко многим) данным из существующих корпоративных систем, а затем постепенно мигрировать эти данные в виртуальное корпоративное облако — плавный переход к дата-центрической архитектуре будет успешным. Уже на первом этапе появится возможность создавать новые, дата-центрические приложения.
Чем такой подход отличается от создания «обычного» корпоративного облака данных (corporate data cloud) или озера данных (data lake)? Прежде всего — методологией использования платформы, особым вниманием к структуре данных и некоторой функциональной спецификой. Если обычный data lake часто представляет собой коллекцию наборов данных, созданных кем-то для решения конкретных задач и заведомо содержащих копию уже существующей где-то информации, то для дата-центрической архитектуры принципиально соблюдение принципа «один объект в реальном мире — один объект данных». И никаких физических срезов, по крайней мере персистентных...
Управление структурой корпоративных данных — отдельный и очень важный вопрос, которому часто уделяется слишком мало внимания. Задача описания структуры всей информации, с которой работает предприятие, может показаться настолько сложной, что никто и не думает ее решать; вместо этого создается множество структур данных под конкретные бизнес-задачи, что влечет очевидные последствия. Мы утверждаем, что эта задача может и должна решаться; она успешно решается на практике в конкретных проектах, нужно лишь использовать подходящие для этого технологии. Одним из возможных вариантов является описание структуры корпоративной информации с помощью онтологий (см. спецификацию OWL консорциума W3C).
Тема онтологического моделирования выходит за рамки этой статьи, отметим лишь, что одной из его ключевых особенностей является технологическая однородность самих данных и описания их структуры. Отсутствие привычного в реляционном мире разрыва между данными и описанием их структуры (которое иногда не совсем точно называют метаданными), возможность управлять данными и их структурой с помощью одних и тех же инструментов обеспечивает уровень гибкости, необходимый для создания и поддержки моделей данных, включающих десятки тысяч типов сущностей и свойств. Нельзя забывать и про множество разработанных методик онтологического моделирования, использование онтологий верхнего уровня, переиспользование и расширение стандартных онтологий.
Когда вся корпоративная информация становится структурированной и логически связной, она приобретает свойства корпоративного графа знаний (corporate knowledge graph), который открывает предприятию новый уровень аналитических возможностей и позволяет гораздо эффективнее монетизировать накопленную информацию.
Какими функциональными свойствами должна обладать платформа, являющаяся ядром дата-центрической архитектуры? Она должна:
Поддерживать хранение состояния каждого объекта данных на любой момент времени. Объекты данных — не просто отражения текущего состояния объектов или событий реального мира, а «четырехмерные» описания всех состояний на протяжении всего времени жизни объекта.
Хранить непрерывную историю модели (структуры) данных. Структура данных столь же изменчива, как и сами данные. Платформа должна иметь возможность представлять объекты данных в соответствии с любой версией структуры. Структура должна формально описывать смысл каждого элемента данных.
Поддерживать множество API для работы с данными, включая REST, GraphQL, SPARQL.
Предоставлять возможности обнаружения и поиска данных.
Иметь развитые инструменты управления доступом к данным и защиты конфиденциальной информации.
Поддерживать инструменты прослеживания происхождения данных (data provenance), контроля их качества (data quality), описания степени доверия к данным.
Построение подобных платформ с использованием онтологических моделей открывает и другие возможности. В онтологической модели можно описать в машинно-читаемой и автоматически исполняемой форме не только структуру данных, но и алгоритмы их обработки — правила контроля целостности, арифметических вычислений, дополнения информации (см. спецификации SHACL и SHACL Advanced Functions). Это позволяет по-новому взглянуть и на принцип low code: если в единой корпоративной платформе управления данными хранятся не только данные и описание их структуры, но и машинно-читаемое описание алгоритмов обработки данных, то новые бизнес-приложения, ориентированные на использование таких описаний, станут еще гибче и смогут изменять свое поведение «на лету» без вмешательства не только в код, но и в настройки приложений.
Платформы, отвечающие таким требованиям, уже существуют и применяются и на российском, и на зарубежном рынке.
Rabajaba
Важно помнить, что "интеграция" ( в общем как и всякий другой выбор) имеет под собой trade-off. Да, писать и поддерживать интеграции требует существенных затрат, но это позваляет описывать контракты для взаимодействия разных систем. Как следствие, с этими контрактами можно говорить о понижении связности, и как следствие возмоности независимой эволюции систем, ситгерированных таким способом.
Обычно, далеко не все системы обновляются или измениются регулярно. Меняются же те, где бизнес пытается выделиться на рынке. Как следствие, если "корневая" или "центральная" модель поменяется, прийдётся обновлять и те системы, которые трогать бы не хотелось.
Корректно спроектированные интеграции позволяют разным бизнес областям эволюционировать более независимо.
SergeIndex Автор
Согласен, что есть свои резоны и в изоляции систем друг от друга и связывании через контракты. Возможно, для стабильного бизнеса, имеющего дело с не очень сложной предметной областью, такое решение оптимально.
Но в наше время для очень многих бизнесов скорость адаптации к изменениям становится критичной, а возможность быстрого сбора комплексной аналитики по внезапно возникающим запросам (отчет нужен завтра, а не через месяц!) и извлечения ценности из накопленных данных — реальной возможностью обогнать конкурентов или просто выжить. А когда гибкость важнее стабильности, стоит и ИТ-архитектуру строить так, чтобы как можно меньше зависеть от конкретных приложений, а в использовании данных иметь наибольшую свободу.