← Back datatech casual · 2022.07.01 ·20 slides 小さく始めるデータ基盤 副業で enpay にてゼロから構築したデータ基盤事例。BigQuery / Embulk / CloudRun を中心に、つくり込まないことを優先した構成 小さく始めるデータ基盤 @reizist 自己紹介 @reizist Web Backend / Infra / Data (Infra) Rなんとかという会社で データエンジニア 最近CloudComposer2と戯れています 背景 データ基盤はもはや大規模サービスにのみ必要なものではない スタートアップでもデータ基盤の需要は増えてきている 今回 副業で enpay.Inc で構築した事例を紹介します 事前制約 外部にダッシュボードを埋め込みで提供したい Lookerを採用したい 重要視した方針 汎用化 エンハンス/リプレイスしやすい技術を採用 作り込まない Airflow, Argo Workflow等ワークフローエンジンの採用を見送る リスク最小化 DWHには個人情報を一切入れない「全部なし戦略」 どんなデータを集める? クライアントログ DB 各SaaS(kintone) どこにデータを集める? BigQuery エコシステムが整って枯れているBigQueryに不満がなかった 権限周り/cli周りの取り回し Snowflakeのtrialしてみたいと思いつつ.. Q. どうやってデータを集める? 真っ先にtroccoをtrialで導入し検討した あらゆるデータソースに対応していて要件(DB, SaaSからのデータ取り込み)は満たせた が要件に対してはコストが見合わなかったので断念 Embulk on CloudRunを採用 コンテナベースなので安心 DB Aurora instanceから個人情報をすべてマスク済のsnapshotを作成 snapshotからS3にParquetでexport S3にDBのデータがリスクのない状態で配置 CloudRun上で実行されるbq loadによりS3のParquetをBQにimport SaaS Embulk on CloudRun CloudRunのroot endpointにアクセスすると実装済のすべてのembulk configをsequentialにembulk runする 環境変数によって個別に実行可能 SaaS毎のendpointを作る等自由に拡張可能 ClientLog Google Analytics 必要な箇所で trackEvent を呼ぶだけでBQにほぼリアルタイムにロギングされる export const EventTracker = { trackEvent: function (event_name: string, payload: any) { try { gtag('event', event_name, payload) } catch (error) { ... } }, } どうやって使っている? まずはsales/csメンバー向けのkintoneダッシュボード上でLookerダッシュボードを埋め込み表示 今後エンドユーザーに便利ダッシュボードを公開予定 稼働状況 StepFunction, CloudRun共に daily jobは実装完了後一度も落ちていない ランニングコスト 実質無料 CloudRun & BQ (& CloudBuild)で200円くらい CloudRun最高! enpayのプロダクト/データに興味がある方はこちらへどうぞ! Looker採用決定したCTOがカジュアルにトークします まずは小さく始めよう ← 1 / 20 → ⤢