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

AWS DDKを利用したDataOps事始め

BeeX, Inc.
October 11, 2024

AWS DDKを利用したDataOps事始め

JAWS FESTA 2024 in 広島のTrack:D「AWS DDKを利用したDataOps事始め」の登壇資料です。

https://jawsfesta2024.jaws-ug.jp/sessions/timetable/D-2/

BeeX, Inc.

October 11, 2024
Tweet

More Decks by BeeX, Inc.

Other Decks in Technology

Transcript

  1. 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
  2. 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 公共部門ソリューションプロバイダー 取得認定一覧
  3. 4 Copyright © 2024 BeeX Inc. All Rights Reserved. BeeXブースも出しています

    (出典:https://jawsfesta2024.jaws-ug.jp/access/floormap/)
  4. 5 Copyright © 2024 BeeX Inc. All Rights Reserved. Agenda

    • DataOpsとは • AWS DataOps Development Kit(DDK)とは • DataOps導入の第一歩 • まとめ
  5. 6 Copyright © 2024 BeeX Inc. All Rights Reserved. 本セッションについて

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    DataOps Development Kit(AWS DDK)とは
  22. 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)
  23. 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パイプライン定義 その他:インフラストラクチャ定義
  24. 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
  25. 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 すべてのステージの基底クラス なし(サブクラスで定義)
  26. 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
  27. 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 データパイプラインに必要なステージを選択して利用 必要に応じて利用 必要に応じて 利用 連結 連結
  28. 36 Copyright © 2024 BeeX Inc. All Rights Reserved. AWS

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

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

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

    データソース データ取得・整形 データ保管 データ抽出・変換 データプロダクト データパイプライン 統計的プロセス制御(=ボトルネックの排除) データパイプラインのコード化 アジャイル(データ分析) (データオーナー) (データ管理者) (データ利用者) (「データプロダクト」は書籍:実践DataOpsから引用)
  32. 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
  33. 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
  34. 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分 等
  35. 44 Copyright © 2024 BeeX Inc. All Rights Reserved. DataOps導入にAWS

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

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

    DDKを利用して DataOpsを事始めしてみませんか?