Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GoogleAppEngineのマルチテナント機能の活用事例
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kurikei
September 25, 2018
Technology
76
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GoogleAppEngineのマルチテナント機能の活用事例
kurikei
September 25, 2018
More Decks by kurikei
See All by kurikei
DeSCヘルスケアにおけるGo 活用事例紹介 #DeNAgo
kurikei
0
1.7k
Other Decks in Technology
See All in Technology
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
130
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
320
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
160
Reactの設計論
uhyo
14
8.2k
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
230
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
470
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
270
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
110
ASTを使って影響範囲を特定する
nealle
0
160
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
270
20260912_スクフェス三河
kgnkhkr
0
300
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
160
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Git: the NoSQL Database
bkeepers
PRO
432
67k
KATA
mclloyd
PRO
35
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
420
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Google's AI Overviews - The New Search
badams
0
1.6k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
GoogleAppEngineͷマルチ テナントػೳͷ׆༻ࣄྫ DeSCϔϧεέΞגࣜձࣾ ϔϧεέΞサービス։ൃάϧʔϓ ܀ాՂ༞
ࣗݾհ • ໊લ • ܀ాՂ༞ • αʔόʔαΠυΤϯδχΞ • Perl, Ruby,
Go … • ܦྺ • 2012.04ʙ DeNAೖࣾ • 2012.09ʙ ήʔϜࣄۀ෦ͰιʔγϟϧήʔϜͷ։ൃ • 2015.10ʙ DeSCϔϧεέΞҟಈ 2
アジェンダ • DeSCϔϧεέΞͰ։ൃ͍ͯ͠ΔαʔϏεհ • ར༻͍ͯ͠ΔGCPͷαʔϏε • GAEͷϚϧνςφϯτػೳͷ׆༻ྫ 3
DeSCϔϧεέΞͰ։ൃ͍ͯ͠ΔαʔϏε 4 KenCoM ߦಈม༰αʔϏε܈
DeSCϔϧεέΞͰ։ൃ͍ͯ͠ΔαʔϏε 5 KenCoM • ݈߁อݥͷ߹һ͚αʔϏε • ݈߁அͷ݁ՌҩྍඅͳͲ͕ݟΕΔ • KenCoMར༻ऀར༻ͯ͠ͳ͍ਓΑΓ ੜ׆श׳පͷጶױϦεΫ͕ɺ౷ܭతʹ
͍͜ͱ͕Θ͔ͬͨ • ΦϯϓϨڥ ʢLinux, nginx, Rails etcʣ
DeSCϔϧεέΞͰ։ൃ͍ͯ͠ΔαʔϏε 6 ߦಈม༰αʔϏε܈ • αʔϏεΛར༻͢Δ͜ͱͰϢʔβʔͷ ߦಈΛม༰ͤ͞ɺΑΓ݈߁ʹͳͬͯ Β͏ͨΊͷαʔϏε • caminaru ϦϦʔεࡁΈ
• ʑͷาͷඪΛୡͨ͠ΒΪ ϑτ͕Β͑ΔαʔϏε • ผͷΓޱͰαʔϏεΛ։ൃத • GCPΛར༻
ओʹར༻͍ͯ͠ΔGCPͷαʔϏε 用途 GCPαʔϏε ΞϓϦέʔγϣϯ Google AppEngine StandardɿGo ʢAPIαʔόʔʣ Flexibleɿ Ruby
/ Rails ʢཧπʔϧʣ Flexibleɿ Ruby /sinatra ʢΞϓϦͷOTA༻αΠτʣ σʔλετΞ Cloud Datastore ϩάࢹɾϝτϦΫε StackDriver {Logging, Monitoring …} σʔλΣΞϋε BigQuery BIπʔϧ Cloud Datastudio 7
AppEngineͷબఆཧ༝ • ϑϧϚωʔδυ • ΞϓϦέʔγϣϯΛσϓϩΠ͢Δ͚ͩ • ਓ͕গͳ͍νʔϜͳͷͰɺͳΔ͚ͩΞϓϦέʔγϣϯͷ։ൃʹྗͨ͠ ͍ • FaaSΑΓॊೈͰෳࡶͳ͜ͱ͕Ͱ͖Δ
• Ϛϧνςφϯτػೳʢޙड़ʣͰͨ͠ෳͷΞϓϦέʔγϣϯΛߏஙͰ͖Δ • DeSCϔϧεέΞ͕͜Ε͔Β࡞Δߦಈม༰αʔϏεͷΓޱ • վળ͍݈ͨ͠߁ɾӡಈʹؔ͢Δࢦඪ ʢา / ମॏ / ݂ѹ / ݈߁அ݁Ռ etcʣ • αʔϏε͍ଓ͚ΔͨΊͷཁૉ ʢΠϯηϯςΟϒ / ήʔϛϑΟέʔγϣϯ / ίϛϡχςΟ etcʣ • ༷ʑͳΓޱͷ͏ͪɺ݈߁ʹର͢ΔΠϯύΫτ͕ߴ͘ɺޮՌ͕ग़ͦ͏ͳ αʔϏε͔ΒॱʹϦϦʔε͍ͯ͘͠ઓུʹద͍ͯͨ͠ 8
GoogleAppEngineͷϚϧνςφϯτػೳ • 1ͭͷϓϩδΣΫτʹෳͷΞϓϦέʔγϣϯΛߏஙͰ͖Δ • ϚΠΫϩαʔϏεతͳ͍ํͰ͖Δ • αʔϏεɾόʔδϣϯΛར༻͢Δ͜ͱͰΞϓϦέʔγϣϯίʔυͷ Λ࣮ݱʢޙड़ʣ • ໊લۭؒΛઃఆ͢Δ͜ͱͰσʔλͷΛ࣮ݱʢޙड़ʣ
9 https://cloud.google.com/appengine/docs/standard/go/multitenancy
ϚϧνςφϯτػೳɹʙαʔϏεɾόʔδϣϯʙ • αʔϏεͱόʔδϣϯ • ΞϓϦέʔγϣϯίʔυͷ͕Ͱ͖Δ • 1ϓϩδΣΫτʹෳͷαʔϏεΛɺ1αʔϏεʹෳͷόʔδϣ ϯ͕࡞Δ͜ͱ͕Ͱ͖Δ • ΞϓϦέʔγϣϯ͝ͱʹผͷαʔϏεʹׂΓͯΔ͜ͱͰෳͷ
ΞϓϦέʔγϣϯΛߏஙͰ͖Δ 10 ※ https://cloud.google.com/appengine/docs/standard/go/microservices-on-app-engine ΑΓҾ༻
Ϛϧνςφϯτػೳɹʙ໊લۭؒʙ • ໊લۭؒ • σʔλͷ͕Ͱ͖Δ • ΞϓϦέʔγϣϯ͝ͱʹ໊લۭؒΛઃఆ͢Δ͜ͱͰผΞϓϦͷ σʔλ͕ࢀরͰ͖ͳ͘ͳΔ • σʔλ࿙ӮΛ͙ͨΊͷΈͷҰͭ
• ѻ͏σʔλʹΑͬͯΑΓڧݻͳ͕ඞཁʹͳΔ͜ͱ͋Δͷ ͰηΩϡϦςΟཁ݅ʹԠ͍͚ͯ͡Δඞཁ͋Δ • Datastore, Memcached, TaskQueueͳͲ͕ରԠ͍ͯ͠Δ 11
DeSCͰͷϚϧνςφϯτͷ׆༻ྫ ΞϓϦέʔγϣϯ αʔϏε ໊લۭؒ ΞϓϦAͷAPI serviceA-api serviceA ΞϓϦBͷAPI serviceB-api serviceB
※ಉ͡σʔλΛࢀর ΞϓϦBͷཧπʔϧ serviceB-admin 12 serviceA-api serviceB-api serviceB-admin σʔλͷ ❌ ❌
DeSCͰͷϚϧνςφϯτͷ׆༻ྫ 13 • ΞϓϦέʔγϣϯAͱΞϓϦέʔγϣϯBͰผͷ໊લۭؒΛઃఆ • ͦΕͧΕͷΞϓϦ͔ΒଞํͷσʔλࢀরͰ͖ͳ͍ • ΞϓϦBͷAPIͱཧπʔϧ໊લۭ͕ؒಉ͡ͳͷͰಉ͡σʔλΛࢀরɾฤू ͕Ͱ͖Δ
։ൃ༻ϓϩδΣΫτͰͷϚϧνςφϯτػೳͷར༻ αʔϏε (=ϦϙδτϦ) ϒϥϯν όʔδϣϯ ໊લۭؒ serviceA-api master master serviceA
feature/auth feature-auth serviceA-feature-auth hotfix/db-err hotfix-db-err serviceA-hotfix-db-err 14 serviceA- feature-auth serviceA serviceA- hotfix-db-err master feature-auth hotfix-db-err
։ൃ༻ϓϩδΣΫτͰͷϚϧνςφϯτػೳͷར༻ 15 • ϒϥϯνΛPush͢ΔͱCIπʔϧ͕ϒϥϯν໊ʹԠͨ͡όʔδϣϯΛͬͯ ͨ͠ • AppEngineͰ ֤αʔϏε/֤όʔδϣϯ͝ͱʹURL͕ൃߦ͞ΕΔͷͰɺ։ൃ ൛ΞϓϦͷϦΫΤετઌΛม͑Δ͜ͱͰ͞ΕͨڥʹΞΫηε͕࡞Ͱ͖ Δ
• QAݕূ༻ͷڥ͕༰қʹ४උͰ͖Δ • ຊ൪ͱεϖοΫతʹಉͷڥ४උͰ͖ΔͷͰɺຊ൪ݻ༗ͷΤϥʔͷௐ ࠪͦͷղফɺෛՙࢼݧͳͲ͍͢͠
·ͱΊ 16 • GAEΛ͏͜ͱͰΞϓϦέʔγϣϯͷ։ൃʹྗͰ͖Δ • ϚϧνςφϯτػೳͰෳͷΞϓϦΛਝʹߏஙͰ͖ΔͷͰεϞʔϧελʔτ ʹ͏͚ͬͯͭ • όʔδϣϯɾ໊લۭؒΛར༻͢Δ͜ͱͰಛఆͷ݅ͷڥΛ؆୯ʹߏஙͰ͖Δ ͷͰຊ൪ڥݻ༗ͷΤϥʔͷಉఆɾղফʹศར