$30 off During Our Annual Pro Sale. View Details »

データを受け取って、データを加工して、データを可視化する直前までのお話 / AWS DATA ETL

daiki.mori
October 01, 2022

データを受け取って、データを加工して、データを可視化する直前までのお話 / AWS DATA ETL

[Event Info] https://jawsugosaka.doorkeeper.jp/events/141505
The story just before receiving data, processing data, and visualizing data.

daiki.mori

October 01, 2022
Tweet

More Decks by daiki.mori

Other Decks in Technology

Transcript

  1. データを受け取って、データを加⼯して、 データを可視化する直前までのお話 JAWS-UG OSAKA / AWSアーキテクチャ祭り 森 ⼤樹 2022/10/01

  2. 2 ⾃⼰紹介 ★ Who am I ? 所属・⽒名 株式会社サーバーワークス /

    アプリケーションサービス部 / ディベロップメントサービス1課 / 課⻑ 森 ⼤樹 (mori@serverworks.co.jp) キャリア 約20年、SIerでプログラマ/プロジェクトマネージャの実務経験後、 2017年1⽉にサーバーワークスへ⼊社 Java / C# / Pythonを中⼼に様々なプログラム⾔語で開発 CICD環境の構築、運⽤などを⾏い、現在に⾄る 資格 PMP(Project Management Professional) 資格 趣味 スノーボード/お酒 好きなAWSサービス AWS Lambda/Amazon Connect
  3. ⽬次 1. はじめに 2. 使えるサービス 3. 合わせてみよう

  4. 1. はじめに

  5. 5 そもそもなぜ、データ加⼯が必要なのか︖ データ加⼯することで、どういうメリットが⽣まれるのか︖ データ加⼯の必要性 ★ ゴールが可視化という点で考えた場合、ソースとなるデータ(IoTのセンサーやCRM/ERPなどの RAWデータ)をそのまま利⽤できれば、そのまま可視化ができる。しかし、可視化したい側から考 えた場合にそれらそれぞれのデータを統合的に利⽤もしくは、可視化したいツールにあった形式に した上で、様々な⾓度で検証したいと思われる。そのため、RAWデータを可視化しやすい状態に 加⼯してDWH(Data

    Warehouse)に格納する⽅法が多く取られている。 これが、⼀般的に⾔われる ETL(Extract(抽出) / Transform(変換) / Load(格納)) です。 データ加⼯の必要性 1. はじめに
  6. 2. 使えるサービス

  7. 7 ETLツール、DWH、データレイクとして、どのAWSサービスを使えばいいのか︖ 使い分けする⽅法があるのか︖ AWSサービスの使い分け ★ ETLツールやDWHやデータレイクを利⽤する際、⽤途やデータサイズなどによっ て変えることがあります。AWSを利⽤する場合でも同じで、ケースによってAWS サービスを使い分けます。 今回は、ETLツールとして利⽤する場合に求められるジョブ実⾏やワークフロー 制御、DWHやデータレイクなどで使うAWSサービスについて話していきます。

    AWSサービスの使い分け 2. 使えるサービス
  8. 8 サーバーレスでイベント駆動型のコンピューティングリソース サーバーのプロビジョニングや管理をする必要がない ETL/AWS Lambda 1 サーバーレス開発でよく使われるAWS Lambdaですが、ETL処理でも使うことが あります。データを加⼯する際で、短い時間(15分未満)で確実に終わる場合に利 ⽤します。

    時間制限的に超過する場合は、AWS Glueなどを利⽤します。 まずは、AWS Lambdaで試してみるというやり⽅は可能性ありです。 AWS Lambda 2. 使えるサービス/ETL/利⽤可能なAWSサービス
  9. 9 分析、機械学習、アプリケーション開発のためのデータの検出、準備、結合を 簡単に⾏える、サーバーレスデータ統合サービス ETL/ AWS Glue 2 AWS Lambdaで処理するには時間が⾜りないやできるだけジョブを少なくしたい 場合に利⽤します。

    AWS GlueにはPython ShellとApache Spark、2つのジョブタイプがあります。 使い分けとしては汎⽤的なものをPython Shell、⼤規模な分散処理はApache Sparkというイメージです。 また、属性情報を付与するデータカタログやメタデータを作成するクローラなど もできます。また、サーバーレスなのでコスト的なものも軽減できます。 AWS Glue 2. 使えるサービス/ETL/利⽤可能なAWSサービス
  10. 10 障害/再試⾏/並列化などを管理するワークフローサービス 200以上のAWSサービスと9,000のAPIアクションでワークフローを構築可能 ETL/ AWS Step Functions 3 ワークフロー制御を⾏うサービスであるため、先述したAWS LambdaやAWS

    GlueをAWS Step Functionsのアクションとして利⽤が可能。異常系なども制御 できるので、有効活⽤することができます。 また、AWS Step FunctionsはAPIアクションで構築も可能なので、利⽤⽤途に応 じてノーコードで処理することも可能。 AWS Step Functions 2. 使えるサービス/ETL/利⽤可能なAWSサービス
  11. 11 インタラクティブなクエリサービスで、サーバーレスでインフラ管理不要 Amazon S3内のデータを標準SQLを使⽤して簡単に分析可能 ETL/ Amazon Athena 4 Amazon AthenaはサーバーレスでAmazon

    S3にあるファイルに対してクエリを 発⾏し、データ分析することができます。⼀般的に利⽤するシチュエーションと しては、Amazon S3 + Amazon Athena + Amazon QuickSightで、BIツールと の連携で使われることがあります。 使われるシチュエーションとしてはAmazon S3にあるログファイルの分析で利⽤ されることが多いです。 Amazon Athena 2. 使えるサービス/ETL/利⽤可能なAWSサービス
  12. 12 ETL/その他 他 2. 使えるサービス/ETL/利⽤可能なAWSサービス Amazon EMR AWS Data Pipeline

    AWS Batch Amazon ECS Amazon EKS AWS Fargate Amazon Managed Workflows for Apache Airflow(MWAA) etc… 様々なジョブ実⾏ができるサービスやワークフロー制御するサービスを取り上げています。 今回は、説明しませんが、可能性は⾊々あります。 プログラムを組んで、ジョブを実⾏し、そのジョブをワークフロー制御するようなイメージで考え ていければよいかと思います。 ただ、いきなり⼤きく作るよりは最⼩限な構成で最低限のことを試作して検証しながら作り上げて いく⽅針を⽴てて進めると余計なコストが発⽣せず、⽅向性を⾒定めることができます。 その他
  13. 13 ジョブ実⾏ ★ ジョブ実⾏で利⽤できるAWSサービス深くは触れませんが、プログラムやクエリ を発⾏できるものがあがってきます。スモールスタートで始めるのであれば、 AWS Lambda や AWS Glue

    を利⽤することを推奨します。 それ以外のAWSサービスについては、PoCの結果を⾒て判断する⽅向で進めるの がよいと思います。 ジョブ実⾏ 2. 使えるサービス/ETL/利⽤可能なAWSサービス AWS Glue AWS Lambda Amazon Athena Amazon EMR AWS Batch Amazon ECS etc…
  14. 14 ワークフロー制御 ★ ワークフロー制御で利⽤できるAWSサービスも深くは触れませんが、ジョブ実⾏ 可能なAWSサービスをワークフロー制御したり、AWS Glue内だけで閉じるとい うやり⽅もあります。(参考ページ) MWAAはPythonでコードを記述してジョブの処理などを管理できます。ファイル はAmazon S3に配置します。AWS

    Step FunctionsやAWS GlueはAWSに特化し ていますが、MWAAは様々なサービスと連携可能です。 ワークフロー制御 2. 使えるサービス/ETL/利⽤可能なAWSサービス Amazon Managed Workflows for Apache Airflow AWS Step Functions AWS Glue
  15. 15 AWSで昔からあるストレージサービス ストレージとしてだけでなく、静的コンテンツ配信やデータレイクにも DWHやデータレイク/Amazon S3 1 多数のAWS分析アプリケーション、AI/MLサービス、などからアクセス可能。 Amazon AthenaやAmazon Redshift

    Spectrumなどを利⽤してクエリを実⾏で きます。オブジェクトストレージの機能を持ちつつ、データレイクとして利⽤で き、99.9999999%の耐久性、99.9%の可⽤性が保証されているので、データが 無くなる可能性はほぼありません。 Amazon S3 2. 使えるサービス/DWHやデータレイク/利⽤可能なAWSサービス
  16. 16 フルマネージド型のペタバイトスケールでPostgreSQLベースのDWH クラスター形式とサーバーレス形式の2つがある DWHやデータレイク/Amazon Redshift / Amazon Redshift Serverless 2

    複数のノードでクラスターを組むパターンとサーバーレスがあり、細かい話は後 ほど。データを収集・統合・蓄積し、分析をするためにデータを保管するための ものであり、更新頻度の⾼いRDBのような使い⽅はしません。 並列コンピューティングをさぽーとしており、⼤量のデータを短時間で読み出 し・分析可能。 Amazon Redshift 2. 使えるサービス/DWHやデータレイク/利⽤可能なAWSサービス
  17. 3. 合わせてみよう

  18. 18 どうやっていけばよいのか︖ 3. 合わせてみよう

  19. 19 技術的や難易度、 ⾮機能要件を⾒るために 部分的に作る どうやっていけばよいのか︖ ⼩さく作り動かす 3. 合わせてみよう

  20. 20 技術的や難易度、 ⾮機能要件を⾒るために 部分的に作る どうやっていけばよいのか︖ 作ったものが 想定通りな動きや結果に なっているか判断 ⼩さく作り動かす 動かした結果を判断

    3. 合わせてみよう
  21. 21 技術的や難易度、 ⾮機能要件を⾒るために 部分的に作る どうやっていけばよいのか︖ 作ったものが 想定通りな動きや結果に なっているか判断 次の検証や機能を作るか もしくは⽌めるのかなど

    次のアクションを確定 ⼩さく作り動かす 動かした結果を判断 次のアクションを確定 3. 合わせてみよう
  22. 22 技術的や難易度、 ⾮機能要件を⾒るために 部分的に作る どうやっていけばよいのか︖ 作ったものが 想定通りな動きや結果に なっているか判断 次の検証や機能を作るか もしくは⽌めるのかなど

    次のアクションを確定 ⼩さく作り動かす 動かした結果を判断 次のアクションを確定 3. 合わせてみよう
  23. 23 どうやっていけばよいのか︖ ⼩さく作り動かす 3. 合わせてみよう

  24. 24 どうやっていけばよいのか︖ ⼩さく作り動かす 動かした結果を判断 3. 合わせてみよう

  25. 25 どうやっていけばよいのか︖ 次のアクションを確定 ⼩さく作り動かす 動かした結果を判断 3. 合わせてみよう

  26. 26 どうやっていけばよいのか︖ 次のアクションを確定 ⼩さく作り動かす 動かした結果を判断 3. 合わせてみよう このプロセスを繰り返して、完成形にもっていく

  27. 27 どうやっていけばよいのか︖ 次のアクションを確定 ⼩さく作り動かす 動かした結果を判断 3. 合わせてみよう このプロセスを繰り返して、完成形にもっていく

  28. 参考例

  29. 29 3. 合わせてみよう/参考例 デバイスからセンサーデータを受けて、データを加⼯して蓄積。そして可視化へ ユーザーが⾒る 5 センサー→AWS IoT Core→Kinesis Firehose→S3

    1 クエリ結果を可視化 4 S3にあるファイルをデータ加⼯ 2 加⼯したデータをDWHに格納 3
  30. 30 3. 合わせてみよう/参考例 センサー→AWS IoT Core→Kinesis Firehose→S3 1 S3にあるファイルをデータ加⼯ 2

    加⼯したデータをDWHに格納 3 クエリ結果を可視化 4 ユーザーが⾒る 5
  31. 31 3. 合わせてみよう/参考例 • データ加⼯部分はサーバーレスな構成で、シンプル • 実⾏しただけ時間課⾦なので、コストも低い • Redshift ServerlessにすることでDWHもコストダウン

  32. 32 3. 合わせてみよう/参考例/Amazon Redshift Redshift Redshift Serverless コスト クラスターの起動時間によって課⾦ クエリ実⾏時にのみ課⾦

    スケーリング 同時実⾏スケーリング機能を使⽤ ⾃動的にスケーリング ⼀時停⽌と再開 ⼿動で実施 クエリの実⾏時のみ料⾦発⽣するため、概念なし 暗号化 AWS KMSで暗号化 常時暗号化 メンテナンス メンテナンスウインドウを使⽤ ⾃動メンテナンス 監査ログ S3へ配信 CloudWatch Logsに配信(※S3への配信は不可) バックアップ スナップショット スナップショットと復旧ポイント Redshift Spectrum スキャンされたバイト数に対して課⾦ RPU時間の⾦額でRedshift Serverlessの請求に包含 サインイン時の認証 情報要件 IAMユーザーのユーザー名とパスワード認証情報 不要 ユーザー管理 IAMユーザー または Redshiftユーザー IAMユーザー または Redshiftユーザー Redshift Serverless のスナップショットからRedshiftクラスターに復元可能
  33. まとめ

  34. 34 まとめ ETLツールは⾊々チョイスするサービスがある まずは⼩さく試して検証 結果を⾒て判断し、ネクストアクションにつなげていく

  35. 35 PoCを実施して最⼩コストで動くシステムを作る ✖ NOT LIKE THIS ◎ LIKE THIS ⼩さく作ってリリース

    後から⼤きくする まとめ
  36. 36 次のアクションを確定 ⼩さく作り動かす 動かした結果を判断 まとめ

  37. 37 まとめ 直接口頭でもOK!質問投稿も使ってね https://bit.ly/3y2UjrW

  38. お知らせ

  39. 39 お知らせ 2022/10/08(⼟) JAWS DAYS 2022 – Sattelites Amazon Connect

    RTA︕︕ 10分でコンタクトセンター作ってみました♩
  40. None