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
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
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
0
200
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
370
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
300
会社説明資料
persolserverworks
0
9.7k
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
1.1k
Loop Engineering これくらいでいい
mikanichinose
0
220
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
5.8k
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
260
Running Kotlin + Quarkus with Lambda
nealle
1
410
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
180
DGX Spark でどこまでハッキングができるのか?
kash1064
0
170
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
350
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
GraphQLとの向き合い方2022年版
quramy
50
15k
Tell your own story through comics
letsgokoyo
1
1.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
Accessibility Awareness
sabderemane
1
240
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Git: the NoSQL Database
bkeepers
PRO
433
67k
It's Worth the Effort
3n
188
29k
Scaling GitHub
holman
464
140k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
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Λ͏͜ͱͰΞϓϦέʔγϣϯͷ։ൃʹྗͰ͖Δ • ϚϧνςφϯτػೳͰෳͷΞϓϦΛਝʹߏஙͰ͖ΔͷͰεϞʔϧελʔτ ʹ͏͚ͬͯͭ • όʔδϣϯɾ໊લۭؒΛར༻͢Δ͜ͱͰಛఆͷ݅ͷڥΛ؆୯ʹߏஙͰ͖Δ ͷͰຊ൪ڥݻ༗ͷΤϥʔͷಉఆɾղফʹศར