В последние месяцы я особенно много читаю материалов о modern data stack (MDS) - современном стеке данных определение которого хорошо отражено в блоге продукта Fivetran [1].
Modern Data Stack - это набор инструментов используемых для интеграции данных. Задача в том чтобы анализировать данные Вашего бизнеса для проктивного раскрытия новых пространств возможностей и улучшения эффективности.
Эти инструменты включают:
полностью управляемые инструменты ELT (Extract-Load-Transfer)
облачное хранилище или облако
инструмент трансформации данных
платформа визуализации данных или BI
О продуктах внутри Modern Data Stack есть много интересных публикаций. Стоит почитать как минимум Emerging Architectures for Modern Data Infrastructure [2] и The Modern Data Stack [3].
Я же хочу обратить на два тренда в этой концепции которые, с одной стороны, достаточно ожидаемы, а с другой отделяют инструменты прошлых поколений от современных.
Это так называемые headless (безголовые) и reverse (реверсивные/обратные) продукты по работе с данными.
В первую очередь это продукты в таких категориях как headless BI и reverse ETL.
Headless BI
Относительно новая идея в работе с метриками, показателями и аналитиков в том что хранение этих метрик, их обработка и трансформация и даже подготовка к визуальному представлению отделены от визуального представления. Идея headless продукта в том что инструменты представления конечного результата могут быть разнообразны и могут быть в самых разных формах: веб UI, настольное приложение, Jupyter Notebook, командная строка, мобильное приложение или что-либо ещё. Соответственно эти способы визуализации могут создаваться разными командами, но важно чтобы у них был унифицированный первоисточник. Headless BI как раз решают такую задачу выступая в качестве хранилища метрик. Наглядный пример такого продукта SuperGrain [4].
Аналогичная концепция озвучивается стартапом Good Data [5], а также об этом пишут пользователи и эксперты отмечая существующие тренды [6].
Идея “безголовости“ (headless) применительно к BI возникла не на пустом месте. Относительно недавно зародился и развивается тренд на headless CMS, системы управления контентом для которых управление контентом - новостями, страницами, медиафайлами и так далее разделено с их визуальным представлением. Контент компании может транслироваться в мобильное приложение, открытый сайт, корпоративный сайт, сайты мероприятий и ещё много куда и во всех случаях он редактируется в одном месте, а способы представления контента могут быть разными. У headless CMS есть много воплощений, есть хорошая подборка на Jamstack [7].
А также headless продукты есть в рынке eCommerce [8] платформ.
Не удивительно что эта идеология перенесена на BI продукты, интересно куда ещё она применима. Пока же можно понаблюдать как она распространяется на другие продукты имеющие бизнес логику и визуализацию.
Reverse ETL/ELT
Классические ETL (Extract-Transform-Load) инструменты довольно хорошо известны и понятны и довольно активно начали меняться в последние годы. В современном стеке данных они частично заменяются на ELT где стадии загрузки и преобразования данных меняются. Если раньше данные преобразовывались и уже после преобразования загружались в хранилище, то в ELT системах данные вначале загружаются в озеро данных или хранилище объектов и только после этого проходят интенсивную трансформацию.
Парралельно такому развитию возник новый класс продуктов - reverse или, по русски, реверсивные ETL системы. Если ETL/ELT системы построены вокруг сбора данных из операционных баз данных в центральное хранилище, то Reverse ETL наоборот выгружает данные из центрального хранилища в операционные базы данных. Может показаться немного странным, но это довольно частая потребность в задачах когда, например, в центральном хранилище идёт расчет каких-либо персонифицированных метрик на основе которых продавцам надо сделать индивидуальные предложения клиентам или для рассылки с учётом индивидуальных особенностей пользователя.
Есть множество продуктов в этой области, и определение Reverse ETL весьма подробные есть, как минимум, у Census [9] и Hightouch [10].
Эта идея реверсивного ETL весьма интересна сама по себе тем кто порождает новые продукты. Отчасти потому что большая часть продуктов ETL/ELT работают с большим числом источников данных, но с малым числом целей куда эти данные могут быть загружены и, отчасти, потом что загрузка данных в операционные продукты требует большего знания специфики их API или структур данных.
Где ещё подобное применяется и применимо?
Эти идеи headless (отказ от UI/GUI) и reverse (реверсивность) не такие уж уникальные и применяются не только в ИТ. Например, бизнес модель “теневых кухонь” - это тоже headless. Когда кухня одна, а над ней может быть построено множество “интерфейсов“ для заказа.
Можно ли их применить ещё где-либо в работе с данными или ИТ продуктах чтобы создать новые бизнес модели или продукты?
Концепция headless применима для продуктов в которых наличие интерфейса является привычным делом. Например, текстовые редакторы могут ли быть headless? Или headless games с игровыми движками имеющими много видов отображения?
А reverse применимо к продуктам где есть пошаговые процессы переводящие процесс/данные до определенного состояния. Можно представить себе reverse CMS когда существующий сайт или иное вместилище контента преобразуется в содержание загружаемое в базу данных или headless CMS. А может быть это reverse reporting с реконструкцией данных на основе отчетов и аналитики.
Лично я пока не могу ответить на этот вопрос, но думаю над ним. И этот текст как раз в сторону этих размышлений в логике Writing is Thinking [11].
Ссылки:
[1] https://fivetran.com/blog/what-is-the-modern-data-stack
[2] https://future.a16z.com/emerging-architectures-modern-data-infrastructure/
[3] https://www.moderndatastack.xyz/
[4] https://www.supergrain.com/
[5] https://medium.com/gooddata-developers/the-future-of-bi-is-headless-e3949bb0bf2
[6] https://basecase.vc/blog/headless-bi
[7] https://jamstack.org/headless-cms/
[8] https://github.com/notrab/awesome-headless-commerce
[9] https://blog.getcensus.com/what-is-reverse-etl/
[10] https://hightouch.io/blog/reverse-etl/
[11] https://blog.stephsmith.io/learning-to-write-with-confidence/