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.9k
サーバーレスで始める ゆるふわデータ基盤 - 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
Amplifyを使ったWebサイト構築 〜 Nstockの事例を添えて 〜
fukuiretu
0
220
開発生産性と品質の横断的な課題を解決する!エンジニアリング支援室の挑戦 -1Qで取り組んだことを添えて-
fukuiretu
2
7.1k
EMになって最初の失敗談 - コミュニケーション編 -
fukuiretu
2
6.5k
問い合わせ対応当番を自動化で業務効率化している話
fukuiretu
0
860
191109_sacss.pdf
fukuiretu
1
2.4k
noteをNuxt.jsで再構築した話 -2nd-
fukuiretu
6
13k
CloudFront use cases - noteの事例 -
fukuiretu
0
8.7k
181117_wannatech.pdf
fukuiretu
1
530
noteをNuxt.jsで再構築した話
fukuiretu
22
57k
Other Decks in Technology
See All in Technology
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
190
Foundation Model × VisionKit で実現するローカル OCR
sansantech
PRO
0
300
Perlアプリケーションで トレースを実装するまでの 工夫と苦労話
masayoshi
1
410
解消したはずが…技術と人間のエラーが交錯する恐怖体験
lamaglama39
0
190
猫でもわかるQ_CLI(CDK開発編)+ちょっとだけKiro
kentapapa
0
3.4k
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
110
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
6
240
AI関数が早くなったので試してみよう
kumakura
0
120
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
3
250
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
410
【OptimizationNight】数理最適化のラストワンマイルとしてのUIUX
brainpadpr
1
260
【Λ(らむだ)】最近のアプデ情報 / RPALT20250729
lambda
0
230
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Raft: Consensus for Rubyists
vanstee
140
7k
How to train your dragon (web standard)
notwaldorf
96
6.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Code Review Best Practice
trishagee
69
19k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
182
54k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
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..ʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠