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
0
45
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
110
新しいことを組織ではじめる、そしてつづける
kzkmaeda
5
760
20240824_JAWS_PANKRATION_2024
kzkmaeda
0
45
20240416_devopsdaystokyo
kzkmaeda
1
380
20240321_生成AI時代のDevOps
kzkmaeda
2
990
20240222_LangChain_ver0.1.0_LCEL
kzkmaeda
4
360
20240201_クラウド利用料を 半額にするために取り組んだ10+のコト
kzkmaeda
4
7.1k
20231027_Bedrock勉強会
kzkmaeda
3
1.2k
20231011_LangChainコントリビュートのすゝめ
kzkmaeda
0
1.2k
Other Decks in Programming
See All in Programming
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
1.4k
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
Quine, Polyglot, 良いコード
qnighy
4
640
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
250
受け取る人から提供する人になるということ
little_rubyist
0
230
subpath importsで始めるモック生活
10tera
0
300
Contemporary Test Cases
maaretp
0
140
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
The Art of Programming - Codeland 2020
erikaheidi
52
13k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
A better future with KSS
kneath
238
17k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Happy Clients
brianwarren
98
6.7k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
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/
ご清聴ありがとうございました