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
Serverlessで構成するEvent Driven Data Platform
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kazuki Maeda
December 23, 2020
Programming
0
78
Serverlessで構成するEvent Driven Data Platform
Kazuki Maeda
December 23, 2020
Tweet
Share
More Decks by Kazuki Maeda
See All by Kazuki Maeda
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
700
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
3
1.9k
日本の教育の未来 を考える テクノロジーは教育をどのように変えるのか
kzkmaeda
1
300
モノリスの認知負荷に立ち向かう、コードの所有者という思想と現実
kzkmaeda
0
270
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
9
7.2k
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
6.9k
生成AIを用いた 新しい学びの体験を 提供するまでの道のり
kzkmaeda
0
440
生成AIによって変わる世界 -可能性とリスクについて考える-
kzkmaeda
2
400
新しいことを組織ではじめる、そしてつづける
kzkmaeda
5
1.1k
Other Decks in Programming
See All in Programming
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
290
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
CSC307 Lecture 06
javiergs
PRO
0
690
Oxlint JS plugins
kazupon
1
960
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
Raku Raku Notion 20260128
hareyakayuruyaka
0
300
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
Data-Centric Kaggle
isax1015
2
780
AtCoder Conference 2025
shindannin
0
1.1k
並行開発のためのコードレビュー
miyukiw
0
210
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.1k
The Pragmatic Product Professional
lauravandoore
37
7.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring anti-patterns in Rails
aemeredith
2
250
Prompt Engineering for Job Search
mfonobong
0
160
The Cult of Friendly URLs
andyhume
79
6.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Being A Developer After 40
akosma
91
590k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Transcript
Serverlessで構成する Event Driven Data Platform SREマネージャー 前田
自己紹介 • 前田 和樹( @kzk_maeda ) • SRE Manager at
Progate • ギターやベースなど弾きます • 週末は2人の子どもに忙殺されてます
1. About Company 2. About System 3. About Data Platform
4. About Future 5. Closing Index
About Company 何をしている会社?
オンラインプログラミングサービス 初心者でも学びやすい学習環境をご用意。 日本語版と英語版を展開しています。 イラスト中心のスライドで学ぶ プログラムを書いて学ぶ 紙の本よりも直感的で、動画よりも学びやすい「スライド学習」を採用しました。 自分のペースで学習できること、復習しやすいことが強みです。 実際にプロダクトを作りながら学ぶから、使えるスキルが身につきます。 ブラウザ上でコードを書いて結果も確認。すぐにプログラミングが実践できます。 |
About Our Service 概要
スライド 演習 スライド 演習 達成 達成
累計ユーザー数推移 日本 over 1,450,000人 (2020/12/01 時点) 単位:人
累計ユーザー数推移 インド (2020/12/01 時点) over 200,000人 単位:人
累計ユーザー数推移 インドネシア (2020/12/01 時点) over 70,000人 単位:人
About System どうやって創っている?
Architecture概要
複数のAWSアカウントをOrganizationで管理 - Production / Staging / Base(認証用) Architecture概要
基本のWeb機能は ALB + EC2(ASG) + Redis + Aurora(MySQL) Github +
CircleCIでRolling Update Architecture概要
ユーザーのコード実行環境として EC2でホストしたDocker Swarmクラスタを構成 - chatbotからcluster毎B/G Deploy可能 Architecture概要
ProductionのSwarm Clusterは複数Regionに分散 Architecture概要
Application周りのログはfluentd+KDF -> S3 監視はNewRelicに統合中 Architecture概要
使用技術 • Frontend ◦ React / React Native • Server-Side
◦ Ruby on Rails / Node.js • Infrastructure ◦ AWS(ALB, EC2, Fargate, RDS, ElastiCache, Lambda, APIGW, KDF, etc...) ◦ Terraform / Serverless Framework ◦ Docker / Docker Swarm • Other ◦ Github / DockerHub / Circle CI / Slack / Asana / DocBase
About Data Platform データ基盤について
対象とするデータ 更新頻度 分析活用 埋蔵金 • 活用用途を見出せてないデータ Master Data • Users
• Lessons • Languages Transactional Data • UserCodes • LessonHistories • Logs
データ要件 • 1日ごとの全件同期 • センシティブなデータの取り扱い ◦ 特定データには認可された人のみがアクセス可能な状態 • BI(redash)からクエリ
Data Platform Architecture
Data Platform Architecture RDS上のデータを DataCatalog化する
Data Platform Architecture • RDS SnapshotのS3Export機能を活用 ◦ parquet形式のファイルをS3に定期Upload可能 ◦ RDSに対してread負荷がかからない
• Data PipelineのレイヤはDatalake的な思想で構成 ◦ 収集→蓄積→変換→分析 ◦ 各レイヤをイベントドリブンで接続 • DataCatalogをセキュリティレベル別に分離 ◦ Sensitiveなデータとそうではないデータ ◦ 同一DataSourceからPipeline上で複数のCatalogを生成
Data Platform Architecture 収集 蓄積 変換 分析 DataPipelineをDatalake思想で構成 収集→蓄積→変換→分析 各Layerはイベントドリブン(SNS/SQS
+ Lambda)で接続
Data Platform Architecture Event RDSのSnapshot関連のイベントトリガー は、RDS Event Subscription→SNS SNSのSubscriberとしてLambdaが起動 Event
Event
Data Platform Architecture Sensitive Data Normal Data Sensitive DataのLayerとNormal Dataの
Layerで構成 ここもイベント接続
詰まった点1 RDS Event Subscriptionの仕様
なにが起きたか • Snapshotの作成とSnapshot Exportが同じEvent SubscriptionのEvent Categoryに属するので、どちらも同じSNS TopicにSubscribeされる • 別のEventとして単一責務のLambdaをSubscriberに設定する予定だった が、それぞれのEventを同一Lambda内で処理する必要性が
なにが起きたか 同じEvent Subscriptionから 通知される
どうしたか • 後続のLambdaを同一Functionとし、SNSのMessageによって実行する処理 を分岐 ◦ snapshot created イベントに対しては snapshot export
を実施 ◦ export task completed イベントに対しては後続の GlueJobをKick • 管理上関数を分けたかったが、全体をterraformで管理することとResource Groupを有効にすることで許容
詰まった点2 Snapshot Exportの仕様
なにが起きたか • RDS Snapshot ExportタスクによってSnapshotがS3にExportされる際、 Export Task名のPrefix配下にSnapshotが配置される • 後続処理でExportされたSnapshotデータを特定する際に、Export Task名と
して何が指定されたかを正確に把握する必要がある ◦ yyyy-mm-ddなどで値を決めると、リトライが発生した際のハンドリングが面倒
なにが起きたか ここで決めたTask名を こっちで正確に知る必要がある
どうしたか • Export Task実行時に決めた名前をSQSにメッセージング • 後続のLambdaの中でSQSにキューイングされたメッセージから設定された Export Task名を取得し、S3上のPathを把握 • GlueJob
/ Crawlerの実行を容易にするため、/latest 配下にcopy
どうしたか Task名をQueuing SQSからTask名を取得→/latestにcopy
詰まった点3 Data Pipelineのモニタリング
なにが起きたか • StepFunction管理にしなかったので、Pipelineのどこまで実行されているのか などのモニタリングが困難 • X-Rayでかっこよくいけるやろと思ってたけど、机上で調べてる限りやりたいこ との実現は難しそう ※理想
どうしたか • PipelineのStep毎にDynamoDBに状況を書き込むようにした ◦ Export Task名をPrimary Keyとして利用 • エラーで落ちた場合はエラーメッセージもDDBに格納されるので、どこまで実 行されてなぜ落ちたのかの大体の情報はDDBで完結
Step毎に書き込み エラー時はメッセージも
その他の知見 • 大まかなアーキテクチャはAWSのAsk an expertを活用してレビューしてもら えた。ライトに相談できる場としてすごく助かる。 • AWSから毎日のようにアナウンスされる便利機能アップデートは銀の弾丸で はない。自分たちのシステムに落とし込む上では考えたり実装したりするポイ ントがたくさん出てくる
• AWSサービスのアイコンを並べて設計した気になってるおじさんにならないよ うに気を付ける
About Future 今後の展望
データの更なる活用 更新頻度 分析活用 埋蔵金 • 活用用途を見出せてないデータ Master Data Transactional Data
活用ラインの 拡大 多様なトランザクショ ンデータ取得
データの更なる活用 データ活用の 多面化・組織化
新しい技術の活用 • 先日リリースされたマネージドAirFlow(MWAA)で後半のジョブネットはワーク フロー化できるかもしれないので、折を見て検証したい • 今日発表された Glue Elastic View との親和性など??
◦ 作ってるやつほぼ捨てられる・・・・???
Closing 最後に
結論 • RDSのsnapshot export機能を使えば、Master DataをDatalakeに簡単に格 納することが可能 • だと思っていた時期がありました。 • イベントドリブンなパイプラインのモニタリングはX-Ray
• だと思っていた時期がありました(要追加検証)。 • マネージドサービスを実要件での活用に落とし込んで行くには、結局はエンジ ニアリングが必要。 • AWS支援体制は積極的に活用していくのがいい
エンジニア積極採用中 • Progateではエンジニアを積極採用しています • プログラミング教育事業に興味がある、グローバルサービスに携わりたい、な ど、気になるポイントあれば是非ご連絡ください • 詳しくは採用サイトへ ◦ https://prog-8.com/about/careers
TechBlogはじめました • Progate TechBlogを開設しました • Advent Calendar期間を活用し、積極的に発信していきます • 詳しくはBlog ◦
https://tech.prog-8.com/
ご清聴ありがとうございました