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
Firestoreコスト圧縮の旅
Search
Daiki Hirakata
May 21, 2024
Technology
0
45
Firestoreコスト圧縮の旅
Daiki Hirakata
May 21, 2024
Tweet
Share
More Decks by Daiki Hirakata
See All by Daiki Hirakata
Rails on Docker
bigplants
2
570
Road to k8s
bigplants
0
270
Next Level Git
bigplants
0
650
AWSを使っているならOpsWorksでDevOpsしよう!
bigplants
1
1.8k
Other Decks in Technology
See All in Technology
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
580
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
100
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
今日から始めるAmazon Bedrock AgentCore
har1101
4
410
Webhook best practices for rock solid and resilient deployments
glaforge
2
300
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
260
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
200
The SEO Collaboration Effect
kristinabergwall1
0
350
How GitHub (no longer) Works
holman
316
140k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Bash Introduction
62gerente
615
210k
Test your architecture with Archunit
thirion
1
2.2k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
940
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
320
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
Designing for Performance
lara
610
70k
Transcript
Firestore ίετѹॖͷཱྀ @bigplants May 21st 2024 @Hack@DELTA
Who am I ? • Daiki Hirakata (42) • Software
Engineer • Main Programing Languages: PHP, TypeScript • Primary interests: DevOps, Docker, Kubernetes, GCP @bigplants
ےϥϯφʔܥΤϯδχΞ
ͪΐͬͱ͚ͩએ
ઈࢍ։ൃऀืूதʂ • ϓϩμΫτ໊: ͨLuck • ళฮαʔϏεۀ͚ʹγϑτػೳ Λ͡Ίͱͨ͠DXαʔϏε • ϞόΠϧΞϓϦͱཧը໘ͷWebΛఏڙ •
PHP, TypeScript, Firebase, GCP • Laravel, React, Vue.js • גࣜձࣾHataLuck and Person
ͨLuckͷγεςϜߏ • DBFirestoreͱCloud SQL ͷϋΠϒϦουߏ • Firebase -> Cloud SQLʹҰ
෦ͷσʔλΛಉظ • APIFunctions, Cloud Run
ࠓͷ͓ • Firebaseͷར༻࣮ • FirestoreͷίετѹॖͷͨΊͷௐࠪ • ՝ۚѹॖͷͨΊʹͬͨ͜ͱ • ݱࡏ࣮ࢪதͷࢪࡦͱ͜Ε͔Β
Firebaseͷར༻࣮
نײ • Cloud Functions • HTTP Trigger: 184 • Event
Trigger: 167 • Cloud Firestore • Collections: over 100
Firestoreίετ • GCPશମͷ5ׂ͕Firestore • 98%Read! Read 3.5ԯ/day
Firestoreίετ 20221݄͔Βݱࡏ·Ͱ ૿͑ͯݮΒͯ͠ɺ·ͨ૿͑ͯ
Ͳ͔͜ΒRead͞Ε͍ͯΔͷ͔ʁ • Cloud Functions • iOS/Android • ཧը໘ͷWeb
FirestoreίετѹॖͷͨΊͷ ௐࠪ
ԿΛௐࠪ͢Δ͔ʁ • ௐࠪͷతͲͷػೳ͔Β࠷Read͕ଟ͍͔ ಛఆͯ͠ରԠ͢Δػೳͷ༏ઌΛ͚ͭΔ͜ͱ • අ༻ରޮՌ͕ߴ͍ͱ͜Ζ͔Βணख͍ͯ͘͠ • ػೳผɺΞΫηεݩΫϥΠΞϯτผʹReadͷ ݅Λूܭ͢Δ
Ͳ͔͜Β݅Λநग़Ͱ͖Δͷ ͔ʁ • ࠪϩά • Firestore/Datastore API • ※ ͜Ε͕།ҰͷFirestoreͷΞΫηεϩά
ࠪϩάͷඅ༻: ¥18,000/day!
ࠪϩάͰऔΕΔσʔλ • ΦϖϨʔγϣϯ • GetDocument, RunQuery, CreateDocument ͳͲͳͲ • υΩϡϝϯτͷύε
• ϢʔβΤʔδΣϯτ
ࠪϩά • ٻϨϙʔτͷRead OpsͱࠪϩάΛ͚߹ ΘͤΔ • ٻϨϙʔτͷSKU: Cloud Firestore Read
Ops Japanͷ͕݅՝ۚ୯Ґ
ۤ࿑ͨ͠ͱ͜Ζᶃ • FirestoreͷΞΫηεݩΛಛఆ͖͠Εͳ͍ • FunctionsͰFirestore TriggerΠϕϯτͳͷ͔ HTTP TriggerΠϕϯτͳͷ͔Θ͔Βͳ͍ • ListenͰ࣮ࡍʹRead՝͕ۚΔରͷϩά͕ͲΕ͔
ผΛ͚ͭΒΕͳ͍
ۤ࿑ͨ͠ͱ͜Ζᶄ • ࠪϩάͱRead Opsͷ͕݅શવ߹Θͳ͍ • ࠷ऴతͳGoogleαϙʔτ͔Βͷճ • ʮࠪϩά͔ΒRead Opsͷ༁͑ͳ͍ Αʙʯ
<- Ͱ͖Δͬͯݴͬͨ͡ΌʔΜ orz
ௐࠪஅ೦ʂʂ (1.5ϲ݄Λඅͨ͠)
ͦΕͰಈ͖ग़͞ͳ͚Εʂ
՝ۚѹॖͷͨΊʹͬͨ͜ͱ
՝ۚѹॖࢪࡦ • FirestoreτϦΨFunctionsͷೋॏൃՐࢭͷϦ ΞʔΩςΫνϟ • ΞΫςΟϏςΟϩάͷҠߦ • FirestoreΩϟογϡػߏͷߏங • ΤΫεϙʔτରσʔλΛਫ਼ࠪ
FirestoreτϦΨFunctions ͷೋॏൃՐʁ • FirestoreτϦΨFunctionsॏෳ࣮ͯ͠ߦ͞Ε Δ͜ͱ͕͋Δ • ႈੑ͕୲อ͞Ε͍ͯΕOK͕ͩɺɺ
ႈੑ͕୲อ͞Ε͍ͯͳ͍ Functions͕ଟ͋Γ
Functions͕ೋॏʹൃՐ͠ͳ͍ Έ͕ඞཁ
ͱͱ࣮ࢪ͍ͯͨ͠ೋॏൃՐ ࢭͷΈ • ൃՐ࣌ʹΠϯϕϯτIDΛFirestoreʹॻ͖ࠐΉ • ΠϕϯτID͕͢Ͱʹଘࡏ͢ΕॲཧΛεΩο ϓɻͳ͚ΕॲཧΛߦ͏
ΠϕϯτIDΛFirestoreʹ֨ೲ
Firestoreॻ͖ࠐΈίετ͕૿Ճ • ࠷ॳؾʹͳΒͳ͍͘Β͍͕ͩͬͨػೳ͕૿ ͑ɺϦΫΤετ͕૿͑ͯ͘ΔͱͦΕͳΓʹ ཱͭΑ͏ʹͳͬͨ
ೋॏൃՐࢭͷϦΞʔΩςΫ νϟ • ॻ͖ࠐΈઌΛFirestore ͔Β Redis ʹมߋ • شൃσʔλFirestoreʹஔ͔ͳ͍ 💰
¥50,000/month ѹॖ (Write)
ΞΫςΟϏςΟϩάͷҠߦ • ΞΫςΟϏςΟϩάͱಛఆͷϢʔβૢ࡞ͷϩά ͷ͜ͱ • ͱͱFirestoreʹϩάΛ֨ೲ͍ͯͨ͠ • Ϣʔβ͕૿͑Δͱ͡Θ͡Θॻ͖ࠐΈྔ͕ଟ͘ͳΔ • FirestoreͷΤΫεϙʔτରσʔλʹͳ͍ͬͯͨ
ΞΫςΟϏςΟϩάͷҠߦ • Firestore ͔Β BigQuery ʹҠߦ • ΤΫεϙʔτର͔Βআ֎ • ϩάFirestoreʹஔ͔ͳ͍ʂ
💰 ¥50,000/month ѹॖ (Write) 💰 ¥500,000/month ѹॖ (ΤΫεϙʔτͷRead)
FirestoreΩϟογϡػߏͷߏங • ϢʔβϚελళฮϚελͳͲΑ͘ࢀর͞Ε ΔσʔλΛRedisʹΩϟογϡ 💰 ¥100,000/month ѹॖ (Read)
ͦΕͰͳ͓૿͑ଓ͚Δίετ
ݱࡏਐߦதͷίετѹॖରࡦ With גࣜձࣾDELTA͞Μ
FirestoreͷΤΫεϙʔτΛΊ Δ • ۙ ¥100Ϛϯ/݄ͷReadͷ͕ΤΫεϙʔ τ • ΤΫεϙʔτͷత • όοΫΞοϓ(༗ࣄͷࡍͷ෮ݩ͕త)
• σʔλੳ༻్ͷBigQueryΠϯϙʔτ
FirestoreͷόοΫΞοϓ • FirestoreͷόοΫΞοϓ εέδϡʔϧͱϙΠ ϯτΠϯλΠϜϦΧόϦʹஔ͖͑
σʔλੳ • ࠩόοΫΞοϓΛBigQuery • Firebase ExtensionsΛར༻
Stream Firestore to BigQuery • https://extensions.dev/extensions/ fi rebase/ fi restore-bigquery-export
• Cloud Firestore ίϨΫγϣϯͷυΩϡϝϯτ Λ BigQuery ʹΤΫεϙʔτɻΤΫεϙʔτϦ ΞϧλΠϜ͔ͭ૿Ͱ͋ΔͨΊɺBigQuery ͷσʔ λ Cloud Firestore ͷίϯςϯπͷϛϥʔͱ Δɻ
FirestoreશҠߦ
͍ͭʹຊ֨࢝ಈʂʂ
Firestore -> Cloud SQLͷҠ ߦ Cloud Functions Cloud Firestore Cloud
Run Cloud SQL ̍Ҏ্ͷϓϩδΣΫτʹͳΔ
Firestoreʹ͍ͭͯ͏ࣄ • εέʔϥϏϦςΟ͕ߴͯ҆͘ՁͳͷͰɺαʔϏε্ཱͪ ͛࣌ΧδϡΞϧʹԿͰஔ͖ͨ͘ͳΔ • ͕ɺɺ͋ͱ͋ͱɺ͓ۚʹΨπϯͱͶฦͬͯ͘Δ • αʔϏεن͕େ͖͘ͳΔͱσʔλετΞFirestoreͩ ͚ͰԿ͔ͱਏ͍ •
͍ॴҰ෦ͷϚΠΫϩαʔϏεͷόοΫΤϯυͱଊ͑ ͓ͯ͘ͱͬ͘͠Γ͘Δ
ࠓͷ·ͱΊ • ϩάشൃσʔλFirestoreʹͳΔ͘ஔ ͔ͳ͍ • Ϣʔβ͕૿͑Δͱ৭Μͳͷ͕δϫδϫͱ ૿͍͑ͯ͘ • Firestoreن͕େ͖͘ͳͬͯ͘Δͱίετί ϯτϩʔϧ͕͘͠ͳΔ
Thank You 🛹 ཱྀͭͮ͘