Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データパイプラインの指揮者たち
Search
enokawa.hayato
July 13, 2024
0
490
データパイプラインの指揮者たち
enokawa.hayato
July 13, 2024
Tweet
Share
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Statistics for Hackers
jakevdp
796
220k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
For a Future-Friendly Web
brad_frost
175
9.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
The Language of Interfaces
destraynor
154
24k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Transcript
データパイプラインの指揮者たち Google Cloud オーケストレーションサービスの ⽐較と実践 2024.7.12 データ事業本部 エノカワ
⽬次 • ⾃⼰紹介 • セッションの⽬的 • Google Cloud のオーケストレーションサービス •
各サービスでの実装 ◦ Cloud Composer ◦ Workflows • まとめ 2
⾃⼰紹介 名前: 栄野川 隼⼈(エノカワ ハヤト) 所属: データ事業本部 那覇オフィス 経歴: メーカー系SIer
→独⽴系地⽅SIer(流通⼩売系) →クラスメソッド(2021/6〜) 3 Okinawa
1. Google Cloud のオーケストレーションサービスを知る ◦ Cloud Composer と Workflows の紹介
2. サンプルシナリオで実装のイメージを掴む ◦ 両サービスでの実装アプローチの違い 3. サービス選択のガイドラインの提供 ◦ 要件に応じたサービス選択基準 セッションの⽬的 4
Google Cloud の オーケストレーションサービス 5
オーケストレーションとは 6 定義: 複雑なワークフローやタスクの⾃動化と調整を⾏うプロセス 必要性: • タスクの依存関係管理 • エラーハンドリングの⼀元化 •
リソースの最適化
Cloud Composer • Apache Airflow ベース • 複雑なワークフロー管理に最適 • 特徴:
◦ Python でのワークフロー定義 ◦ 柔軟なスケジューリング ◦ 豊富なモニタリング機能 7
Workflows • サーバーレス実⾏環境 • YAML/JSONベースの簡潔な定義 • 特徴: ◦ 直感的なワークフロー設計 ◦
Google Cloud サービスとの緊密な統合 ◦ 低コストで⾼速な実⾏ 8
各サービスでの実装の⽐較 9
サンプルシナリオ ユースケース: EC サイトの⽇次販売データを処理し、分析⽤に集計 データフロー: 10 Sales Data Cloud Storage
Sales Data BigQuery Sales Summary BigQuery
INPUT と OUTPUT 11 sales.csv sales_summary
Cloud Composer 12
コンソールから環境を作成 環境の作成 13 …
DAG のフォルダも作成された 約20分で環境できあがり 環境の作成 14
タスクの依存関係を明⽰的に定義 DAG名:sample_dag スケジュール:毎⽇実⾏(@daily) DAGファイルの作成 15 タスク①:CSVデータのロード • 機能:GCS から BigQuery
へのデータ転送 • 使⽤オペレーター:GCSToBigQueryOpeartor タスク②:集計テーブルの作成と更新 • 機能:集計テーブルの作成と集計データの挿⼊ • 使⽤オペレーター :BigQueryExecuteQueryOperator タスクの依存関係:タスク① >> タスク②
DAG ファイルをアップロードする DAGのデプロイ 16
Airflow ウェブサーバーのDAGリストに反映された DAGのデプロイ 17
スケジュール実⾏ DAGの実⾏ 18
⼿動実⾏ DAGの実⾏ 19
Workflows 20
コンソールからワークフローを作成 ワークフローの作成 21
ワークフローエディタにコードを⼊⼒ ワークフローの作成 22
ワークフローの作成 23 ステップを順序⽴てて定義 ステップ②:CSVデータのロード • 機能:GCS から BigQuery へのデータ転送 •
使⽤API:googleapis.bigquery.v2.jobs.insert ステップ③:集計テーブルの作成と更新 • 機能:集計テーブルの作成と集計データの挿⼊ • 使⽤API:googleapis.bigquery.v2.jobs.insert ステップ④:結果の返却 • 機能:処理完了メッセージの返却 ステップ①:初期化 • 機能:変数に値を割り当て
可視化されたワークフローを確認してデプロイ ワークフローのデプロイ 24
正常にデプロイされると、ワークフローを実⾏できる ワークフローのデプロイ 25
実⾏時に JSON 形式で引数を渡すこともできる ワークフローの実⾏ 26
出⼒ペインにワークフローの結果が表⽰された ワークフローの実⾏ 27
まとめ 28
サービス⽐較 29 Cloud Composer Workflows 基盤技術 Apache Airflow Google 独⾃
⾔語サポート Python(Airflow DAGs) YAML または JSON ワークフロー タスクの依存関係を明⽰的に定義 ステップを順序⽴てて定義 スケジューリング 内蔵 外部トリガー必要 複雑性 ⾼(柔軟性⼤) 低(シンプル) 統合サービス 豊富 Google Cloud 中⼼ スケーラビリティ ⼤規模向け 中⼩規模向け コスト ⾼ 低(サーバーレス)
サービス選択ガイドライン 30 Cloud Composer • 複雑な依存関係を持つワークフロー • ⻑時間実⾏のバッチ処理 • 豊富なカスタマイズが必要な場合
Workflows • シンプルで直感的なワークフロー • HTTPベースのサービス連携 • 低コストで⾼速な実⾏が必要な場合
• エラーハンドリングの実装 ◦ 予期せぬ問題に対処し、システムの回復性を⾼める • モニタリングとログの活⽤ ◦ 運⽤効率の向上と問題の早期発⾒に不可⽋ • IaCアプローチの採⽤
◦ 環境の⼀貫性を保ち、デプロイメントを⾃動化 ベストプラクティス 31
32