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
62
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
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
2
240
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
180
Jaws-ug名古屋_LT資料_20250829
azoo2024
3
210
生成AI時代に必要な価値ある意思決定を育てる「開発プロセス定義」を用いた中期戦略
kakehashi
PRO
1
240
Nstockの一人目エンジニアが 3年間かけて向き合ってきた セキュリティのこととこれから〜あれから半年〜
yo41sawada
0
170
AIエージェントの活用に重要な「MCP (Model Context Protocol)」とは何か
masayamoriofficial
0
250
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
2
1.9k
実践アプリケーション設計 ①データモデルとドメインモデル
recruitengineers
PRO
5
1.4k
Skrub: machine-learning with dataframes
gaelvaroquaux
0
100
生成AI時代のデータ基盤
shibuiwilliam
3
1.9k
つくって納得、つかって実感! 大規模言語モデルことはじめ
recruitengineers
PRO
32
12k
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
430
Featured
See All Featured
Fireside Chat
paigeccino
39
3.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.5k
A Tale of Four Properties
chriscoyier
160
23k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Music & Morning Musume
bryan
46
6.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
What's in a price? How to price your products and services
michaelherold
246
12k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
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Λ͏͜ͱͰΞϓϦέʔγϣϯͷ։ൃʹྗͰ͖Δ • ϚϧνςφϯτػೳͰෳͷΞϓϦΛਝʹߏஙͰ͖ΔͷͰεϞʔϧελʔτ ʹ͏͚ͬͯͭ • όʔδϣϯɾ໊લۭؒΛར༻͢Δ͜ͱͰಛఆͷ݅ͷڥΛ؆୯ʹߏஙͰ͖Δ ͷͰຊ൪ڥݻ༗ͷΤϥʔͷಉఆɾղফʹศར