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
サーバーレスで始める ゆるふわデータ基盤 - noteの事例 -
Search
Retu Fukui
September 12, 2020
Technology
2
7.4k
サーバーレスで始める ゆるふわデータ基盤 - noteの事例 -
2020/09/12 JAWS SONIC 2020 & MIDNIGHT JAWS 2020にてnoteにおけるデータ基盤の事例をお話しました。
Retu Fukui
September 12, 2020
Tweet
Share
More Decks by Retu Fukui
See All by Retu Fukui
開発生産性と品質の横断的な課題を解決する!エンジニアリング支援室の挑戦 -1Qで取り組んだことを添えて-
fukuiretu
2
6.2k
EMになって最初の失敗談 - コミュニケーション編 -
fukuiretu
2
6.1k
問い合わせ対応当番を自動化で業務効率化している話
fukuiretu
0
690
191109_sacss.pdf
fukuiretu
1
2.3k
noteをNuxt.jsで再構築した話 -2nd-
fukuiretu
6
12k
CloudFront use cases - noteの事例 -
fukuiretu
0
8.6k
181117_wannatech.pdf
fukuiretu
1
490
noteをNuxt.jsで再構築した話
fukuiretu
22
56k
フロントエンド刷新中のnoteの開発環境について
fukuiretu
6
7.6k
Other Decks in Technology
See All in Technology
Fargateを使った研修の話
takesection
0
130
CyberAgent 生成AI Deep Dive with Amazon Web Services / genai-aws
cyberagentdevelopers
PRO
1
480
Apple/Google/Amazonの決済システムの違いを踏まえた定期購読課金システムの構築 / abema-billing-system
cyberagentdevelopers
PRO
1
220
Gradle: The Build System That Loves To Hate You
aurimas
2
150
君は隠しイベントを見つけれるか?
mujyun
0
300
VPC間の接続方法を整理してみた #自治体クラウド勉強会
non97
1
880
Automated Promptingを目指すその前に / Before we can aim for Automated Prompting
rkaga
0
110
分布で見る効果検証入門 / ai-distributional-effect
cyberagentdevelopers
PRO
4
700
スプリントゴールにチームの状態も設定する背景とその効果 / Team state in sprint goals why and impact
kakehashi
2
100
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.4k
現地でMeet Upをやる場合の注意点〜反省点を添えて〜
shotashiratori
0
530
CAMERA-Suite: 広告文生成のための評価スイート / ai-camera-suite
cyberagentdevelopers
PRO
3
270
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
3
370
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
290
Building a Scalable Design System with Sketch
lauravandoore
459
33k
4 Signs Your Business is Dying
shpigford
180
21k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Testing 201, or: Great Expectations
jmmastey
38
7k
How GitHub (no longer) Works
holman
311
140k
Code Review Best Practice
trishagee
64
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
Transcript
αʔόʔϨεͰ࢝ΊΔ ΏΔ;Θσʔλج൫ OPUFͷࣄྫ +"8440/*$&.*%/*()5+"84 Ҫ
Ҫ | @fukuiretu • noteגࣜձࣾ • ΤϯδχΞ • ϑϩϯτΤϯυ
/ όοΫΤϯυ / ΠϯϑϥͱͳΜͰΔϚϯ • ੨ࡏॅ • ϦϞʔτϫʔΧʔ ɾJAWS-UG ੨ࢧ෦ॴଐ @fukuiretu @fukuiretu fukuiretu
アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝ɾల 5.
·ͱΊ ※AWSʹؔ͢Δొਓͷࡉ͔͍આ໌ંΓ·͢
50%0ޙೖΕ ΫϦΤΠλʔ͕จষϚϯΨɺࣸਅɺԻΛߘ͢Δ ͜ͱ͕Ͱ͖ɺϢʔβʔͦͷίϯςϯπΛָ͠ΜͰԠ ԉͰ͖ΔϝσΟΞϓϥοτϑΥʔϜ
noteͰΛΑͼ cakesʹ࿈ࡌ͞Εͨޙɺ ॻ੶ԽɺυϥϚԽɻ ిࢠࡶࢽʮจܳΧυΧϫʯͱ noteͰಉ࣌࿈ࡌΛͨ͠ޙɺॻ ੶ԽɺυϥϚԽ note༗ྉߪಡऀݶఆͷ ࿈ࡌΛॻ੶Խ ຖ৽ฉͷ࿈ࡌখઆΛ 10ޙʹnoteͰ࿈ࡌ
ͦͷޙɺॻ੶ԽɺөըԽ noteͷਓؾ࿈ࡌΛ ॻ੶Խ noteͰΛΑΜͩ هࣄΛॻ੶Խ ΫϦΤΠλʔͷ֗ɺnote͔Βੜ·Εͨ࡞
アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝ɾల 5.
·ͱΊ
2018ࠒ͔Βσʔλੳʹ ຊࠊΛೖΕ࢝ΊΔ
データ基盤構築前のトラッキング⽅法 • ΞϓϦέʔγϣϯ্ʹτϥοΩϯά༻ͷAPI • ΞΫςΟϏςΟܥͷϩάͯ͢RDBʹอଘ
noteの急激な成⻑
成⻑とともに出てきた課題 • ΞϓϦέʔγϣϯٴͼDBͷෛՙ͕େʹ • ΫΤϦ݁Ռ͕ฦͬͯͣ͜σʔλநग़͕ࠔ
対処療法 • ύʔςΟγϣχϯά͕͞Ε͓ͯΒͣίετ͕େʹ ‣ ύϑΥʔϚϯε͍·͍ͪ… • ϧʔϧཱ͕֬͞Ε͓ͯΒͣσʔλ͕ࢄࡏ ՝ ඞཁʹԠͯ͡S3ʹDBͷσʔλΛΤΫεϙʔτ͠ɺ AthenaͰநग़
解決すべき課題 • ΞϓϦέʔγϣϯٴͼDBͷෛՙ͕େʹ • ύʔςΟγϣχϯά͕͞Ε͓ͯΒͣίετ͕େʹ • ϧʔϧཱ͕֬͞Ε͓ͯΒͣσʔλ͕ࢄࡏ σʔλج൫ͷधཁ͕ߴ·Δ
アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝ɾల 5.
·ͱΊ
開発体制
⽅針 ӡ༻ϦιʔεΛ࠷খʹ = ։ൃʹઐ೦
どうしたら運⽤リソースを最⼩にできるか • ӡ༻ͷ؆ૉԽ • Φʔτεέʔϧ • Մ༻ੑ ӡ༻ϦιʔεΛ࠷খʹ = ։ൃʹઐ೦
αʔόʔϨεͷػӡͰ??
どうしたら運⽤リソースを最⼩にできるか • ӡ༻ͷ؆ૉԽ • Φʔτεέʔϧ • Մ༻ੑ ӡ༻ϦιʔεΛ࠷খʹ = ։ൃʹઐ೦
αʔόʔϨεͷػӡͰ?? αʔόʔϨεΞʔΩςΫνϟͰɺ ϛχϚϜʢΏΔ;Θʣʹελʔτ
アーキテクチャの全体像 ։ൃظؒ: 3ϲ݄ʢௐࠪɾݕূؚΉʣ
データ集約 ᶃ ᶄ ᶃ AWS Service ProxyΛར༻ͯ͠FirehoseʹPut ϝϦοτ: Lambdaෆཁ σϝϦοτ:
σʔλߏ͕ෳࡶʹͳΔͱVTLͰͷϚοϐϯά͕େม ᶄ Firehoseͷड৴σʔλมΦϓγϣϯΛར༻͠ɺ 1ϨίʔυຖʹվߦίʔυΛೖΕΔ ※Firehoseͷ্ݶʹҙʢ౦ژϦʔδϣϯ: 1000Ϩίʔυ/s, 1000τϥϯβΫγϣϯ/s, 1MiB/sʣ
データ整形 ᶃ ᶄ ᶃ S3ͷPut EventͰσʔλܗ༻ͷLambdaΛൃՐ ᶄ ओʹҎԼͷॲཧΛߦ͏ • AthenaͷύʔςΟγϣχϯάͷͨΊʹHiveܗࣜͷS3
Keyੜ ‣ e.g. content_type=action_logs/year=YYYY/month=MM/day=DD/hour=HH • Referrerͷղ • UserAgentͷղ • σʔλܕͷௐ
アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝ɾల 5.
·ͱΊ
利⽤しているツール ߏཧ / σϓϩΠ AWS CDK • CloudWatch Logs •
CloudWatch Alarm • AWS Chatbot ࢹ
良かった / ⾟かった話 ! ྑ͔ͬͨ " ਏ͔ͬͨ αʔόʔͷ͓कΓ΄΅Կͯ͠ͳ͍ ϝτϦΫεΛΈ֤ͯछαʔϏεͷ্ݶʹ͔͔Βͳ͍͔͚ͩࢹ AWSͰো͕ى͖Δͱ͢ज़͕ͳ͍
e.g. 2020/04/20ʹൃੜͨ͠SQSͷେنো
当初の課題は解決できたのか ՝: ΞϓϦέʔγϣϯٴͼDBͷෛՙ͕େʹ ΞϓϦέʔγϣϯٴͼDBͱͨ͠ͷͰ΄΅ղܾʢҰ෦ҠߦͰ͖͍ͯͳ͍ʣ
当初の課題は解決できたのか ՝: ύʔςΟγϣχϯά͕͞Ε͓ͯΒͣίετ͕େʹ ύʔςΟγϣχϯάͨ͠ͷͰղܾ ΫΤϦ݁ՌετϨεແ͘ฦͬͯ͘ΔΑ͏ʹ
当初の課題は解決できたのか ՝: ϧʔϧཱ͕֬͞Ε͓ͯΒͣσʔλ͕ࢄࡏ σʔλύΠϓϥΠϯཱ͕֬͞ΕͨͷͰղܾ
アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝ɾల 5.
·ͱΊ
ॳͷ՝΄΅ղফ͕ͨ͠ɺ ৽ͨͳ՝…
課題1 • ύʔςΟγϣϯͷ૿ͰΫΤϦͷύϑΥʔϚϯεʹӨڹ • ίετ͔͔Δʢैྔ՝ۚʣ AthenaͷύʔςΟγϣχϯάΛ GlueͷΫϩʔϥʔͰੜ͢ΔͷΛΊ͍ͨ
課題1の展望 • DDLͰprojection.xxxͱ͍͏ଐੑΛఆٛ͢Δ͚ͩ • ผ్ྉ͔͔ۚΒͳ͍ Partition ProjectionΛར༻͢Δ
課題2 • όονΠϯϙʔτ͕Ͱ͖ͳ͍ίετ૿ • Kinesis Firehoseͷ্ݶʢͲ͜·Ͱ؇ͯ͠Β͑Δ͔ෆಁ໌ʣ • Τϥʔ͕ى͖ͨࡍͷϋϯυϦϯάɾϦΧόϦʔ͕͍͠ API Gateway
ͱ Kinesis Firehoseؒʹ Ϋογϣϯ͕ͳ͍
課題2の展望 APIࣗલͰཱͯͯkinesis-agent(or Fluentd)Ͱ όονΠϯϙʔτ͢Δ
課題3 • ݱঢ়ఆظతʹόονͰS3Πϯϙʔτ͍ͯ͠Δ ‣ ࣌ؒͱख͕͔͔ؒΔ RDB্ͷσʔλΛAthenaͰΧδϡΞϧʹ ݁߹͍ͨ͠
課題3の展望 ϑΣσϨʔςουɾΫΤϦΛར༻͢Δ ※·ͩpreviewͳͷͰਖ਼࠲ػத
課題3の展望 https://aws.amazon.com/jp/blogs/news/query-any-data-source- with-amazon-athenas-new-federated-query/
課題4 σʔλΣΞϋεϚʔτʹ૬͢ΔσʔλΛ ༻ҙ͠རศੑΛ্͍ͨ͠
課題4の展望 • CTASΛར༻ͨ͠Parquet(ྻࢦϑΥʔϚοτ)ͷม • BigQuery Omniͷར༻
アジェンダ 1. ܦҢ 2. ߏங 3. ӡ༻ 4. ࠓޙͷ՝ɾల 5.
·ͱΊ
まとめ ॳͷ՝΄΅ղফͰ͖ɺ ӡ༻ίεταʔόʔϨεʹΑͬͯ ظ௨Γେ෯ʹܰݮͰ͖ͨ
• αʔϏεنʹΑͬͯྉۚίετ͕ͶΔՄೳੑ͋Γ • ো࣌جຊతʹ͓فΓ͢Δ͔͠ͳ͍ まとめ ͳʹΛ༏ઌ͖͔͢Λख़ߟ͢Δ αʔόʔϨεͷτϨʔυΦϑ ʢஅࡐྉ: αʔϏεಛੑɺαʔϏεنɺνʔϜͷφϨοδetc..ʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠