Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MeetUP5_ETL_20230209

BrainPad
April 28, 2023

 MeetUP5_ETL_20230209

BrainPad

April 28, 2023
Tweet

More Decks by BrainPad

Other Decks in Technology

Transcript

  1. © BrainPad Inc. 2 • 名前: 西尾 友佑(Yusuke Nishio) •

    所属: ブレインパッド プロダクトビジネス本開発部 ◦ 2016年7月より現職 • 登壇歴 ◦ PyCon JP 2018, 2020登壇 • 趣味 ◦ サッカー観戦/音楽鑑賞 • Twitter(@BrainPadProduct)の中の人 • BrainPadエンジニアトーク主宰 自己紹介
  2. © BrainPad Inc. 3 • ETLとは • 生まれた背景 • 活用事例

    • ETLを支える技術 • まとめ アジェンダ
  3. © BrainPad Inc. 6 • ETL ◦ 抽出後に変換してから格納 ◦ DBの容量を逼迫しない

    ◦ 加工では開発の知識が必要になる • ELT ◦ 抽出後に格納してから変換 ◦ 取り込みのスピードが早い ◦ DBの容量を逼迫しやすい ETLとELTの違い
  4. © BrainPad Inc. 9 プロダクトマップ 基幹システムデータ 顧客固有データ WEB アプリ アプリ

    Push メール LINE データ統合 分析 可視化 意思決定 実行 オウンド データ ソーシャル データ パブリックDMP、データセラー、 位置情報、天候データなど Rtoasterタグ、SDK 各プロダクト実行ログ 外部 データ 個別 データ 広告媒体 データ 顧客接点 データ統合基盤(CDP) SNS 拡張分析ツール ソーシャルメディア 分析ツール マーケティングオートメーション(MA) パーソナライズ・レコメンド マッチングエンジン メッセージ(Push配信) 分析ツール スポンサードサーチ ディスプレイアドネットワーク (YDN)
  5. © BrainPad Inc. 10 ETLのカバー範囲 基幹システムデータ 顧客固有データ WEB アプリ アプリ

    Push メール LINE データ統合 分析 可視化 意思決定 実行 オウンド データ ソーシャル データ パブリックDMP、データセラー、 位置情報、天候データなど Rtoasterタグ、SDK 各プロダクト実行ログ 外部 データ 個別 データ 広告媒体 データ 顧客接点 データ統合基盤(CDP) SNS 拡張分析ツール ソーシャルメディア 分析ツール マーケティングオートメーション(MA) パーソナライズ・レコメンド マッチングエンジン メッセージ(Push配信) 分析ツール スポンサードサーチ ディスプレイアドネットワーク (YDN) 連携 連携 連携 連携
  6. © BrainPad Inc. 11 • 元々action+と連携する時 いくつかの方法が用意されていた • どの方法も先方によるデータ加工が 必要となってしまうため加工部分を

    action+側で担保して欲しいという要望があった • 上記の要望を叶えるためにETLが誕生 役割としてはaction+に対するETL部分を 担うことが主な目的であった 誕生
  7. © BrainPad Inc. 12 • action+への連携に特化することで 各プロダクトで機能開発とは異なる汎用化仕切れない 連携業務の省力化に繋がった • ファイルの圧縮・解凍、カラム名の変更といった

    本質的ではない細かいエッジケースへの対応を ETLに寄せることが出来た • 開発リソースを持たないクライアントからの 要望を拾うことが出来たことで 連携可能になるケースもあった 誕生
  8. © BrainPad Inc. 13 • 基本は1日1回のバッチ処理です ◦ ポーリング機能もありニアリアルタイム起動も可能です • 状態を永続的に保存するものではありません

    ◦ データのステータスなどの情報は保持しません • 案件ごとに仕様が異なるため以下の情報は案件毎に算出します ◦ 初期費用・運用費・開発工数 • クライアントが設定変更するものではありません ◦ ETL担当エンジニアが実施します 弊社でのETL
  9. © BrainPad Inc. 15 • お客様がオンライン販売と実店舗販売、両方持っており、 実店舗での売上データもaction+に投入したい • お客様のシステムで持っているアイテムやユーザーデータをaction+に投入し たい

    • action+からの出力ファイルを、お客様のシステムに連携したい • Rtoasterファミリー/Probance/Conomi等を導入したいが 各サービスとお客様側を連携する部分の開発が必要だ ◦ 具体例 ▪ ファイルの整形 ▪ データのフィルタ どんな時にETLを使うことを検討するのか
  10. © BrainPad Inc. 17 分割 • 分割して連携する 他社環境 ETL ファイル

    加工 Aは そのまま Bは分割 仲介用 サーバー A B A B1 B2 B3
  11. © BrainPad Inc. 20 • お客様がオンライン販売と実店舗販売、両方持っており、実店舗での売上 データもaction+に投入したい • お客様のシステムで持っているアイテムやユーザーデータをaction+に投入し たい

    • action+からの出力ファイルを、お客様のシステムに送りたい • Rtoasterファミリー/Probance/Conomi等を導入したいが 各サービスとお客様側を連携する部分の開発が必要だ ◦ 具体例 ▪ ファイルの整形 ▪ データのフィルタ どんな時にETLを使うことを検討するのか 主に各種加工について 話します
  12. © BrainPad Inc. 25 • 弊社でOSS化したライブラリcliboaを使用しています • cliboaとは ▪ BrainPad社内で開発・運用が行われていた

    ETL処理機能の共通基盤部分を アプリケーションフレームワークとして 設計・実装し直したもの ◦ PyPi ▪ https://pypi.org/project/cliboa/ ◦ GitHub ▪ https://github.com/BrainPad/cliboa ▪ プルリクエストお待ちしています ETLを支える技術
  13. © BrainPad Inc. 27 アーキテクチャ スケジュール登 録 プログラム アップロード スケジュール実

    行 インスタンス 作成 実行 ↓ インスタンス終 了 プログラム 取得 ① ② ③ ④ ⑤ ⑥
  14. © BrainPad Inc. 29 • ETL自体は連携において必要不可欠なものです 都度開発していると対応コストがかかってしまいます • 汎用化しきれないケースも多いです •

    モジュール化して対応コスト省力化を測ったり インスタンスを並列実行出来るように 都度改善し続けて今の状態があります • これからも改善を続けていきます まとめ