Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Airflowはすごいぞ!

 Airflowはすごいぞ!

65389cd2b6fdc531dcc4af999e864593?s=128

Hank Ehly

June 08, 2022
Tweet

More Decks by Hank Ehly

Other Decks in Programming

Transcript

  1. Airflowはすごいぞ!

  2. 自己紹介 • Hank Ehly (ハンク イーリー) • ENECHANGE株式会社 • qiita.com/hankehly

  3. アジェンダ • Airflowとは • コンセプト qiita.com/hankehly

  4. Airflowとは

  5. Airflowとは > 概要 • ワークフローを作成、実行、監視するためのプラットフォーム • Python • Airbnb、メルカリ、楽天、Tesla、Twitter、等々 •

    マネージド版 ◦ Amazon Managed Workflows for Apache Airflow (AWS) ◦ Cloud Composer (GCP) ◦ Astronomer qiita.com/hankehly
  6. Airflowとは > 解決する問題 1. タスクの依存関係を明確にする qiita.com/hankehly ドキュメントやコメントで書く タスクがフローチャートとして表示される 2. エラーが起きた箇所を特定する

    追跡できるようなログを出力する エラー表示のタスクをクリックしてログを確認する 3. タスクを同時に実行する multiprocessing や asyncio で頑張る 依存関係がないタスクは同時に実行される 4. 失敗しがちな処理を3回までリトライする リトライ用のデコレーター関数を使う タスクの「最大リトライ数」を設定する 等々… ワークフローの開発において様々な課題がある …
  7. Airflowとは > 使い方のイメージ ワークフロー名 成功/失敗回数 実行頻度 qiita.com/hankehly

  8. Airflowとは > 使い方のイメージ qiita.com/hankehly

  9. Airflowとは > 使い方のイメージ N回目の実行のログ qiita.com/hankehly

  10. Airflowとは > 使い方のイメージ qiita.com/hankehly

  11. コンセプト

  12. コンセプト > DAGs • DAGとは「Directed Acyclic Graph」の略 • ワークフロー/パイプライン •

    依存関係にあるタスクをどの順番で実行するか qiita.com/hankehly
  13. コンセプト > Tasks • DAGは、Taskで構成されている • Python関数、Rubyのコンテナ、Bashスクリプト • 状態を持つ ◦

    リトライ待ち ◦ 実行中 ◦ 失敗 / 成功 ◦ 等々… qiita.com/hankehly Airflowで表示 a >> [b, c] >> d 開発者が書く
  14. コンセプト > Operators • 「タスクのテンプレート」 • 用意されているものがたくさんある ◦ BashOperator(Bashコマンドを実行) ◦

    EC2StartInstanceOperator(EC2インスタンスを起動する) ◦ PythonOperator(Python関数を実行) ◦ EmailOperator(Eメールを送信する) ◦ DockerOperator(コンテナを実行) ◦ SlackAPIPostOperator(Slackにメッセージを投稿する) start_instance = EC2StartInstanceOperator( task_id="start_instance", instance_id="***", ) Operatorの使い方 qiita.com/hankehly
  15. コンセプト > Variables start_instance = EC2StartInstanceOperator( task_id="start_instance", instance_id=Variable.get("INSTANCE_ID"), ) qiita.com/hankehly

  16. コンセプト > Logging UI から個別のタスクログが確認できる • S3 • CloudWatch •

    Google Cloud Storage • Elasticsearch qiita.com/hankehly
  17. ご清聴ありがとうございました https://qiita.com/hankehly/items/1f02a34740276d1b8f0f