Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Airflowはすごいぞ!
Search
Hank Ehly
June 08, 2022
Programming
950
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Airflowはすごいぞ!
Hank Ehly
June 08, 2022
More Decks by Hank Ehly
See All by Hank Ehly
Fivetranでデータ移動を自動化する
hankehly
0
680
Celeryの紹介と本番運用のTips
hankehly
0
1.7k
ChatGPTを活用した 便利ツールの紹介
hankehly
1
1.4k
Efficient Energy Analytics with Airflow, Spark, and MLFlow
hankehly
0
430
Deferrable Operators入門
hankehly
0
800
【初心者/ハンズオン】Dockerコンテナの基礎知識
hankehly
0
610
Compositeパターン: オブジェクトの階層関係をエレガントに表現する方法
hankehly
0
370
10/29 Airflowの基礎を学ぶハンズオンワークショップ
hankehly
0
340
システム/データ品質保証のための Airflow 活用法
hankehly
0
700
Other Decks in Programming
See All in Programming
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
390
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
560
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
130
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
4
320
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
510
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
360
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
410
カツオ、ご期待ください
suneo3476
0
120
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
190
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
180
Featured
See All Featured
New Earth Scene 8
popppiees
4
2.6k
RailsConf 2023
tenderlove
30
1.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
600
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
It's Worth the Effort
3n
188
29k
We Are The Robots
honzajavorek
0
380
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Why Our Code Smells
bkeepers
PRO
340
58k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Transcript
Airflowはすごいぞ!
自己紹介 • Hank Ehly (ハンク イーリー) • ENECHANGE株式会社 • qiita.com/hankehly
アジェンダ • Airflowとは • コンセプト qiita.com/hankehly
Airflowとは
Airflowとは > 概要 • ワークフローを作成、実行、監視するためのプラットフォーム • Python • Airbnb、メルカリ、楽天、Tesla、Twitter、等々 •
マネージド版 ◦ Amazon Managed Workflows for Apache Airflow (AWS) ◦ Cloud Composer (GCP) ◦ Astronomer qiita.com/hankehly
Airflowとは > 解決する問題 1. タスクの依存関係を明確にする qiita.com/hankehly ドキュメントやコメントで書く タスクがフローチャートとして表示される 2. エラーが起きた箇所を特定する
追跡できるようなログを出力する エラー表示のタスクをクリックしてログを確認する 3. タスクを同時に実行する multiprocessing や asyncio で頑張る 依存関係がないタスクは同時に実行される 4. 失敗しがちな処理を3回までリトライする リトライ用のデコレーター関数を使う タスクの「最大リトライ数」を設定する 等々… ワークフローの開発において様々な課題がある …
Airflowとは > 使い方のイメージ ワークフロー名 成功/失敗回数 実行頻度 qiita.com/hankehly
Airflowとは > 使い方のイメージ qiita.com/hankehly
Airflowとは > 使い方のイメージ N回目の実行のログ qiita.com/hankehly
Airflowとは > 使い方のイメージ qiita.com/hankehly
コンセプト
コンセプト > DAGs • DAGとは「Directed Acyclic Graph」の略 • ワークフロー/パイプライン •
依存関係にあるタスクをどの順番で実行するか qiita.com/hankehly
コンセプト > Tasks • DAGは、Taskで構成されている • Python関数、Rubyのコンテナ、Bashスクリプト • 状態を持つ ◦
リトライ待ち ◦ 実行中 ◦ 失敗 / 成功 ◦ 等々… qiita.com/hankehly Airflowで表示 a >> [b, c] >> d 開発者が書く
コンセプト > 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
コンセプト > Variables start_instance = EC2StartInstanceOperator( task_id="start_instance", instance_id=Variable.get("INSTANCE_ID"), ) qiita.com/hankehly
コンセプト > Logging UI から個別のタスクログが確認できる • S3 • CloudWatch •
Google Cloud Storage • Elasticsearch qiita.com/hankehly
ご清聴ありがとうございました https://qiita.com/hankehly/items/1f02a34740276d1b8f0f