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

小さく始めるデータ基盤

 小さく始めるデータ基盤

Reiji Kainuma

February 07, 2022
Tweet

More Decks by Reiji Kainuma

Other Decks in Programming

Transcript

  1. 小さく始めるデータ基盤
    @reizist
    1 / 18

    View Slide

  2. 自己紹介
    @reizist

    Web Backend / Infra / Data (Infra)

    R
    なんとかという会社で

    データエンジニア
    最近CloudComposer2
    と戯れています
    2 / 18

    View Slide

  3. 背景
    データ基盤はもはや大規模サービスにのみ必要なものではない
    スタートアップでもデータ基盤の需要は増えてきている
    今回 副業で enpay.Inc
    で構築した事例を紹介します
    3 / 18

    View Slide

  4. 事前制約
    外部にダッシュボードを埋め込みで提供したい
    Looker
    を採用したい
    4 / 18

    View Slide

  5. 重要視した方針
    汎用化
    エンハンス/
    リプレイスしやすい技術を採用
    作り込まない
    Airflow, Argo Workflow
    等ワークフローエンジンの採用を見送る
    リスク最小化
    DWH
    には個人情報を一切入れない「全部なし戦略」
    5 / 18

    View Slide

  6. どんなデータを集める?
    1.
    クライアントログ
    2. DB
    3.
    各SaaS(kintone)
    6 / 18

    View Slide

  7. どこにデータを集める?
    BigQuery
    エコシステムが整って枯れているBigQuery
    に不満がなかった
    権限周り/cli
    周りの取り回し
    Snowflake
    のtrial
    してみたいと思いつつ..
    7 / 18

    View Slide

  8. Q.
    どうやってデータを集める?
    真っ先にtrocco
    をtrial
    で導入し検討した
    あらゆるデータソースに対応していて要件(DB, SaaS
    からのデー
    タ取り込み)
    は満たせた
    が要件に対してはコストが見合わなかったので断念
    Embulk on CloudRun
    を採用
    コンテナベースなので安心
    8 / 18

    View Slide

  9. Amazon S3
    Amazon RDS
    Cloud
    Build
    Cloud
    Storage
    db-importer
    Cloud Run
    Push
    AWS Step Functions
    workflow
    rds-exporter
    Create
    DBClusterSnapshot
    StartExportTask
    EventBridge
    run-embulk
    Cloud Run
    BigQuery
    DB
    SaaS
    ClientLog
    9 / 18

    View Slide

  10. DB
    Aurora instance
    から個人情報をすべてマスク済のsnapshot
    を作成
    snapshot
    からS3
    にParquet
    でexport
    S3

    DB
    のデータがリスクのない状態で配置
    CloudRun
    上で実行されるbq load
    によりS3
    のParquet
    をBQ
    にimport
    10 / 18

    View Slide

  11. SaaS
    Embulk on CloudRun
    CloudRun
    のroot endpoint
    にアクセスすると実装済のすべての
    embulk config
    をsequential
    にembulk run
    する
    環境変数によって個別に実行可能
    SaaS
    毎のendpoint
    を作る等自由に拡張可能
    11 / 18

    View Slide

  12. ClientLog
    Google Analytics
    必要な箇所で trackEvent
    を呼ぶだけでBQ
    にほぼリアルタイムにロ
    ギングされる
    export const EventTracker = {
    trackEvent: function (event_name: string, payload: any) {
    try {
    gtag('event', event_name, payload)
    12 / 18

    View Slide

  13. どうやって使っている?
    まずはsales/cs
    メンバー向けのkintone
    ダッシュボード上でLooker

    ッシュボードを埋め込み表示
    今後エンドユーザーに便利ダッシュボードを公開予定
    13 / 18

    View Slide

  14. 14 / 18

    View Slide

  15. 稼働状況
    StepFunction, CloudRun
    共に

    daily job
    は実装完了後一度も落ちていない
    15 / 18

    View Slide

  16. ランニングコスト
    実質無料
    CloudRun & BQ (& CloudBuild)
    で200
    円くらい
    CloudRun
    最高!
    16 / 18

    View Slide

  17. enpay
    のプロダクト/
    データに興味がある方はこちらへどうぞ!

    Looker
    採用決定したCTO
    がカジュアルにトークします
    17 / 18

    View Slide

  18. まずは小さく始めよう
    18 / 18

    View Slide