В мире современных технологий данным уделяется огромное внимание, поскольку бизнесы становятся все более ориентированы на оперативный анализ и обработку больших объемов информации. Одной из ключевых задач на этом пути является эффективное извлечение, преобразование и загрузка данных — процесс, известный как ETL (Extract, Transform, Load). Несмотря на то, что концепция ETL существует уже десятилетиями, растущие требования к гибкости, скорости и безопасности данных стимулируют разработку новых подходов. Именно в этом контексте Atlassian представила Lithium — продвинутую платформу для ETL, которая сочетает в себе динамичность, эпhemerность и саморазмещение конвейеров данных в 2024 году. Lithium становится мощным инструментом для компаний, которым необходимо мгновенно создавать и снимать конвейеры обработки данных в зависимости от заявленных бизнес-задач.
Ключевая особенность платформы — возможность запускать конвейеры данных именно тогда, когда это необходимо, и быстро отключать их после выполнения задачи. Такой подход подходит, например, для миграций серверов в облако или облачных переездов с минимальными затратами ресурсов и времени. Традиционные ETL-системы зачастую работают постоянно, ожидая новые данные и необходимость их обработки. Это приводит к высоким операционным расходам и ограниченной масштабируемости. Lithium же предлагает концепцию ephemeral pipelines — временных, динамически создаваемых потоков данных, которые появляются только по требованию и мгновенно удаляются по завершении обработки.
Архитектурно Lithium построен на полностью event-driven модели с использованием Kafka и Kafka Streams. Каждая задача ETL в Lithium именуется workplan — это подробное описание компонентов конвейера, включая источник данных, этапы трансформаций и конечный приемник данных. Особенность в том, что все ресурсы, участвующие в обработке, включая топики Kafka между ними, создаются и уничтожаются динамически. Lithium реализует модель Bring Your Own Host (BYOH), что означает, что компоненты для извлечения, трансформации и загрузки данных размещаются непосредственно в сервисах, которые владеют данными или бизнес-логикой. Например, Jira и Confluence имеют собственные сервисы, где интегрируется Lithium SDK — Java-библиотека, упрощающая взаимодействие с Kafka.
Это позволяет держать процессинг максимально близко к месту происхождения данных, снижая задержки и повышая производительность. Гетерогенность распределения — еще одна уникальная особенность. Каждый этап обработки может выполняться на отдельных сервисах или разных экземплярах сервисов, что увеличивает гибкость и позволяет оптимизировать нагрузку по происхождению данных и бизнес-контексту. При этом все эти конвейеры работают изолированно друг от друга, гарантируя безопасность и отсутствие конфликтов. Контроль над жизненным циклом конвейеров возложен на контрольную плоскость Lithium — компонент, управляющий состояниями workplan, назначением ресурсов и отслеживанием их состояния.
Контрольная плоскость и плоскость данных обмениваются событиями через Kafka топики, что обеспечивает надежное и отказоустойчивое взаимодействие в реальном времени. Чтобы инициировать создание конвейера, Lithium использует механизм аукциона ресурсов, где сервисы-ресурспровайдеры оценивают свою способность участвовать в обработке по представленному задаче — наличие свободной мощности, знания контекста и соответствия требованиям. На основе заявок контрольная плоскость распределяет ресурсы, создаёт необходимые Kafka топики и запускает процессоры, обеспечивая параллелизацию задачи с помощью настраиваемого уровня параллелизма и количества воркеров. Важным аспектом является гарантия высокой доступности и целостности данных. Lithium использует транзакционные возможности Kafka Streams, что гарантирует exactly-once семантику обработки и предотвращает дублирование сообщений даже при сбоях воркеров.
Если часть воркеров выходит из строя, конвейер понижает своё состояние до сд可пр仕様исо規нообоснованных, останавливается и инициирует повторный аукцион для восстановления полной мощности. Одной из уникальных особенностей платформы является возможность перематывания источника данных. Данные сначала сохраняются во входном ingress-топике, что позволяет повторно читать сообщения с начала при необходимости, без повторного извлечения из оригинального источника, что экономит ресурсы и обеспечивает быстрый откат или рестарт обработки. Цепочка трансформаций в Lithium поддерживает не только один этап обработки, но целую последовательность функций, узко специализированных и связных между собой. Такие трансформеры могут быть реализованы как единое Kafka Stream приложение или распределены по разным сервисам в зависимости от бизнес-логики и контекста обработки.
Кроме того, платформа позволяет поддерживать несколько sink-процессоров, что дает возможность направлять обработанные данные в разные хранилища или сервисы одновременно. Каждый из каналов имеет собственную группу потребителей Kafka, позволяя равномерно распределять нагрузку и обеспечивать независимую обработку данных. Lithium также вводит инновационную концепцию статусного процессора — единственного состояния, который отслеживает прогресс и состояние работы конвейера в реальном времени. Это позволяет, например, отслеживать, сколько данных уже обработано, когда задача завершена и пр., повышая прозрачность и управляемость процессов.
Обработка ошибок и проблемных данных в Lithium реализована через систему sidelining и in-progress remediation. Данные, не проходящие валидацию, сохраняются в отдельном sideline-топике с возможностью приостановки конвейера. После исправления дефектов пользователи могут обновлять конвейер, включая новые трансформеры для коррекции, а работа продолжается без остановки всей системы. Интеграция с внешними Kafka топиками — еще одна полезная функция платформы. Это позволяет сервисам обмениваться с внешними прямыми потоками данных, не зависящими от жизненного цикла конкретного workplan.
Примером такой интеграции является ID mapping при миграции данных, когда идентификаторы с исходной системы синхронизируются с новыми в целевой. По данным тестирований и эксплуатации, Lithium демонстрирует впечатляющие показатели производительности. В частности, платформа способна обрабатывать свыше миллиона сообщений в секунду с объемом данных в сотни гигабайт всего за несколько минут, что прекрасно подходит для крупных миграционных задач и резервного копирования данных. Таким образом, Lithium представляет собой мощный инструмент, значительно расширяющий возможности классического ETL. Его динамическая и эпhemerная природа, продвинутая модель размещения и контроля ресурсов, а также богатый функционал для обработки ошибок и интеграции с внешними системами создают уникальную экосистему для современных требований бизнеса к обработке данных.
Платформа уже успешно внедрена в продуктах Atlassian, включая миграции из серверных решений в облачные, бэк-апы и восстановления, обеспечивая надежность, масштабируемость и экономию ресурсов. Для организаций, стремящихся модернизировать свои ETL-конвейеры, Lithium предлагает не просто технологическое решение, а целую парадигму эффективной работы с данными в реальном времени.