データ分析基盤開発プロジェクトに携わってきて学んだことをまとめ
データ分析基盤とは?
データの収集、蓄積、加工、分析という一連の流れを一貫して行う部分です。
私がプロジェクトでわかってきたこととしては以下です。
- 最近はデータドリブンな開発やデータ中心の開発などが多くなってきている。
- さまざまなデータが乱立し、再度データベースをリプレースしているプロジェクトなども散見される。
- データの分析をしやすくするための構築、マーケティングやビジネスサイドにもっと使ってもらいやすくするための環境改善をしている。
データドリブンというのは個人的見解からすると最終的にはビジネスサイドへの集約です。マーケティングとしてどう行動データを使って自社内で活用していくのかということに尽きると思います。
そのための基本としては
データ分析基盤の開発に当たった時の概要としてデータのフローを一番最初に理解することが大事になってきます。
インバウンド連携
レイヤー0(階層0) → AWSのS3などのストレージサービス、GCPならGCS(いわゆるデータレイク)
レイヤー1(階層1) → レイヤー0にあるデータを必要なカテゴリ、媒体、種別などのコンテンツごとに大まかにデータマートを構築する。
レイヤー2(階層2) → レイヤー1に存在しているデータをさらに深ぼってカテゴリ内のどの部分に使うデータなのかという分類ごとにデータマートを構築する。
レイヤー3(階層3) → レイヤー2で細分化されたデータマートからアウトバウンドへ連携するための形式に変換する部分を構築する。
アウトバウンド連携
データの連携方式について
- CSVファイルが指定のフォルダに配置されており、バケットやフォルダにアクセスして取得する。
- CSVファイルがサーバに配置されており、SFTP接続などで取得する。
- ZiPファイルでサーバや指定のフォルダに配置されており解凍処理を挟んで取得する。
他はTSVや文字コード、改行コードがいろんな形式を挟んで連携されてくるという部分はたくさんあると思いますが、基本的にはこのような連携方式かと思います。
データ分析基盤開発プロジェクトに当たるとだいたいこんなフローかと思います。
データ分析基盤で使っている技術
- AWS S3
- AWS EMR
- AWS Redshift
- Python
- PySpark
- Bigquery(GCP)
- SQL
- ShellScript
だいたいこんな感じだと思います。
できた方がいいこと
- データフローを理解してどんなアウトプットになり使用されてるのかを理解する判断力など
- PythonやShellScriptでテストのファイル作成ツールや性能試験関連ツール
- SQL操作
- クラウドのエラー関係の調査方法
- 分散処理の理解(並列処理など)
他にもたくさんあるので、一旦このような内容で展開させていただきます。