Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データパイプラインの指揮者たち
Search
enokawa.hayato
July 13, 2024
0
530
データパイプラインの指揮者たち
enokawa.hayato
July 13, 2024
Tweet
Share
Featured
See All Featured
Designing for Performance
lara
604
68k
Code Reviewing Like a Champion
maltzj
521
39k
How to Ace a Technical Interview
jacobian
276
23k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building an army of robots
kneath
302
44k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Thoughts on Productivity
jonyablonski
68
4.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Being A Developer After 40
akosma
89
590k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
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