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