📑
【初心者向け】AWSでデータ基盤構築する際使用するサービスをいくつか紹介します!
AWSでデータ基盤構築
AWSでデータ基盤構築するとなったときに候補となるサービスが複数あり、それらのサービスについて理解を深めるために自分の備忘録として記事にします。
本記事ではETL処理、DBや可視化のサービスにフォーカスしてまとめていきます。
初学者のため、誤りや網羅できていないサービスもあるかと思います。その際はコメントいただけると幸いです。
ETL処理(データ変換)
ETL処理のデータ変換で今回紹介するサービスはGlueです。
Glue
- サーバーレスでスケーラブルなデータ統合サービス
- Glue ジョブ
- pythonスクリプトの実行に対応
- 実行エンジンとしておもにApache Sparkを使用
- sparkの変換スクリプトを変更せずに、データ量の増加時にスケールアウトが可能
- データカタログのテーブル情報も利用可能
- Data Catalog
- データロケーション/注釈/スキーマなどのメタ情報を保管するApache Hiveと互換のマネージドサービス
- クローラでs3など各種データソースをクローリングしてメタ情報を自動で推定しカタログに登録できる
- メタ情報は 1つのデータソースに対して1つのテーブル
- S3の場合はデータを配置されているパス
DB
DBとして今回紹介するのは、Redshift、RDS、Athenaです。
Redshift
- データウェアハウス
- 複数のコンピュートノードで並列分散処理
- ノードを増やすことでより高速に計算できる
- ノードを増やすことでより多くのデータをロードできる
- コンカレンシースケーリング
- 多くのクエリが投げられた際に、裏側で追加のクラスターが複数立ち上がる(同時実行性能を高めている)
- Redshift Spectrum
- s3上のデータに対して直接クエリを投げられる機能
- ユースケース
- 利用頻度の高いデータをRedshiftに残して、Parquet形式でS3上にエクスポート
- 必要なときだけSpectrum経由でクエリを投げる
- Redshiftにロードする前にすぐにクエリを投げたいとき
- スキャンしたデータ量に対して課金される
RDS
- 主なサービス
- Amazon Aurora
- MySQL
- MariaDB
- Oracle Database
- SQL Server
- PostgreSQL
- 主な機能
- 自動バックアップ機能
- 負荷分散機能
- 読み出し専用のDBであるリードレプリカを作成することで本体のマスターDBへの負荷を分散できる
- 自動パッチ作業
- 暗号化
- RDSのメリット
- DB構築が容易
- メンテナンスが不要
- 冗長化が容易
- マルチAZ配置を設定することで障害に備えられる
Athena
- サーバーレスでフルマネージドなインタラクティブクエリサービス
- スキャンされるデータ量に応じた従量課金
- Glueデータカタログにある隙間などのメタ情報を使い標準SQLを使用してS3にあるデータに直接クエリできる
- 高速なクエリエンジンのPrestoを使いほとんどの処理をメモリ上で行う
- S3上の複数オブジェクトに対してクエリを実行でき、直接集計するためデータをロードする必要がない
- S3に置かれてるデータを元にスキャン料が決まる
- データを圧縮するとコスト削減になる
- パーティションを使用するとスキャン量を減らせる
可視化
AWSのサービスで可視化といえばQuickSightが挙げられると思います。
QuickSight
- サーバーレスでフルマネージドな従量課金制のBI ツール
- 連携可能なサービス
- S3
- オンプレのDB
- RDS
- Athena
- Redshift
- SPICE
- インメモリ型の高速データベース
- 何が嬉しいか?
- データソースに負荷をかけず、高速な応答が可能
- 15分ごとに自動更新(リアルタイム性重視の場合はデメリット?)
まとめ
AWSでデータ分析基盤構築するさいに候補となるサービスについてまとめました。
データ量やデータの更新頻度、差分更新なのか全件洗い替えなのかといったそれぞれのケースでどのようなアーキテクトが最適なソリューションになるのか、今後も学び続けていきたいと思います。
Discussion