SlideShare a Scribd company logo
1 of 48
Download to read offline
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/
ご清聴ありがとうございました

More Related Content

What's hot

夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
智治 長沢
 
Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...
Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...
Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...
Kenji Hiranabe
 
チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー
Minami Kumamoto
 
Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年
Satoko Shiroi
 

What's hot (20)

Slackを導入しよう
Slackを導入しよう Slackを導入しよう
Slackを導入しよう
 
現場で役立つシステム設計の原則への感謝
現場で役立つシステム設計の原則への感謝現場で役立つシステム設計の原則への感謝
現場で役立つシステム設計の原則への感謝
 
ペアプロのオイシイ料理法、おしえます。
ペアプロのオイシイ料理法、おしえます。ペアプロのオイシイ料理法、おしえます。
ペアプロのオイシイ料理法、おしえます。
 
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
 
SEゼミ2014 - 練習
SEゼミ2014 - 練習SEゼミ2014 - 練習
SEゼミ2014 - 練習
 
SEゼミ2014 - 練習
SEゼミ2014 - 練習SEゼミ2014 - 練習
SEゼミ2014 - 練習
 
知ってるようで知らないWeb基礎セミナー
知ってるようで知らないWeb基礎セミナー知ってるようで知らないWeb基礎セミナー
知ってるようで知らないWeb基礎セミナー
 
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
 
Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...
Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...
Scrum, Agile, XP, at Community Lightning Talks at Developers Summit 2013 from...
 
DevOps 概要 - インフラ革命、今起きていること
DevOps 概要 - インフラ革命、今起きていることDevOps 概要 - インフラ革命、今起きていること
DevOps 概要 - インフラ革命、今起きていること
 
QA teamを組成した話
QA teamを組成した話QA teamを組成した話
QA teamを組成した話
 
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
 
Javaユーザに知ってほしい Processing入門
Javaユーザに知ってほしいProcessing入門Javaユーザに知ってほしいProcessing入門
Javaユーザに知ってほしい Processing入門
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
 
チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー
 
缶詰屋さんの課題解決にスクラムを使ってみた
缶詰屋さんの課題解決にスクラムを使ってみた缶詰屋さんの課題解決にスクラムを使ってみた
缶詰屋さんの課題解決にスクラムを使ってみた
 
はじめてのチーム開発 〜失敗だらけの1年間から学んだもの(仮)
はじめてのチーム開発 〜失敗だらけの1年間から学んだもの(仮)はじめてのチーム開発 〜失敗だらけの1年間から学んだもの(仮)
はじめてのチーム開発 〜失敗だらけの1年間から学んだもの(仮)
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年
 

Similar to Serverless LT 20201202

DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
 
よりよい開発を目指すための、プロセス&ツール活用
よりよい開発を目指すための、プロセス&ツール活用よりよい開発を目指すための、プロセス&ツール活用
よりよい開発を目指すための、プロセス&ツール活用
Kaoru NAKAMURA
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
Manato KAMEYA
 

Similar to Serverless LT 20201202 (20)

DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
 
よりよい開発を目指すための、プロセス&ツール活用
よりよい開発を目指すための、プロセス&ツール活用よりよい開発を目指すための、プロセス&ツール活用
よりよい開発を目指すための、プロセス&ツール活用
 
20200803 プログラミングの基礎
20200803 プログラミングの基礎20200803 プログラミングの基礎
20200803 プログラミングの基礎
 
Pureyes tutrial for raspberrypi kit
Pureyes tutrial for raspberrypi kitPureyes tutrial for raspberrypi kit
Pureyes tutrial for raspberrypi kit
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Developmentアジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
 
01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門
 
クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成クラッシュフィーバーのシステム構成
クラッシュフィーバーのシステム構成
 
Scrum"再"入門
Scrum"再"入門Scrum"再"入門
Scrum"再"入門
 
プログラミングってなに?
プログラミングってなに?プログラミングってなに?
プログラミングってなに?
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
 
初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2) 初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2)
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
 
スマートフォンゲームの開発について概要編
スマートフォンゲームの開発について概要編スマートフォンゲームの開発について概要編
スマートフォンゲームの開発について概要編
 
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
 
eXtremeProgramming入門
eXtremeProgramming入門eXtremeProgramming入門
eXtremeProgramming入門
 

Serverless LT 20201202