Перевод книги «Apache Airflow Best Practices, by Dylan Intorf, Dylan Storey, Kendrick van Doorn» Packt Publishing подготовлен автором сайта
Глава 1 — Начало работы с Airflow 2.0
В современной разработке программного обеспечения и обработке данных оркестрация играет ключевую роль в обеспечении координации и выполнения сложных рабочих процессов. По мере того как организации стремятся управлять постоянно растущими объемами данных и расширяющимся ландшафтом приложений, потребность в эффективной системе оркестрации становится критически важной. С момента выхода Airflow 2.0 прошло уже некоторое время, и платформа стремительно развивается, расширяя свои возможности. Мы решили обобщить наш опыт эксплуатации Airflow, чтобы помочь другим, продемонстрировав проверенные шаблоны, которые уже зарекомендовали себя на практике.
Наша цель в этой книге — помочь инженерам и организациям, внедряющим Apache Airflow в качестве решения для оркестрации, максимально эффективно использовать выбранную технологию, направляя их к более обоснованным решениям в процессе адаптации и масштабирования.
В этой главе мы разберёмся, что такое оркестрация данных и как она применяется в различных отраслях, сталкивающихся с проблемами работы с данными. Кроме того, мы рассмотрим основные преимущества Apache Airflow и его функциональные возможности, которые могут быть полезны для вашей организации. Мы также заглянем вперёд и узнаем, чему вы сможете научиться, читая эту книгу и применяя передовые индустриальные практики оркестрации пайплайнов данных с помощью Apache Airflow. Apache Airflow остаётся лидером отрасли в области оркестрации данных и управления пайплайнами. С этим успехом связаны определённые принципы и подходы, которые были признаны лучшими практиками. Мы рассмотрим некоторые из этих практик и подходов в этой главе, а также определим навыки, необходимые для успешной работы.
В этой главе мы рассмотрим следующие основные темы:
- Что такое оркестрация данных?
- Обзор Apache Airflow
- Базовые концепции Airflow
- Навыки для эффективного использования Apache Airflow
Что такое оркестрация данных?
В современном мире, ориентированном на данные, организации сталкиваются с задачей обработки огромных объёмов данных из разнообразных источников. Оркестрация данных — это ключ к эффективному управлению этим сложным ландшафтом данных. Она включает координацию, автоматизацию и мониторинг рабочих процессов обработки данных, обеспечивая стабильное выполнение задач и своевременную доставку ценных инсайтов.
Оркестрация в контексте разработки программного обеспечения и data engineering — это процесс автоматизации и управления выполнением взаимосвязанных задач или процессов для достижения конкретной цели. Эти задачи могут включать обработку данных, планирование выполнения рабочих процессов, развёртывание сервисов и многое другое. Цель оркестрации — оптимизировать поток операций, повысить эффективность использования ресурсов и гарантировать согласованное выполнение задач.
Традиционная, ручная оркестрация трудоёмка и подвержена ошибкам, особенно по мере роста сложности пайплайнов. Однако с появлением современных инструментов и фреймворков для оркестрации разработчики могут автоматизировать эти сложные процессы, повышая их эффективность и надёжность.
Примеры использования в индустрии
Независимо от отрасли, Apache Airflow может приносить пользу любым командам, занимающимся data engineering или аналитикой. Для лучшего понимания приведём несколько примеров того, как ключевые отрасли, с которыми мы работали, могут использовать этот ведущий оркестратор данных для удовлетворения своих потребностей:
- E-commerce: Бренд в сфере электронной коммерции может нуждаться в автоматизированном ETL/ELT пайплайне для автоматизации извлечения, трансформации и загрузки данных из различных источников, таких как продажи, взаимодействие с клиентами и текущие остатки на складе.
- Банковский сектор / финтех: Ведущие финансовые компании могут использовать Apache Airflow для оркестрации обработки транзакционных данных с целью выявления мошеннических операций или рисков в отчётных и биллинговых системах.
- Ритейл: Крупные розничные сети и бренды могут использовать Apache Airflow для автоматизации ML-нагрузок с целью более точного прогнозирования пользовательских предпочтений и покупательского поведения с учётом сезонности или текущей рыночной конъюнктуры.
Теперь, когда мы узнали, что такое оркестрация данных, почему она важна для организаций и какие существуют базовые сценарии её применения, давайте перейдём к изучению Apache Airflow — одной из самых популярных платформ и основной темы этой книги.
Обзор Apache Airflow
Apache Airflow известен в сообществе инженеров по данным как наиболее популярная open source платформа для разработки, планирования и мониторинга batch-ориентированных рабочих процессов.
(Документация Apache.org Airflow: https://airflow.apache.org/docs/apache-airflow/stable/index.html)
Apache Airflow зарекомендовал себя как основная open source платформа для оркестрации данных и остаётся лидером благодаря активному сообществу разработчиков. Она предлагает надёжное и гибкое решение задач управления сложными рабочими процессами обработки данных. Airflow позволяет инженерам по данным, data scientist’ам, инженерам в области искусственного интеллекта (AI)/машинного обучения (ML), а также специалистам по MLOps и DevOps легко разрабатывать, планировать и мониторить пайплайны данных. Сила Apache Airflow заключается в его способности представлять рабочие процессы данных в виде ориентированных ациклических графов (DAG’ов). Такой интуитивный подход позволяет пользователям визуализировать и понимать взаимосвязи между задачами, что упрощает создание и сопровождение сложных пайплайнов данных. Более того, расширяемость и модульность Airflow позволяют пользователям настраивать платформу под свои специфические нужды, делая её идеальным выбором для компаний любого размера и из любой отрасли.
Apache Airflow 2.0
Релиз Apache Airflow 2 в декабре 2020 года стал одним из крупнейших достижений сообщества с момента создания Airflow как внутреннего решения в Airbnb в 2014 году. Переход на версию 2.0 стал серьёзным шагом для сообщества и включал сотни обновлений и исправлений ошибок после опроса сообщества Airflow в 2019 году. Этот релиз принёс с собой обновлённый пользовательский интерфейс, новый планировщик, исполнитель на базе Kubernetes и более простой способ группировки задач внутри DAG’ов. Это было прорывное достижение, которое определило дорожную карту для последующих релизов, только усиливших ценность Airflow как инструмента для сообщества.
Ключевые особенности Apache Airflow
Apache Airflow предлагает множество функций для поддержки разнообразных потребностей организаций и команд. Некоторые из наших любимых касаются сенсоров, группировки задач и операторов, но каждая из этих функций может быть отнесена к одной из следующих категорий:
- Расширяемость: Пользователи могут создавать собственные операторы и сенсоры или использовать широкий спектр плагинов, созданных сообществом, что обеспечивает бесшовную интеграцию с различными технологиями и сервисами. Такая расширяемость повышает адаптивность Airflow к разным средам и сценариям использования, делая его потенциал ограниченным лишь воображением инженера.
- Динамичность: Платформа поддерживает динамические рабочие процессы, то есть количество задач и их конфигурации могут определяться во время выполнения, на основе переменных, внешних сенсоров или данных, полученных в ходе выполнения. Эта функция делает Airflow более гибким, поскольку рабочие процессы могут адаптироваться к изменяющимся условиям или входным параметрам, что приводит к лучшему использованию ресурсов и повышению эффективности.
- Масштабируемость: Распределённая архитектура Airflow обеспечивает масштабируемость для обработки крупномасштабных и ресурсоёмких рабочих процессов. По мере роста бизнеса и увеличения потребностей в обработке данных Airflow способен удовлетворить эти требования, распределяя задачи между несколькими воркерами, сокращая время обработки и повышая общую производительность.
- Встроенный мониторинг: Airflow предоставляет веб-интерфейс для мониторинга состояния рабочих процессов и отдельных задач. Этот интерфейс позволяет пользователям визуализировать выполнение задач и просматривать логи, способствуя прозрачности и упрощая отладку. Получая информацию о производительности рабочих процессов, пользователи могут оптимизировать свои процессы и выявлять потенциальные узкие места.
- Экосистема: Airflow бесшовно интегрируется с широким спектром технологий и облачных провайдеров. Эта интеграция позволяет пользователям получать доступ к различным источникам данных и сервисам, что упрощает проектирование комплексных рабочих процессов, взаимодействующих с различными системами. Работаете ли вы с базами данных, облачным хранилищем или другими инструментами — Airflow способен обеспечить связующее звено между компонентами.
Apache Airflow — это результат многолетней разработки в open source и тщательно продуманного дизайна от сотен контрибьюторов. Это ведущий инструмент оркестрации данных, и изучение его ключевых возможностей поможет вам стать лучшим инженером по данным и менеджером.
Взгляд вперёд
На протяжении всей книги мы будем исследовать основные функции Apache Airflow, предоставляя вам знания для использования его полного потенциала на пути оркестрации данных. Ключевые темы включают следующее:
- Почему использовать Airflow?: Принципы, навыки и базовые концепции
- Основы Airflow: Понимание основных понятий (DAG’и, задачи, операторы, deferrable-компоненты, подключения и т. д.), компонентов Airflow и основы написания DAG’ов
- Типовые сценарии использования: Раскрытие потенциала Airflow с помощью ETL-пайплайнов, пользовательских плагинов и оркестрации нагрузок между системами
- Масштабирование с командой: Подготовка инстанса Airflow к продакшн-нагрузкам с использованием CI/CD, мониторинга и облака
К окончанию этой книги вы получите всестороннее понимание лучших практик работы с Apache Airflow, что позволит вам строить надёжные, масштабируемые и эффективные пайплайны данных, способствующие успеху вашей организации.
Давайте начнём это практическое руководство по оркестрации пайплайнов данных с использованием Apache Airflow и раскроем истинный потенциал принятия решений на основе данных.
Основные концепции Airflow
Apache Airflow — это динамичный, расширяемый и гибкий фреймворк, позволяющий создавать рабочие процессы как код. Airflow позволяет описывать эти автоматизированные рабочие процессы в виде кода. Это обеспечивает лучшую версионируемость, разработку через CI/CD, лёгкость в тестировании и возможность использовать расширяемые компоненты и операторы от активного сообщества контрибьюторов.
Airflow известен своим подходом к планированию задач и рабочих процессов. Он может использовать планирование по CRON или встроенные функции планировщика. Кроме того, такие функции, как backfilling (выполнение пайплайнов задним числом), позволяют переисполнять пайплайны и обновлять их при изменении логики. Это означает наличие мощных эксплуатационных компонентов, которые необходимо учитывать при проектировании.
Следование этим рекомендациям поможет вам заложить основу для масштабирования ваших развёртываний Airflow и повысить эффективность рабочих процессов как с точки зрения разработки, так и эксплуатации.
Почему Airflow может вам не подойти
Прежде чем мы перейдём к принципам Apache Airflow, стоит на мгновение остановиться и признать случаи, когда он не является хорошим выбором для организаций. Хотя каждое из следующих утверждений, вероятно, может быть опровергнуто достаточно мотивированными и умными инженерами (а таких мы все знаем немало), они в целом считаются антипаттернами и их следует избегать.
Некоторые из этих антипаттернов включают следующее:
- Команды, в которых отсутствует или ограничен опыт программирования на Python. Реализация DAG’ов на Python может быть сложным процессом и требует активного опыта для поддержки кода.
- Стриминговые или не batch-ориентированные рабочие процессы и пайплайны, где сценарий использования требует немедленного обновления. Airflow предназначен для batch-ориентированных и запланированных задач.
Когда выбирать Airflow
Airflow лучше всего использовать для реализации «batch-ориентированных» запланированных пайплайнов данных. Часто сценарии использования включают ETL/ELT, обратный ETL, ML, AI и бизнес-аналитику (BI). На протяжении всей книги мы рассмотрим основные сценарии использования, наблюдаемые в различных лидирующих компаниях отрасли. Некоторые ключевые сценарии включают следующее:
- ETL-пайплайны данных: Почти каждая реализация Airflow помогает автоматизировать задачи такого типа, будь то консолидация данных в хранилище данных или перемещение данных между различными инструментами
- Разработка и распространение пользовательских плагинов для организаций с уникальным стеком и потребностями, которые не были учтены open source сообществом: Airflow позволяет легко адаптировать окружение и экосистему под ваши нужды
- Расширение функциональности UI с помощью плагинов: Модификация и настройка интерфейса для добавления новых представлений, графиков и виджетов, интегрирующихся с внешними системами
- ML-воркфлоу и оркестрация между системами: Команды, создающие и поддерживающие ML-воркфлоу, часто зависят от Airflow для автоматизации обучения, трансформации и оценки моделей
Каждый из этих сценариев требует разного набора базовых навыков для реализации и масштабирования в поддержку крупной организации.
Zen of Python
Zen of Python — отличный ориентир для любого Python-разработчика при принятии решений при написании кода; некоторые его части особенно полезны для инженеров по данным, работающих с Airflow. Это набор из 19 «руководящих принципов» написания кода на Python от пионера в области разработки программного обеспечения Тима Питерса. Прежде чем перейти к деталям того, что, на наш взгляд, наиболее ценно при разработке на Apache Airflow, давайте ознакомимся с Zen of Python:
- Красивое лучше, чем уродливое.
- Явное лучше, чем неявное.
- Простое лучше, чем сложное.
- Сложное лучше, чем запутанное.
- Плоское лучше, чем вложенное.
- Разреженное лучше, чем плотное.
- Читаемость имеет значение.
- Частные случаи недостаточно особенные, чтобы нарушать правила.
- Хотя практичность важнее чистоты.
- Ошибки никогда не должны замалчиваться.
- Если только они не замалчиваются явно.
- В условиях неоднозначности откажитесь от соблазна угадывать.
- Должен быть один — и желательно только один — очевидный способ сделать это.
- Хотя он может быть не очевиден с первого взгляда, если только вы не голландец.
- Сейчас лучше, чем никогда.
- Хотя «никогда» часто лучше, чем прямо сейчас.
- Если реализацию сложно объяснить — это плохая идея.
- Если реализацию легко объяснить — возможно, это хорошая идея.
- Пространства имён — отличная штука, давайте использовать их больше!
Несколько ключевых руководящих принципов, которые помогут вам в обучении:
- Явное лучше, чем неявное. Особенно в задачах, связанных с данными, важно быть явным в своих намерениях — это критично как для защиты от ошибок, так и для поддержки. Отлаживать продакшн-пайплайн проще, когда вы точно знаете, каков был изначальный замысел.
- Простое лучше, чем сложное. Сложное лучше, чем запутанное. Лучшие практики проектирования DAG’ов предполагают наличие множества простых задач, которые затем объединяются в сложный рабочий процесс. Это, как правило, означает, что рабочие процессы лучше справляются с восстановлением после ошибок и повторными запусками, их проще расширять в будущем и легче отлаживать при сбоях.
- Частные случаи недостаточно особенные, чтобы нарушать правила. Хотя практичность важнее чистоты. Согласованность — ключ к сопровождаемому коду, поэтому по возможности нужно стремиться к единообразному подходу. Однако инженерным командам нужно добиваться результата, так что вы должны быть готовы учитывать особые случаи как при проектировании, так и при реализации.
- Ошибки никогда не должны замалчиваться. Если только они не замалчиваются явно. Это частный случай противопоставления явного и неявного. Особенно в работе с данными ошибки должны обрабатываться явно — либо через исключения, либо логироваться для последующего анализа.
- Сейчас лучше, чем никогда. Хотя “никогда” часто лучше, чем прямо сейчас. При построении DAG’ов и всей операционной архитектуры возникает естественное стремление сразу «подготовить систему к будущему» или избыточно абстрагировать — не делайте этого. Следует проявлять особую осторожность при реализации интерфейсов и систем: в конечном итоге вы будете отвечать за их поддержку, и усилия, вложенные сейчас, могут оказаться нужнее в другом месте.
- Если реализацию сложно объяснить — это плохая идея. Если реализацию легко объяснить — возможно, это хорошая идея. Это ещё один случай темы простого/сложного/запутанного, особенно актуальный на этапе проектирования. Если вы не можете объяснить что-то достаточно просто — вероятно, это плохая идея для реализации. Данные постоянно меняются и эволюционируют, и ваши системы должны уметь меняться вместе с ними.
Идемпотентность
Идемпотентность описывает операцию, которую можно применять многократно без изменения результата после первого применения. Наш опыт показывает, что большинство эксплуатационных проблем можно избежать, если учитывать этот принцип с самого начала и на всех этапах проектирования задач в Airflow.
Конфигурация как код
Конфигурация как код — это принцип проектирования программного обеспечения, при котором конфигурационные настройки и параметры хранятся в виде кода отдельно от основного исполняемого кода. Это позволяет определять параметры конфигурации как код и напрямую интегрировать их в кодовую базу с использованием таких конструкций, как переменные, классы или функции. Такой подход позволяет разработчикам управлять поведением приложения и изменять его более системно и под контролем версионности. Этот подход даёт преимущества в виде повышения согласованности, упрощения совместной работы и более удобных рабочих процессов, которые позволяют применять общие парадигмы разработки и эксплуатации программного обеспечения.
Эта парадигма очень мощная и действительно позволяет обращаться с конфигурациями как с полноценным кодом; однако разработчики должны помнить, что код предназначен для описания дискретных конфигурационных единиц, и некоторые «очевидные» паттерны программирования могут привести к нежелательным (или недокументированным) зависимостям, если не обеспечить чётких границ конфигурации в кодовых базах, описывающих ваши рабочие процессы.
Теперь, когда мы на мгновение нашли свой дзен в написании кода на Python и поделились ключевыми соображениями о том, когда стоит выбирать Apache Airflow, давайте перейдём к навыкам, которые наиболее необходимы.
Навыки для эффективного использования Apache Airflow
Недостаточно просто знать Airflow; существуют и другие навыки, которые необходимы и будут влиять на эффективность вашей команды в обеспечении ценности с помощью Airflow. Читая эту книгу, подумайте о навыках вашей команды в следующих областях, чтобы понять, нужна ли вам дополнительная поддержка или возможности для максимально эффективного использования платформы:
- Python: DAG’и и плагины пишутся на Python. Следовательно, для эффективного внедрения Airflow вы должны уметь писать и понимать код на Python.
- Тестирование приложений: В вашей компании должны быть достаточно зрелые процессы и практики тестирования, чтобы гарантировать, что написанные вами плагины и DAG’и будут работать так, как задумано. Команда, ответственная за работоспособность вашего инстанса(ов) Airflow и плагинов, должна уметь помогать другим командам в подготовке к обновлениям, а команды, пишущие рабочие процессы, — выполнять автоматизированные тесты до вывода в продакшн.
- Экспертиза в предметной области: Знание своей предметной области данных — самый критически важный навык для успешного внедрения Airflow. Независимо от того, насколько вы технически подкованы, если вы не понимаете бизнес-домена, с которым работаете, вам не удастся добиться успеха ни в краткосрочной, ни в долгосрочной перспективе.
- Мониторинг/оповещение приложений: У вас должны быть достаточно зрелые возможности для наблюдения, мониторинга и оповещения, чтобы эффективно использовать Airflow. Некоторые распространённые действия включают мониторинг активности приложения (например, health checks), отправку оповещений дежурным членам команды и автоматические сообщения о статусе.
Эти навыки являются ключевыми для максимально эффективного использования Apache Airflow и должны периодически пересматриваться, чтобы отслеживать прогресс и возможности для улучшения в разных областях.
Резюме по 1 главе
В этой главе мы познакомились с основами того, что такое оркестрация данных и с какими проблемами сегодня сталкиваются компании и инженеры. Кроме того, мы представили Apache Airflow — ведущий инструмент оркестрации данных и управления рабочими процессами. Мы также рассмотрели, чего ожидать в ходе прочтения этой книги. Важно помнить, что для успешной работы с Apache Airflow требуются несколько базовых инструментов и областей знаний. Хотя эти области необходимы для наилучшего использования, каждая из них поддаётся изучению и может быть освоена достаточно быстро.
В основе использования Airflow лежит код на Python. Чтобы быть лучшим инженером по данным, работающим с Airflow, вам нужно понимать основные концепции кода на Python и то, как он будет оркестровать ваш стек инструментов работы с данными. Потратив время на изучение этих базовых концепций и понимание сценариев использования, решаемых с помощью Airflow, вы сможете строить масштабируемые системы и находить возможности для оптимизации.
В следующей главе мы представим основы DAG’ов и задач. Мы рассмотрим новые советы по декораторам задач и организации групп задач, а также разберём пример. Вы можете рассчитывать на то, что ваш первый DAG в Airflow будет запущен и готов к эксплуатации.







Leave a Reply