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
Kazuki Maeda
December 23, 2020
Programming
91
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Serverlessで構成するEvent Driven Data Platform
Kazuki Maeda
December 23, 2020
More Decks by Kazuki Maeda
See All by Kazuki Maeda
「答えを出す」より「わかる」をつくる
kzkmaeda
1
260
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
810
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
3
2.4k
日本の教育の未来 を考える テクノロジーは教育をどのように変えるのか
kzkmaeda
1
380
モノリスの認知負荷に立ち向かう、コードの所有者という思想と現実
kzkmaeda
0
300
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
9
8.2k
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
7.9k
生成AIを用いた 新しい学びの体験を 提供するまでの道のり
kzkmaeda
0
500
生成AIによって変わる世界 -可能性とリスクについて考える-
kzkmaeda
2
450
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
150
yield再入門 #phpcon
o0h
PRO
0
1.1k
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
270
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
470
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
400
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
400
Building a Meta Ray-Ban display app
akkeylab
0
140
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
2
330
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
510
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
790
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
280
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
370
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
410
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
490
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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/
ご清聴ありがとうございました