西尾 友佑2023年2月9日 BrainPadエンジニアトーク#5ETL-実例に基づくケーススタディ-
View Slide
© BrainPad Inc. 2● 名前: 西尾 友佑(Yusuke Nishio)● 所属: ブレインパッドプロダクトビジネス本開発部○ 2016年7月より現職● 登壇歴○ PyCon JP 2018, 2020登壇● 趣味○ サッカー観戦/音楽鑑賞● Twitter(@BrainPadProduct)の中の人● BrainPadエンジニアトーク主宰自己紹介
© BrainPad Inc. 3● ETLとは● 生まれた背景● 活用事例● ETLを支える技術● まとめアジェンダ
ETLとは
© BrainPad Inc. 5● Extract(抽出)Transform(変換)Load(格納)の略でデータ統合時に発生する各プロセスの頭文字をとったものですETLとは
© BrainPad Inc. 6● ETL○ 抽出後に変換してから格納○ DBの容量を逼迫しない○ 加工では開発の知識が必要になる● ELT○ 抽出後に格納してから変換○ 取り込みのスピードが早い○ DBの容量を逼迫しやすいETLとELTの違い
© BrainPad Inc. 7● 決まった時間にお客様の環境にアクセスしデータを取りに行くこともできます● ストレージにデータが置かれたタイミングをトリガーとして受け渡しすることもできますデータ受け渡し方法
生まれた背景
© BrainPad Inc. 9プロダクトマップ基幹システムデータ顧客固有データWEBアプリアプリPushメールLINEデータ統合 分析 可視化 意思決定 実行オウンドデータソーシャルデータパブリックDMP、データセラー、位置情報、天候データなどRtoasterタグ、SDK各プロダクト実行ログ外部データ個別データ広告媒体データ顧客接点データ統合基盤(CDP)SNS拡張分析ツールソーシャルメディア 分析ツールマーケティングオートメーション(MA)パーソナライズ・レコメンドマッチングエンジンメッセージ(Push配信)分析ツールスポンサードサーチディスプレイアドネットワーク(YDN)
© BrainPad Inc. 10ETLのカバー範囲基幹システムデータ顧客固有データWEBアプリアプリPushメールLINEデータ統合 分析 可視化 意思決定 実行オウンドデータソーシャルデータパブリックDMP、データセラー、位置情報、天候データなどRtoasterタグ、SDK各プロダクト実行ログ外部データ個別データ広告媒体データ顧客接点データ統合基盤(CDP)SNS拡張分析ツールソーシャルメディア 分析ツールマーケティングオートメーション(MA)パーソナライズ・レコメンドマッチングエンジンメッセージ(Push配信)分析ツールスポンサードサーチディスプレイアドネットワーク(YDN)連携 連携連携連携
© BrainPad Inc. 11● 元々action+と連携する時いくつかの方法が用意されていた● どの方法も先方によるデータ加工が必要となってしまうため加工部分をaction+側で担保して欲しいという要望があった● 上記の要望を叶えるためにETLが誕生役割としてはaction+に対するETL部分を担うことが主な目的であった誕生
© BrainPad Inc. 12● action+への連携に特化することで各プロダクトで機能開発とは異なる汎用化仕切れない連携業務の省力化に繋がった● ファイルの圧縮・解凍、カラム名の変更といった本質的ではない細かいエッジケースへの対応をETLに寄せることが出来た● 開発リソースを持たないクライアントからの要望を拾うことが出来たことで連携可能になるケースもあった誕生
© BrainPad Inc. 13● 基本は1日1回のバッチ処理です○ ポーリング機能もありニアリアルタイム起動も可能です● 状態を永続的に保存するものではありません○ データのステータスなどの情報は保持しません● 案件ごとに仕様が異なるため以下の情報は案件毎に算出します○ 初期費用・運用費・開発工数● クライアントが設定変更するものではありません○ ETL担当エンジニアが実施します弊社でのETL
活用事例
© BrainPad Inc. 15● お客様がオンライン販売と実店舗販売、両方持っており、実店舗での売上データもaction+に投入したい● お客様のシステムで持っているアイテムやユーザーデータをaction+に投入したい● action+からの出力ファイルを、お客様のシステムに連携したい● Rtoasterファミリー/Probance/Conomi等を導入したいが各サービスとお客様側を連携する部分の開発が必要だ○ 具体例■ ファイルの整形■ データのフィルタどんな時にETLを使うことを検討するのか
© BrainPad Inc. 16基本イメージ● 他社環境に配置されたデータを加工してBrainPadの仲介用サーバーなど取得可能な環境にファイルを出力他社環境 ETLファイル取得↓連携用ファイル配置仲介用サーバーA AB B
© BrainPad Inc. 17分割● 分割して連携する他社環境 ETLファイル加工AはそのままBは分割仲介用サーバーABAB1B2 B3
© BrainPad Inc. 18統合● 統合して連携する他社環境 ETLファイル統合仲介用サーバーABC
© BrainPad Inc.● 分割し複数のプロダクトに連携する19複数のプロダクトへ渡す他社環境 ETLファイル加工仲介用サーバーs3MAツール
© BrainPad Inc. 20● お客様がオンライン販売と実店舗販売、両方持っており、実店舗での売上データもaction+に投入したい● お客様のシステムで持っているアイテムやユーザーデータをaction+に投入したい● action+からの出力ファイルを、お客様のシステムに送りたい● Rtoasterファミリー/Probance/Conomi等を導入したいが各サービスとお客様側を連携する部分の開発が必要だ○ 具体例■ ファイルの整形■ データのフィルタどんな時にETLを使うことを検討するのか主に各種加工について話します
© BrainPad Inc. 21● action+やinsight+から取得したデータを加工してBrainPadの仲介用サーバーや他社環境などへ出力します各種加工(データアウトプット)データレイク ETLトラッキングログ取得↓連携用ファイル作成tracking仲介用サーバー
© BrainPad Inc.● 他社環境に配置されたデータを加工してBrainPadの仲介用サーバーなど取得可能な環境にファイルを出力22各種加工(データインポート)他社環境 ETLファイル取得↓連携用ファイル作成仲介用サーバー
© BrainPad Inc. 23● 出力結果そのままのフォーマットでは実現出来ないプロダクト間連携をETLで加工することでプロダクト間連携時のハブ役割を果たします各種加工(プロダクト間連携)ファイル取得↓連携用ファイル作成ETL
ETLを支える技術
© BrainPad Inc. 25● 弊社でOSS化したライブラリcliboaを使用しています● cliboaとは■ BrainPad社内で開発・運用が行われていたETL処理機能の共通基盤部分をアプリケーションフレームワークとして設計・実装し直したもの○ PyPi■ https://pypi.org/project/cliboa/○ GitHub■ https://github.com/BrainPad/cliboa■ プルリクエストお待ちしていますETLを支える技術
© BrainPad Inc. 26設定例SFTPを使用してダウンロードS3へアップロード
© BrainPad Inc. 27アーキテクチャスケジュール登録プログラムアップロードスケジュール実行インスタンス作成実行↓インスタンス終了プログラム取得①②③④⑤ ⑥
まとめ
© BrainPad Inc. 29● ETL自体は連携において必要不可欠なものです都度開発していると対応コストがかかってしまいます● 汎用化しきれないケースも多いです● モジュール化して対応コスト省力化を測ったりインスタンスを並列実行出来るように都度改善し続けて今の状態があります● これからも改善を続けていきますまとめ