Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
小さく始めるデータ基盤
Search
Reiji Kainuma
February 07, 2022
Programming
2
1.3k
小さく始めるデータ基盤
https://github.com/reizist/slide/tree/master/datatech_casual%231
Reiji Kainuma
February 07, 2022
Tweet
Share
More Decks by Reiji Kainuma
See All by Reiji Kainuma
Airflow1=>Airflow2へのupgrade 事例紹介
reizist
0
730
lambdaのソース管理@meguro.dev#5/infrastructure as code of lambda
reizist
0
240
Other Decks in Programming
See All in Programming
Linux && Docker 研修/Linux && Docker training
forrep
22
4.1k
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
500
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
1
500
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
200
CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜
nnaka2992
0
190
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
100
functionalなアプローチで動的要素を排除する
ryopeko
1
930
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
150
Amazon Bedrock Multi Agentsを試してきた
tm2
1
220
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
3
310
チームの立て直し施策をGoogleの 『効果的なチーム』と見比べてみた
maroon8021
0
270
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
980
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Navigating Team Friction
lara
183
15k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Statistics for Hackers
jakevdp
797
220k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
GraphQLとの向き合い方2022年版
quramy
44
13k
Visualization
eitanlees
146
15k
Building an army of robots
kneath
302
45k
Scaling GitHub
holman
459
140k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Transcript
小さく始めるデータ基盤 @reizist 1 / 18
自己紹介 @reizist Web Backend / Infra / Data (Infra) R
なんとかという会社で データエンジニア 最近CloudComposer2 と戯れています 2 / 18
背景 データ基盤はもはや大規模サービスにのみ必要なものではない スタートアップでもデータ基盤の需要は増えてきている 今回 副業で enpay.Inc で構築した事例を紹介します 3 / 18
事前制約 外部にダッシュボードを埋め込みで提供したい Looker を採用したい 4 / 18
重要視した方針 汎用化 エンハンス/ リプレイスしやすい技術を採用 作り込まない Airflow, Argo Workflow 等ワークフローエンジンの採用を見送る リスク最小化
DWH には個人情報を一切入れない「全部なし戦略」 5 / 18
どんなデータを集める? 1. クライアントログ 2. DB 3. 各SaaS(kintone) 6 / 18
どこにデータを集める? BigQuery エコシステムが整って枯れているBigQuery に不満がなかった 権限周り/cli 周りの取り回し Snowflake のtrial してみたいと思いつつ.. 7
/ 18
Q. どうやってデータを集める? 真っ先にtrocco をtrial で導入し検討した あらゆるデータソースに対応していて要件(DB, SaaS からのデー タ取り込み) は満たせた
が要件に対してはコストが見合わなかったので断念 Embulk on CloudRun を採用 コンテナベースなので安心 8 / 18
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
DB Aurora instance から個人情報をすべてマスク済のsnapshot を作成 snapshot からS3 にParquet でexport S3
に DB のデータがリスクのない状態で配置 CloudRun 上で実行されるbq load によりS3 のParquet をBQ にimport 10 / 18
SaaS Embulk on CloudRun CloudRun のroot endpoint にアクセスすると実装済のすべての embulk config
をsequential にembulk run する 環境変数によって個別に実行可能 SaaS 毎のendpoint を作る等自由に拡張可能 11 / 18
ClientLog Google 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