DevOps для данных: как ускорить обработку и передачу информации за счет принципов DataOps

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
image

Какой смысл в BIG DATA и аналитических моделях машинного обучения, если информация вовремя не попадает к разработчикам, бизнес-аналитикам и руководителям? Если в вашей компании время передачи информации к специалистам по тестированию, развертыванию и поддержке занимает дни, а не секунды, пришла пора задуматься о внедрении практик DataOps (DATA Operations, датаопс).

Чтобы ближе познакомить вас с современными инструментами обработки и передачи информации, мы подготовили перевод ключевых тезисов из статьи «DataOps — что это такое и почему вам это должно быть интересно?».


Что такое DataOps и почему он звучит так похоже на DevOps?


DevOps — это набор принципов, лучшие практики и инструменты, которые помогают компаниям быстро разрабатывать и доставлять ПО. Суть этого подхода заключается в максимальной автоматизации продуктового жизненного цикла — создания, тестирования, развертывания и т. д.

Ключевые термины здесь: непрерывная интеграция (CI) и непрерывная доставка (CD) ПО, используя ИТ-ресурсы по мере надобности (инфраструктура-как-код). Отсюда и название — «DEVelopment» + «OPerationS»/IT.

DataOps описывают как DevOps, только применительно к данным. Продукты данных (data product) добавляют больше переменных в процессы, относящиеся к доставке ценности, а не к ПО.

Разберемся в этом подробнее.

Да, наша цель всё та же: доставлять ценность быстро, предсказуемо и надежно. Однако DataOps решает проблемы не только с помощью доставки в виде версионированного кода ваших задач по поглощению и преобразованию данных, моделей и аналитики, но и с помощью самих данных. Этот подход помогает найти баланс между гибкостью и управлением — одна ускоряет доставку, а другая обеспечивает безопасность, качество и доставляемость ваших данных.

Отметим несколько моментов, важных с точки зрения смены восприятия разных компонентов конвейера данных:

  • Извлечение, загрузка, преобразование (Extract, load, transform — ELT). Данные нужно загружать как есть, без ненужных преобразований внутри хранилища или озера данных. Это ускоряет загрузку и упрощает задачи поглощения информации. Также наша задача — не отбросить то, что позднее может оказаться ценным, сохраняя исходную версию данных вместе с преобразованной и подготовленной к анализу. В некоторых случаях не избежать определенных преобразований по требованию регулятора — тогда вы увидите аббревиатуру EtLT. Если рассуждать в том же ключе, то данные вообще не удаляют. Как вариант, их сохраняют в относительно недорогих хранилищах.
  • CI/CD. Знакомым с DevOps спецам будет в новинку концепция жизненного цикла объектов из базы данных. Современные платформы данных вроде Snowflake предлагают продвинутые возможности, например, функции time travel и zero-copy clone. Также есть решения для версионирования и ветвления озера данных, например, lakeFS.
  • Архитектура и поддерживаемость кода. Речь о маленьких, повторно используемых фрагментах кода в виде компонентов, модулей, библиотек и прочего, что фреймворки предлагают в виде атомарных кодовых сущностей. По сути, каждая компания будет создавать свой репозиторий из таких компонентов и превращать их в стандарт для всех внутренних проектов.
  • Управление средами. В DataOps очень важна возможность создавать из веток и эффективно поддерживать долгосрочные и краткосрочные среды.

В манифесте DataOps перечислено 18 общих принципов, которые выглядят как смесь принципов Agile и DevOps. Но чтобы применить всё это к конвейеру данных, придется сильно поменять мышление и начать думать о ваших данных как о продукте.

Чем отличается «продукт данных»?


Обычно какую-то новую работу, которая приносит бизнесу некую ценность, называют проектом. В некотором смысле конвейер данных и всё, что его окружает и связано с поддержкой поглощения данных, их потреблением, обработкой, визуализацией и анализом является набором маленьких проектов. Хотя правильнее было бы называть их продуктами. В чем ключевые различия этих понятий:

  • Проект разрабатывается и управляется командой в течение какого-то времени, и когда проект доставляют, он заканчивается. А продуктом владеет какая-то команда, которая его поддерживает без конечной даты.
  • У проекта есть область применения и цель, его могут выпустить несколько раз, пока он не достигнет своей цели. Когда это произошло, проект считается завершенным. А в продукт инвестируют, его развивают, получают обновления, делают обзоры и постоянно улучшают (как принято в Agile).
  • Тестирование проекта ограничено определенным формализованным объемом. Тестирование продукта – это лишь часть процесса его выпуска; оно бывает модульное, регрессионное и интеграционное.

image

Если вы введете в поисковике запрос «DataOps», то найдёте вот такую диаграмму или ее варианты. Она хорошо иллюстрирует бесконечность процесса — планирование, разработка, тестирование и доставка кода. Также диаграмма говорит о необходимости сотрудничества с бизнесом (с заинтересованным лицами, имеющими отношение к продукту) на разных стадиях и о получении практичной обратной связи для использования в следующей итерации.

Как разобраться в обилии инструментов, фреймворков и языков?


Для создания продукта данных приходится использовать более крупные наборы технологий, чем в случае с отдельным программным продуктом. Они формировались естественным образом по мере того, как разные команды аналитиков, специалистов по обработке данных, инженеров по данным и разработчиков ПО искали лучшие варианты, которые удовлетворяли бы бизнес-требованиям и помогали им самим учиться и подниматься по карьерной лестнице.

Все инструменты и фреймворки так или иначе генерируют какой-то код. По крайней мере, если соблюдаются все принципы, у вас есть версионирование конфигураций и всё настроено так же, как и в любом другом программном проекте.

Трудности возникают при проектировании системы. Обычно данные поступают из разных источников и часто перемещаются по системе нелинейно, к тому же многие процессы могут исполняться параллельно.

DataOps помогает упростить это с помощью концепции центрального репозитория, который служит единым источником истины для любого кода и конфигурации в вашей системе — обычно это называют конвейером данных.

Если у нас есть такой всезнающий репозиторий с автоматической оркестрацией данных и обрабатывающих процессов, то выпустить изменение можно одним кликом мышки. Более того, становится значительно легче сотрудничать и отслеживать, кто и что делает, если мы сразу видим любые изменения, вносимые командами в разработку. Это снижает риск ошибок из-за недопонимания и повышает качество продукта данных.

Давайте посмотрим, как элементы DataOps собираются в единое целое с помощью «волшебного» репозитория.

Конвейеры


В DataOps есть два возможных типа конвейеров:

  • Разработка и развертывание. Всё это вам знакомо из DevOps: CI/CD-конвейер для сборки, тестирования и выпуска контейнеров платформы данных, API, библиотек и т. д.
  • Данные. Это конвейер, управляющий всеми компонентами (будь то запланированные задачи, постоянно работающие веб-сервисы или что-нибудь другое), который перемещает данные из пункта А в пункт Б и выполняет всю необходимую обработку. Возможно и весьма вероятно, что у компании будет немного таких конвейеров.

Задачи


Здесь больше всего переменных. Существует множество видов задач, в зависимости от того:

  • какие технологии используются — Snowflake, Airflow, Python, HTTP…;
  • что их инициирует — расписание, выполнение условия, непрерывное исполнение;
  • где они исполняются — на собственном сервере, в частном облаке, в малоизвестной сторонней среде;
  • как они обрабатывают ошибки;
  • что определяет успешность.

Каталог данных


Количество и виды инструментов и сервисов в конвейере не имеет значения, важно лишь, чтобы они могли добавлять и понимать метаданные. Это своеобразный язык, на котором программные компоненты обрабатывают данные, взаимодействуя друг с другом, а также отличный источник отладочной и бизнес-информации.

Сотруднику, отвечающему за сопровождение конвейера, метаданные помогают определять, какие данные содержатся в системе, отслеживать их движение и диагностировать неполадки. Также метаданные позволяют бизнесу узнавать, какие данные ему доступны и как их использовать.

Есть инструменты для каталогизирования данных, составляющие каталоги с помощью машинного обучения. Эти инструменты должны уметь находить данные, отбирать, размечать, создавать семантические связи и обеспечивать простой поиск по ключевым словам среди метаданных.

Машинное обучение также может рекомендовать преобразования, автопровижининг данных и спецификации конвейера. Однако даже с помощью таких алгоритмов любой каталог хорош лишь настолько, насколько хороши данные и метаданные, с которыми он работает. Централизованно управляемый DataOps-конвейер всё «знает» о том, откуда поступает информация, как она протестирована, преобразована и обработана, где она заканчивается и т. д.

Наличие в вашем управляющем репозитории качественных метаданных и версионирования также гарантирует отслеживаемость и более высокое качество самих данных. Важно это поддерживать не только ради получаемой бизнесом ценности, но и ради внутренней культуры компании, чтобы заинтересованные лица доверяли вам.

Тестирование


Тестирование — ключевая концепция в DataOps. Оно должно быть автоматизировано и запускаться на разных стадиях до поступления кода в эксплуатацию. Важное отличие от DevOps заключается в том, что в DataOps оркестрация выполняется дважды: в первый раз применительно к инструментам, обрабатывающим данные, а во второй раз применительно к сами данным. То есть в двух конвейерах, описанных несколькими абзацами выше.

image

На этой схеме не показано, что для правильного регрессионного и интеграционного тестирования вам нужно выбрать репрезентативный набор данных, что само по себе нетривиальная задача, а потом его еще нужно анонимизировать.

Более того, часто возникают проблемы, которые можно отловить только на более поздних стадиях конвейера. Поэтому для интеграционного тестирования вам нужна практически сквозная система. А воспроизвести весь конвейер по состоянию на какой-то момент времени может быть слишком сложно технически и дорого. Это возможно в мире, в котором DataOps реализована в идеальном виде, но чаще всего ресурсов на не хватает. Наша цель — использовать этот подход как руководство при проектировании системы и постараться внедрить те элементы, которые принесут вам наибольшую выгоду и сэкономят больше всего времени, сил и денег.

Инструменты DataOps


В теории выглядит красиво, но как вообще подступиться к DataOps? На рынке для этого есть инструменты, которые соблюдают соответствующие принципы в той или иной степени. Самые заметные из них:

  • Unravel — предлагает мониторинг и управление на основе ИИ. Проверяет код и дает рекомендации по тестированию и развертыванию. Инструмент для компаний, которые хотят сосредоточиться на повышении производительности своего конвейера.
  • DataKitchen — скорее, применяется в качестве дополнения к существующему конвейеру и предоставляет обычные DevOps-компоненты вроде CI/CD, тестирования, оркестрации и мониторинга.
  • DataOps.live — в дополнение к DevOps-компонентам этот инструмент предлагает некоторые элементы конвейера данных, такие как ELT/ETL, моделирование и соответствие требованиям регулятора. Если заказчики используют Snowflake, то они могут воспользоваться преимуществами версионирования базы данных и инструментов ветвления.
  • Zaloni — в отличие от предыдущих двух, этот инструмент сосредоточен на конвейере данных и доставке всех его компонентов в рамках единой платформы. Нельзя сказать, что он не предлагает DevOps-компоненты. Напротив, это очень многофункциональный инструмент для компаний, работающих в условиях строгого регулирования.


И, конечно, для хранения и управления данными вы можете воспользоваться сервисами #CloudMTS: объектное хранилище, СУБД PostgreSQL и Redis, брокер сообщений Apache Kafka. С их помощью вы можете быстро, с нуля и без специфических знаний повысить качество управления бизнес-критичной информацией.



Top.Mail.Ru
Источник: https://habr.com/ru/companies/cloud_mts/articles/730070/


Интересные статьи

Интересные статьи

Всем привет! Меня зовут Вадим, я занимаюсь тестированием безопасности приложений. С недавнего времени увлекся разработкой на фреймворке Angular. Я решил объединить свое новое увлечение со своей основн...
7 октября мы провели второй митап о нюансах работы с большими объёмами данных. Под катом видео докладов наших разработчиков и приглашенного эксперта Microsoft Data Platform. Кейсы будут полезны т...
Современные технологические достижения привели к несомненному росту производственных возможностей компаний практически во всех отраслях промышленности. Времена, когда все процессы лежали исключител...
Представленное в этой статье исследование было проведено исследователем графики и лектором Мэттью Делером в DAE Research (HOWEST University of Applied Sciences). Результаты были использованы для получ...
Рост объемов данных остается беспрецедентным, причем они поступают из огромного множества источников. Все более сложные перемещения данных по большому многообразию экосистем существен...