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
GoogleAppEngineのマルチテナント機能の活用事例
Search
kurikei
September 25, 2018
Technology
0
66
GoogleAppEngineのマルチテナント機能の活用事例
kurikei
September 25, 2018
Tweet
Share
More Decks by kurikei
See All by kurikei
DeSCヘルスケアにおけるGo 活用事例紹介 #DeNAgo
kurikei
0
1.6k
Other Decks in Technology
See All in Technology
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
210
TypeScript 7.0の現在地と備え方
uhyo
7
1.1k
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
190
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1.8k
【Oracle Cloud ウェビナー】【入門編】はじめてのOracle AI Data Platform - AIのためのデータ準備&自社用AIエージェントをワンストップで実現
oracle4engineer
PRO
1
150
Sansanでの認証基盤内製化と移行
sansantech
PRO
0
510
Cortex Code CLI と一緒に進めるAgentic Data Engineering
__allllllllez__
0
390
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
2
390
AI時代のSaaSとETL
shoe116
1
170
SRE NEXT 2026 CfP レビュアーが語る聞きたくなるプロポーザルとは?
yutakawasaki0911
1
380
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
260
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
170
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
How to build a perfect <img>
jonoalderson
1
5.3k
Facilitating Awesome Meetings
lara
57
6.8k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Designing Experiences People Love
moore
143
24k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
The Limits of Empathy - UXLibs8
cassininazir
1
260
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
A Tale of Four Properties
chriscoyier
163
24k
Believing is Seeing
oripsolob
1
84
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Λ͏͜ͱͰΞϓϦέʔγϣϯͷ։ൃʹྗͰ͖Δ • ϚϧνςφϯτػೳͰෳͷΞϓϦΛਝʹߏஙͰ͖ΔͷͰεϞʔϧελʔτ ʹ͏͚ͬͯͭ • όʔδϣϯɾ໊લۭؒΛར༻͢Δ͜ͱͰಛఆͷ݅ͷڥΛ؆୯ʹߏஙͰ͖Δ ͷͰຊ൪ڥݻ༗ͷΤϥʔͷಉఆɾղফʹศར