データ分析基盤の調査及びまとめ
データ分析基盤を構築するのに紆余曲折あったので、まとめていく
Part.1ではOSSツール用いて開発したが、途中で開発を中断した事について書く
Part.2では構築した際に用いたツールについて記載予定
背景
分析基盤が存在していなく、データ分析やAIの開発はローカル環境で実施しており、作業が非効率となっていた
目的
データ分析基盤を作る事で作業のスピードを上げ、DX推進を図る
構成図
ざっくりとした構成図は以下の図の通り
データレイク・DWH・データマートの3層構造でデータ活用を予定
データ分析基盤を構築する上で、以下3点を調査・検討する必要がある
①:クラウド(DWH)の選定
②:ETLツールの選定
③:ワークフローの選定
調査
DWHの選定 (AWS or GCP どっちなのか?)
分析の要となるDWHを決める必要がある
様々な記事を見る限りどうやらRedShiftとBigQueryが2強らしい(snowflakeは記事が少なかった...)
BigQuery | RedShift | |
---|---|---|
環境設定有無 | 無 | 有 |
スケーリング | オート | マニュアル |
料金 | 分析量&ストレージ量に応じた従量課金 | コンピューティングリソースに応じた従量課金 |
データ加工 | 加工前・後のデータを永続的に保持可能 | 複雑なパイプラインをサービス上で定義可能 |
データ連携 | サービス内でデータを保存 | サービス外でデータを保存 |
BigQueryのシンプルなUI/UXに惹かれて、BigQueryを採用
ETLツールの選定
DWHは決まったが、データを移送するに何を使えば良いのか決まっていなかったので、洗い出した
提供形態 | ツール名 | コネクタの機能性 | デバックのし易さ |
---|---|---|---|
オープンソース | Embulk,flutend,Apache Sqoop | △ | ◯ |
有償製品 | DataSpider,ASTERIA,Talend | ◯ | ✕ |
クラウド | AWS Glue,AWS DMS,GCP CDF,DCP DMS | ◯ | △ |
有償ツールはどれも定額かつ高額で、作業に対して効果を出せないと感じていたのでOSSを選定
OSSの中でも多くの企業で採用されている? Embulkを採用
ワークフローの選定
Embulk単体だけでは定期的データを持って来れないので、Embulkを動かすワークフローが必要
ツール名 | 概要 | 言語 |
---|---|---|
Apache Airflow (OSS) | 定期的(日次)に動かすデータパイプラインの記述に特化 | Python |
Luigi (OSS) | Pythonで書かれたデータフロー制御フレームワーク | Python |
Digdag (OSS) | yamlでシンプルにワークフローを定義 | yaml |
Prefect(OSS) | Luigiの上位互換 | Python |
Argo (OSS) | ジョブをk8s上で動かすよう汎用的に記述 | yaml |
Kubeflow (OSS) | パイプラインを定義しそれらを管理、統合するためのツール | Python |
Cloud Composer (GCP) | Apache Airflowと同様 | yaml |
Embulkを軸して、参考記事を漁っていたら、記事が多いDigdagを採用
結果
実施したこととしては3つ
①:Embulk単体でデータ移送 (ローカル検証)
→検証成功
DBデータの移送は非常に簡単!
しかし、他アプリケーションに対応しているケースが少なかったので別途でフルスクラッチ開発が必要
②:DigDagとEmbulkを組み合わせてデータ移送 (ローカル検証)
→検証成功
DigDagとEmbulkはDockerを用いて検証
DigDagの書き方に慣れる必要があり、保守・運用をするのは現状のメンバーだと厳しい
③:GCP上で②を実装
→検証失敗
GCEで検証出来たが、費用とセキュリティ面で課題
Cloud run は仕様理解が足りていなく、検証まで至らなかった
総括
OSSのEmbulkとDiddagを用いて分析基盤を作ろうとしたが、課題が想定以上に多く出たため開発を断念
[課題]
1.費用面
2.セキュリティ面
3.学習コスト面
今後は課題をある程度クリアするために調査を継続していく(Part.2に続きます)
参考
検証するに辺り各サイトを参考にさせていただきました
[選定部分]
https://boxil.jp/mag/a2392/
https://qiita.com/elyunim26/items/15db924e4c9833e5050a
[実装部分]
https://www.m3tech.blog/entry/2020/12/19/110000
https://engineer.blog.lancers.jp/sre/replace-digdag/
https://www.datacurrent.co.jp/column/embulk-on-docker20210519/
https://qiita.com/hoto17296/items/a7d69172050fa9aab045
[公式ドキュメント]
・Embulk
https://qiita.com/hoto17296/items/a7d69172050fa9aab045
・Digdag
https://docs.digdag.io/
[書籍]
実践的データ基盤への処方箋〜 ビジネス価値創出のためのデータ・システム・ヒトのノウハウ
https://amzn.to/3O1DRNW