今回の課題
SnowflakeとAWSのどのようなサービスを組み合わせて、データ基盤を構築することができるのか理解する。
SnowflakeのYouTubeチャンネルのAWSサービスとSnowflakeを連携したデータ分析基盤という動画を見て気になった点などを調べてみた。(アーキテクチャの図も引用させていただきました。)
下記が、動画内で紹介されていたアーキテクチャ。
この中のAWSのサービスを調べてみた。
Snowflakeと連携して使えるAWSのサービスを調査する
動画内でSnowflakeと連携して使用できるAWSのサービスが紹介されていたので、簡単に調べてみた。
1)Data Pipeline系
下記のサービスを使って、データソースからS3やSnowflakeにデータをロードすることができる。
Glue
下記のような機能がある。
- ETLジョブ:データソースからデータを抽出した後、データレイクやDWHにデータを連携する機能。
- データカタログ:ETLジョブのデータソースなどのデータの説明を記載しておける。
- クローラ:データレイクを定期定期にチェックし、メタデータをデータカタログに反映する機能。
- ワークフロー:ETLジョブ、クローラ、データカタログ出力までの一連の処理を自動化できる。
※AWS Lambda
でも基本的に同じ作業を行うことができるが、
15分でタイムアウトしてしまうので、
大規模なデータ処理を行う場合は、Glueの方が向いている。
しかし一方で、CloudWatch EventsやS3など連携サービスの方が多いことが理由でLambdaの方が選ばれがちな様子
AppFlow
Glueと同様の機能だが、SalesforceやSlackなど、
SaaSからのデータ連携用のツールのため、データ連携元が限られる。
コードを書かずにデータフローを自動化することができる。
2)Streaming Data系
下記のツールを使用して、ストリーミングデータを取り扱うことができる。
Kinesis Data Streams
次々と送られる大量のストリームデータをリアルタイムに収集し、次のサービスに配送するためのサービス。
Kinesis StreamsにLambdaをつけて、S3やDWHに転送することもできる。
Kinesis Data Firehose
次々と送られる大量のストリームデータをS3やDWHに転送することができる。
MSK
Amazon Managed Streaming for Apache Kafkaの略。
streamingデータの収集・処理・保存を行うためのプラットフォームである、
Apache Kafka
の実行や管理を自動で行ってくれるサービス。
Apache Kafka
は管理が難しいなどの欠点が、それらを解決するためのサービス。といったイメージ。
3)Spark Processing系
EMR
Amazon Elastic MapReduceの略。
Apache Hadoop
やApache Spark
などのオープンソースツールを利用した、ビッグデータの分析が可能なサービス。
下記のように使用できる。
- 大規模データ変換:ビッグデータに対するデータ抽出や変換・読み込みといったワークロードを分散処理基盤を活用して効率的に行える。
- リアルタイムストリーミング:
Apache Flink
とApache Spark Streaming
を組み合わせることで、Kinesis
などといったデータソースからストリーミングされるデータをリアルタイムに分析することができる。
まとめ
データソースに対して、どういったツールを使用してETLしてSnowflakeにデータを格納することができるのか勉強になった。