Как Apache AirFlow под капотом Zapier обеспечивает low-code интеграцию веб-приложений

Автор Категория ,
Как Apache AirFlow под капотом Zapier обеспечивает low-code интеграцию веб-приложений

Инженерия данных нужна не только большим компаниям с крупными Big Data проектами. Сегодня рассмотрим, как Apache AirFlow повышает эффективность low-code фреймворка Zapier с помощью своего REST API и Amazon SQS. Также читайте далее об интеграции приложений без разработки кода и удаленный запуск Matillion-заданий в AWS с AirFlow.

Low Code интеграция сервисов или инженерия данных в малом бизнесе

Наравне с крупными корпорациями, малый бизнес активно использует различные информационные системы для автоматизации и поддержки своих процессов. Поэтому вопрос интеграции разных приложений актуален практически для каждого предприятия, независимо от его размера. Однако, в отличие от больших компаний, малый бизнес не всегда имеет штатных разработчиков и/или возможность привлечь специалистов извне. Поэтому кастомизация существующих решений и создание приложений без разработки, выраженные в концепции Low Code/No Code, становятся все более востребованными. Именно на этих идеях основан бизнес международной компании Zapier, которая разработала сервис интеграции веб-приложений. С помощью Zap-шаблонов в веб-GUI этой платформы можно настраивать запуск событий в своих процессах. Например, при добавлении заявки в CRM-систему, Zapier внесет контакты клиента в сервис почтовой или SMS-рассылки и создаст задачу в таск-менеджере, назначив ее выполнение ответственному сотруднику [1]. По мере роста спроса на свой продукт, разработчики сервиса столкнулись с проблемой масштабирования. Решить ее помогло эффективное управление workflow-цепочками с Apache AirFlow. Как именно это было сделано, мы рассмотрим далее.

Роль Apache AirFlow в Zapier

Чтобы удовлетворить постоянно растущую потребность в настраиваемых и простых средствах интеграции для более чем 3000 систем, Zapier достиг значительных масштабов. Ежедневно клиенты миллионы Zap-шаблонов, генерируя огромное количество данных. Поэтому сервису нужна зрелая и надежная дата-инфраструктура, чтобы гарантировать любому клиенту своевременную доставку всех важных данных в корректном формате и обеспечить аналитику использования продукта. Для этого подойдет Apache Airflow, который сегодня активно используется в качестве мощного оркестратора конвейера данных, упрощая организацию и мониторинг процессов их обработки. В случае Zapier, AirFlow поддерживает абсолютно все задания, от ETL до проверки качества данных, благодаря легкой интеграции с другими инструментами. При том, что Zapier на самом деле не выполняет никаких ETL-операций с Airflow, этот low-code фреймворк использует его для планирования и оркестрации. Вся тяжелая обработка ETL-процессов выполняется в удаленных сервисах, таких как Matillion и Amazon SQS (Simple Queue Service), сочетаясь с AirFlow следующим образом [2]:

  • SQS-сенсор получает сообщения из очереди AWS и удаляет его оттуда. Если удаление сообщений не удается, генерируется исключение AirflowException, а иначе сообщение с ключом передается через XCom. В AirFlow технология Xcom (cross-communication) – это механизм обмена сообщениями между задачами в одном DAG’е, которая определяется парой ключ-значение и названием задачи, откуда XCom отправили. XCom создаётся в PythonOperator’е на основании возвращаемого им значения.
  • Конечные точки Airflow REST API принимают JSON в качестве входных данных и возвращают ответы JSON, обеспечивая эффективный обмен данными для удаленного выполнения ETL-процессов в Matillion – популярного ETL-средства облачных хранилищ данных, включая Amazon Redshift, Snowflake и Google BigQuery.
  • Благодаря интеграции Matillion с AWS SQS, Zapier может запускать задания Matillion из Airflow с помощью простых API-вызовов, считывать статус задания в Matillion и передавать этот статус обратно в Airflow через специальный датчик SQS, который проверяет Airflow API.

Знание статуса задач в реальном времени позволяет Zapier сосредоточиться на создании рабочих процессов ETL для поддержания чистых наборов данных, обеспечивая их своевременную и надежную доставку.

Примечательно, что стартап Zapier активно использовал Airflow с самого начала. По мере роста сервиса, у дата-инженеров Zapier стали возникать вопросы о масштабировании этой технологии:

  • как аутенцифицировать Docker-контейнеры в AWS;
  • как управлять обновлением Airflow для критически важных функций;
  • как надежно масштабировать сразу несколько сред.

Поэтому было решено использовать коммерческую AirFlow-платформу от Astronomer, предоставляемую по SaaS-модели. Наличие изолированных сред Airflow с CLI-интерфейсом для развертываний значительно снижает нагрузку на дата-инженеров Zapier, позволяя эффективно использовать этот фреймворк для управления множеством workflow-цепочек. А возможность создавать экземпляры Airflow позволила Zapier отделить свои рабочие процессы качества данных от остальных сценариев ETL. Благодаря разным типам заданий на развертывания Airflow инженеры данных Zapier смогли оптимизировать использование ресурсов, чтобы быстрее выполнять своих рабочие процессы.

Наконец, благодаря разделению монолитного ядра фреймворка на связанные пакеты в версии 2.0, о чем мы рассказывали здесь и здесь, процесс обновления как отдельных компонент, так и всей платформы стал гораздо проще. Таким образом, Airflow от Astronomer позволил Zapier повысить производительность сразу 2-х ключевых направлений [2]:

  • инженерии данных за счет отделения рабочих процессов обеспечения Data Quality от остальных сценариев ETL;
  • DataOps за счет постоянной поддержки процессов создания и сопровождения конвейеров обработки данных.

Другие примеры практического использования Apache AirFlow для разработки сложных конвейеров аналитики больших данных с Hadoop и Spark вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://zapier.com/
  2. https://www.astronomer.io/blog/zapier