Slide 1

Slide 1 text

AWS DDKを利用したDataOps事始め JAWS FESTA 2024 in 広島 2024年10月12日 株式会社BeeX 半田 大樹

Slide 2

Slide 2 text

2 Copyright © 2024 BeeX Inc. All Rights Reserved. 自己紹介 ・名前 半田 大樹(Handa Daiki) ・所属 株式会社BeeX ・業務歴 2022年~:クラウド全般の技術支援 2019年~:データ分析基盤の開発保守(BeeX入社) ・好きなAWSサービス Amazon S3、AWS Step Functions ×15 ×9 ×9 X→@handydd18 2024 Japan AWS ALL Certifications Engineer 2023 Japan AWS Top Engineer 2023 Japan AWS ALL Certifications Engineer 2022 APN ALL AWS Certifications Engineer

Slide 3

Slide 3 text

3 Copyright © 2024 BeeX Inc. All Rights Reserved. 会社紹介 日本で15社目の「AWS プレミアティア サービスパートナー」 • AWS ソリューションプロバイダープログラム • AWS マネージドサービスプロバイダー(MSP)プログラム • AWS SAPサービスコンピテンシー • AWS 移行コンピテンシープログラム • AWS Well-Architectedパートナープログラム • Amazon EC2 for Windows Serverパートナー • AWS 公共部門パートナー • AWS 公共部門ソリューションプロバイダー 取得認定一覧

Slide 4

Slide 4 text

4 Copyright © 2024 BeeX Inc. All Rights Reserved. BeeXブースも出しています (出典:https://jawsfesta2024.jaws-ug.jp/access/floormap/)

Slide 5

Slide 5 text

5 Copyright © 2024 BeeX Inc. All Rights Reserved. Agenda • DataOpsとは • AWS DataOps Development Kit(DDK)とは • DataOps導入の第一歩 • まとめ

Slide 6

Slide 6 text

6 Copyright © 2024 BeeX Inc. All Rights Reserved. 本セッションについて • 本セッションでは「DataOpsとAWS DDKの概念理解」を 目的としています • 時間の関係上、説明を省略している部分もあります • 撮影はご自由にどうぞ • 資料は後ほど公開します

Slide 7

Slide 7 text

DataOpsとは

Slide 8

Slide 8 text

8 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsって知ってますか

Slide 9

Slide 9 text

9 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは (引用:https://www.gartner.com/en/information-technology/glossary/dataops) 「DataOpsは、組織全体にわたるデータ管理者とデータ利用者の間の データフローのコミュニケーション、統合、自動化の改善に重点を置い た協調的なデータ管理手法です。」 ・・・・・・・・・・・・

Slide 10

Slide 10 text

10 Copyright © 2024 BeeX Inc. All Rights Reserved.

Slide 11

Slide 11 text

11 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsの目標 (引用:https://www.gartner.com/en/information-technology/glossary/dataops) 「DataOpsの目標は、データ、データモデル、および関連成果物の予測 可能なデリバリーと変更管理を実現することで、価値を迅速に提供する ことです。」

Slide 12

Slide 12 text

12 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは 「私は、DevOpsの進化から学ぶべきことは、現代のインターネット全 体でも、現代の企業内でも、特にデータを毎日扱う私たちにとって、た くさんあると思う。」 「データ・エンジニアやデータ・サイエンティストは、現代のインター ネット上や企業内のデータ専門家のニーズに対応する、同様の新しい学 問分野(仮に「DataOps」と呼ぼう)を受け入れる時期に来ていると私 は考えている。」 - 著者 Andy Palmer(アンディ・パーマー) (引用:https://web.archive.org/web/20210619061614/https://www.tamr.com/blog/from-devops-to-dataops-by-andy-palmer/)

Slide 13

Slide 13 text

13 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOps = Data + DevOps?

Slide 14

Slide 14 text

14 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは 「DataOpsの知的遺産を構成するのは、アジャイル、DevOps、統計的 プロセス制御の3つの方法論すべてである。」 (引用:https://medium.com/data-ops/dataops-is-not-just-devops-for-data-6e03083157b7) 「DataOps is NOT Just DevOps for Data」(DataOpsはデータのためのDevOpsではない) 「アジャイルはアナリティクス開発を管理し、DevOpsは新しいアナリ ティクスのコード検証、ビルド、デリバリーを最適化し、SPCはデータ ファクトリをオーケストレーションして監視する。 」 ※統計的プロセス制御=SPC

Slide 15

Slide 15 text

15 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ活用) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 16

Slide 16 text

16 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ活用) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 17

Slide 17 text

17 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ活用) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 18

Slide 18 text

18 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ活用) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 19

Slide 19 text

19 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ活用) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 20

Slide 20 text

20 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ活用) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 21

Slide 21 text

21 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOps = Data + DevOps+α

Slide 22

Slide 22 text

22 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsまとめ →データから抽出する価値を最大化するための仕組み • DevOpsはあくまでそのための一つの構成要素 • テクニカルだけではなく、組織やステークホルダーも含めた最適化を図る → DataOps導入にはDataOpsへの理解が重要 • DevOpsやアジャイルなどの要素について知る必要がある • 組織や人、データなどの全体を対象として俯瞰した視点を持つ

Slide 23

Slide 23 text

AWS DataOps Development Kit(DDK) とは

Slide 24

Slide 24 text

24 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ分析) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 25

Slide 25 text

25 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DataOps Development Kit(AWS DDK)とは (引用:https://awslabs.github.io/aws-ddk/) 「AWS上でのデータワークフローとモダンなデータアーキテクチャの 構築を支援するオープンソースの開発フレームワーク。」

Slide 26

Slide 26 text

26 Copyright © 2024 BeeX Inc. All Rights Reserved.

Slide 27

Slide 27 text

27 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DataOps Development Kit(AWS DDK)とは (引用:https://awslabs.github.io/aws-ddk/) 「AWS CDKをベースに、DevOpsのベストプラクティスに基づいて、 AWS上のデータフローを管理するパイプラインを構築することを可能 にする高レベルの抽象化を提供します。」

Slide 28

Slide 28 text

28 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DataOps Development Kit(AWS DDK)とは AWS DataOps Development Kit AWS CDKのライブラリとして提供される 開発フレームワーク =

Slide 29

Slide 29 text

29 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DataOps Development Kit(AWS DDK)とは

Slide 30

Slide 30 text

30 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKの構成要素 AWS DDKで利用可能なコンストラクト(20個) • AppFlowIngestionStage • S3EventStage • DataBrewTransformStage • GlueTransformStage • EMRServerlessJobStage • AthenaSQLStage • RedshiftDataApiStage • FirehoseToS3Stage • EventStage • SnsSqsToLambdaStage • SqsToLambdaStage • MWAATriggerDagsStage • StateMachineStage • Stage • DataStage • BaseStack • CICDPipelineStack • DataPipeline • EMRServerlessCluster • MWAAEnvironment (引用:https://constructs.dev/packages/aws-ddk-core/v/1.4.0?lang=typescript)

Slide 31

Slide 31 text

31 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKの構成要素 AWS DDKで利用可能なコンストラクト(20個) • AppFlowIngestionStage • S3EventStage • DataBrewTransformStage • GlueTransformStage • EMRServerlessJobStage • AthenaSQLStage • RedshiftDataApiStage • FirehoseToS3Stage • EventStage • SnsSqsToLambdaStage • SqsToLambdaStage • MWAATriggerDagsStage • StateMachineStage • Stage • DataStage • BaseStack • CICDPipelineStack • DataPipeline • EMRServerlessCluster • MWAAEnvironment (引用:https://constructs.dev/packages/aws-ddk-core/v/1.4.0?lang=typescript) Stage:データパイプラインのステージ定義 Stack:CICDパイプライン定義 その他:インフラストラクチャ定義

Slide 32

Slide 32 text

32 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKの構成要素① コンストラクト 概要 主な構築リソース AppFlowIngestionStage Amazon AppFlowを使用してデータ取り込みを行うステージ AWS Step Functions AWS Lambda Amazon AppFlow(新規 or 既存) S3EventStage Amazon S3のイベントをトリガーとするステージ Amazon S3(既存) Amazon EventBridge Rule DataBrewTransformStage AWS Glue DataBrewを使用してデータ変換を行うステージ AWS Glue DataBrew AWS Step Functions GlueTransformStage AWS Glueを使用してデータ変換を行うステージ AWS Glue(Job , Crawler) AWS Step Functions EMRServerlessJobStage Amazon EMR Serverlessを使用してジョブを実行するステージ Amazon EMR Serverless AWS Step Functions AthenaSQLStage Amazon Athenaを使用してSQLクエリを実行するステージ Amazon Athena AWS Step Functions RedshiftDataApiStage Amazon Redshift Data APIを使用してSQLステートメントを実行するステージ Amazon Redshift(既存) AWS Step Functions FirehoseToS3Stage Amazon Kinesis Data Firehoseを使用してデータをS3に配信するステージ Amazon Kinesis Data Firehose Amazon S3 Amazon Kinesis Data Streams(オプション) SnsSqsToLambdaStage SNS、SQS、Lambdaを連携させるステージ Amazon SNS Amazon SQS AWS Lambda SqsToLambdaStage SQSとLambdaを連携させるステージ Amazon SQS AWS Lambda

Slide 33

Slide 33 text

33 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKの構成要素② コンストラクト 概要 主な構築リソース MWAATriggerDagsStage Amazon Managed Workflows for Apache Airflow (MWAA)のDAGをトリガーす るステージ Amazon MWAA(既存) AWS Step Functions AWS Lambda DataPipeline データパイプラインを構築するコンストラクト Amazon EventBridge Rule Amazon SNS(オプション) EMRServerlessCluster Amazon EMR Serverlessクラスターを構築するコンストラクト Amazon EMR Serverless Amazon VPC(オプション) Amazon S3 AWS IAM MWAAEnvironment Amazon Managed Workflows for Apache Airflow (MWAA)環境を構築するコン ストラクト Amazon MWAA Amazon VPC Amazon S3 AWS IAM Role CICDPipelineStack CI/CDパイプラインを構築するスタック AWS CodePipeline AWS CodeBuild Amazon S3 AWS KMS Amazon SNS(オプション) BaseStack CDKスタックの基底クラス IAM Parmissions Boundary(オプション) StateMachineStage AWS Step Functionsのステートマシンを含むステージの基底クラス AWS Step Functions DataStage データ処理ステージの基底クラス Amazon CloudWatch Alarm(オプション) EventStage イベントベースのステージの基底クラス なし(サブクラスで定義) Stage すべてのステージの基底クラス なし(サブクラスで定義)

Slide 34

Slide 34 text

34 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKの構成要素 データ取り込みと変換 AppFlowIngestionStage S3EventStage ワークフロー管理 MWAATriggerDagsStage 基底クラス Stage DataStage DataPipeline BaseStack CICDPipelineStack インフラストラクチャ EMRServerlessCluster MWAAEnvironment EventStage StateMachineStage データ配信 FirehoseToS3Stage DataBrewTransformStage GlueTransformStage イベント処理 SnsSqsToLambdaStage SqsToLambdaStage データ処理 EMRServerlessJobStage AthenaSQLStage RedshiftDataApiStage

Slide 35

Slide 35 text

35 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKの構成要素 データ取り込みと変換 AppFlowIngestionStage S3EventStage ワークフロー管理 MWAATriggerDagsStage 基底クラス Stage DataStage DataPipeline BaseStack CICDPipelineStack インフラストラクチャ EMRServerlessCluster MWAAEnvironment EventStage StateMachineStage データ配信 FirehoseToS3Stage DataBrewTransformStage GlueTransformStage イベント処理 SnsSqsToLambdaStage SqsToLambdaStage データ処理 EMRServerlessJobStage AthenaSQLStage RedshiftDataApiStage データパイプラインに必要なステージを選択して利用 必要に応じて利用 必要に応じて 利用 連結 連結

Slide 36

Slide 36 text

36 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKまとめ →AWS CDKから利用可能な開発フレームワークライブラリ • L3コンストラクトで実装されている • PythonとTypeScriptで利用が可能 →複数のコンストラクトを組み合わせて実装する • データパイプラインの構成に合わせて必要なコンストラクトを選択する • 必要に応じて、要件に合わせた独自のコンストラクトを実装可能

Slide 37

Slide 37 text

DataOps導入の第一歩

Slide 38

Slide 38 text

38 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ分析) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 39

Slide 39 text

39 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) DevOps(コード管理) アジャイル(データ分析) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 40

Slide 40 text

40 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOpsとは データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) データパイプラインのコード化 アジャイル(データ分析) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)

Slide 41

Slide 41 text

41 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKを利用したデータパイプライン構築例 const ddkBucket = ddk.S3Factory.bucket(this, "DDK Bucket", { eventBridgeEnabled: true, }); const firehoseS3Stage = new ddk.FirehoseToS3Stage(this, "DDK Firehose S3", { s3Bucket: ddkBucket, dataOutputPrefix: "raw/", }); const sqsLambdaStage = new ddk.SqsToLambdaStage(this, "DDK SQS Lambda", { lambdaFunctionProps: { code: lambda.Code.fromAsset("./lambda"), handler: "index.lambda_handler", runtime: lambda.Runtime.PYTHON_3_9, layers: [ lambda.LayerVersion.fromLayerVersionArn( this, "SDK for Pandas Lambda Layer", `arn:aws:lambda:${ cdk.Stack.of(this).region }:336392948345:layer:AWSSDKPandas-Python39:1` ), ], }, }); ddkBucket.grantReadWrite(sqsLambdaStage.function); new ddk.DataPipeline(this, "Data Pipeline", {}) .addStage({ stage: firehoseS3Stage, }) .addStage({ stage: sqsLambdaStage, }); ※以下AWS DDK Workshopの実装内容から引用 Build a data pipeline

Slide 42

Slide 42 text

42 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKを利用したデータパイプライン構築例 AWS Cloud Amazon Data Firehose Amazon S3 Amazon EventBridge Amazon SQS AWS Lambda Amazon S3 User サンプルデータ発行 ※以下AWS DDK Workshopの実装内容を元に作成 Build a data pipeline

Slide 43

Slide 43 text

43 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKを利用したデータパイプライン構築例 AWS Cloud Amazon Data Firehose Amazon S3 Amazon EventBridge Amazon SQS AWS Lambda Amazon S3 User サンプルデータ発行 ※以下AWS DDK Workshopの実装内容を元に作成 Build a data pipeline ・暗号化設定済み ・HTTPS接続強制 ・パブリックアクセスブロック 等 ・自動的にサービス間の接続を設定 ・エラーに対するアラーム設定 ・可視性タイムアウト2分 ・バッファリング間隔5分 等

Slide 44

Slide 44 text

44 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOps導入にAWS DDKを利用するメリット • コード化されたデータパイプラインのパターンが利用可能 • L1,L2コンストラクトで実装するより開発時間が短縮できる • ベストプラクティスを考慮したデフォルト値が設定されている • 抽象化されているため、シンプルなコードで実装が可能 • AWSサービス等の必要な前提知識のハードルがそこまで高くない • データパイプラインについてコードで構築内容を確認できる ※もちろん、複雑なデータパイプラインを構築しようとするとカスタマイズが必要になる

Slide 45

Slide 45 text

まとめ

Slide 46

Slide 46 text

46 Copyright © 2024 BeeX Inc. All Rights Reserved. まとめ • DataOpsはデータプロダクトという価値を提供するために、 データパイプラインに関連する技術、組織、人等を最適化するための管理手法 • AWS DDKはDataOpsの中でも、DevOpsの領域で主にデータパイプラインの コード化をシンプルに実現するためのCDKライブラリ

Slide 47

Slide 47 text

47 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS DDKを利用して DataOpsを事始めしてみませんか?

Slide 48

Slide 48 text

48 Copyright © 2024 BeeX Inc. All Rights Reserved. ご清聴ありがとうございました

Slide 49

Slide 49 text

No content