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
サーバレスとマイクロサービスで変わるゲームサーバ開発
Search
Kazutomo Niwa
October 01, 2016
Technology
3
5.6k
サーバレスとマイクロサービスで変わるゲームサーバ開発
Serverlessconf Tokyo 2016 で登壇した際に利用した資料です。
こちらもご参照ください →
https://gs2.io/
Kazutomo Niwa
October 01, 2016
Tweet
Share
More Decks by Kazutomo Niwa
See All by Kazutomo Niwa
Amazon Event Bridge による次世代の Pub/Sub
kazutomo
0
1.9k
DynamoDB のインデックス再編事例
kazutomo
2
820
Production-ready Amazon Event Bridge
kazutomo
2
1k
もうそこまで迫っている! Cloud2.0 時代の開発
kazutomo
3
1.7k
Game Server Services ではじめる サーバ開発運用しないゲーム開発
kazutomo
1
7.4k
Cloud2.0時代のゲーム開発を支えるGS2
kazutomo
1
2.1k
Unityネットワーク完全に理解した.pdf
kazutomo
3
3.1k
サーバレスアプリケーションの監視・運用
kazutomo
13
6.5k
ゼロからサーバレスの先頭に追いつこう
kazutomo
25
12k
Other Decks in Technology
See All in Technology
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
310
Introduction to OpenSearch Project - Search Engineering Tech Talk 2025 Winter
tkykenmt
2
210
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
540
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
330
JAWS DAYS 2025 アーキテクチャ道場 事前説明会 / JAWS DAYS 2025 briefing document
naospon
0
2.8k
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
330
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
1.1k
データモデルYANGの処理系を再発明した話
tjmtrhs
0
240
実は強い 非ViTな画像認識モデル
tattaka
3
1.4k
マルチアカウント環境における組織ポリシーについて まとめてみる
nrinetcom
PRO
2
100
Platform Engineeringで クラウドの「楽しくない」を解消しよう
jacopen
4
190
どちらかだけじゃもったいないかも? ECSとEKSを適材適所で併用するメリット、運用課題とそれらの対応について
tk3fftk
2
270
Featured
See All Featured
Docker and Python
trallard
44
3.3k
Building Adaptive Systems
keathley
40
2.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Side Projects
sachag
452
42k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Designing for humans not robots
tammielis
250
25k
Become a Pro
speakerdeck
PRO
26
5.2k
Git: the NoSQL Database
bkeepers
PRO
428
65k
Six Lessons from altMBA
skipperchong
27
3.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
530
Transcript
αʔόϨεͱϚΠΫϩαʔϏεͰมΘΔ ήʔϜαʔό։ൃ 4FSWFSMFTT$POG5PLZP (BNF4FSWFS4FSWJDFTגࣜձࣾ දऔకࣾ$&0୮Ӌ Ұஐ
ࣗݾհ (BNF4FSWFS4FSWJDFTגࣜձࣾ ݄ۀ දऔకࣾ$&0୮Ӌ ҰஐʢʹΘ ͔ͣͱʣ גࣜձࣾηΨೖࣾ ܞଳి͚ήʔϜɾαʔό։ൃʹैࣄ
ఱಊגࣜձࣾೖࣾ ϙέϞϯɾϚϦΦΧʔτΛ͡Ίͱͨ͠ ήʔϜαʔό։ൃɾӡ༻ʹैࣄ ͖ͳ"84αʔϏε"1*(BUFXBZ -BNCEB %ZOBNP%#
Game Server Services(GS2) とは εϚϗήʔϜϒϥβήʔϜͷඞཁͱ͢Δػೳͷ͏ͪɺ • ϚονϝΠΩϯά • ϥϯΩϯά •
ϝʔϧϘοΫεʢϓϨθϯτϘοΫεʣ • ελϛφཧ ͱ͍ͬͨɺΑ͋͘ΔػೳΛ .JDSP4FSWJDFTԽ͠ɺ 4FSWFSMFTTͰઃܭɾ࣮͠ɺҰ࣌ؒԁʙͰར༻Ͱ͖Δͱ ͍͏"84ͷΑ͏ͳαʔϏεͰ͢ɻ
(BNF4FSWFS4FSWJDFT (4 ʹ͍ͭͯ ઌαΠτΛެ։ IUUQTHTJP ݄தʹ࣮ࢪ༧ఆͷϕ ʔλςετࢀՃऀΛืूத ຊͷηογϣϯ (4ΛαʔόϨεͰ࣮ݱ͢Δʹࢸͬͨ ܦҢ࣮ྫΛݩʹ͍ͯ͠·͢
(4ͷઃཱʹࢸͬͨܦҢ ίϯγϡʔϚήʔϜͷ։ൃʹ͓͍ͯɺήʔϜαʔόϓϥο τϑΥʔϚʔ͕ఏڙ͢Δ4%,ͷҰ෦ɻ ˠεϚʔτϑΥϯͰͦ͜·Ͱ໘ݟͯ͘Εͳ͍ɻ ֤͕ࣾࣅͨΑ͏ͳαʔόγεςϜΛ։ൃͯ͠͠·͍ͬͯΔɻ ˠوॏͳ։ൃϦιʔεΛ࿘අ͍ͯ͠Δɻ ήʔϜαʔόϓϥοτϑΥʔϚʔ͕։ൃ͍ͯͨͨ͠Ίɺή ʔϜ։ൃऀήʔϜαʔό։ൃͷϊϋ͕গͳ͍ɻ ˠͩ·ͩ͠·͠։ൃ͍ͯ͠Δݱଟ͍ɻ
(4ͱ αʔόϨεΞʔΩςΫνϟ ՝ࣗମϒϥβήʔϜ͔ΒωΠςΟϒήʔϜʹτϨϯυ ͕γϑτͯ͠͠Β͘ܦͬͨ͋ͨΓ͔Βײ͍ͯͨ͡ɻ ˠ(4ͷߏࣗମਵલ͔Β͋ͬͨɻ ͳͥࠓ·ͰىۀʹࢸΒͳ͔͔ͬͨʁ ˠαʔϏεΛཱͤ͞ΔͨΊͷ՝͕͋ͬͨɻ సػʁ ˠࡢ݄ͷ"1*(BUFXBZͷൃදɻ ˠಉ݄ʹαʔϏεͷ։ൃΛ։࢝ɻ
ͳͥαʔόϨε՝Λղܾ͢Δͱࢥͬͨͷ͔ʁ • εέʔϥϏϦςΟͷ֬อ • Մ༻ੑͷ֬อ • อकੑͷ֬อ • Ձ֨༏Ґੑͷ֬อ
εέʔϥϏϦςΟɾՄ༻ੑ αʔόϨε࣮ߦڥͷίϯςφ͕ఆظతʹഁغ͞ΕΔɻ ˠγεςϜ *NNVUBCMFͰ 4UBUFMFTTͳͷͱͳΔɻ *NNVUBCMFͰ 4UBUFMFTTͳγεςϜʹͳΔͱԿ͕خ͍͠ʁ ˠࢄॲཧ͕ՄೳͱͳΓɺεέʔϥϒϧʹɻ ˠαʔόোʹର͢Δੑ͕ڧ͘ͳΔɻ ήʔϜαʔόࣄલͷΞΫηεͷ༧͕͘͠ɺώοτ͠
ͨࡍʹඇৗʹεέʔϧ͕େ͖͘ҟͳΔɻ ˠεέʔϥϏϦςΟඇৗʹॏཁͳཁૉɻ
อकੑ -BNCEBͰɺσʔληϯλʔ "; ʹো͕ൃੜͯ͠ɺ ͦͷ";ͰॲཧΛܧଓ͠ͳ͘͢Δɻ෮چޙʹॲཧରʹ͢ɻ ͱ͍ͬͨΦϖϨʔγϣϯ "NB[PO͕ߦͬͯ͘ΕΔɻ ˠαʔόϨεԽ͢Δ͜ͱͰɺ ΠϯϑϥͷϚωʔδϝϯτ͔Β։์͞ΕΔɻ ܾͯ͠ϦιʔεϦονͰͳ͍(4ʹͱͬͯɺΠϯϑϥͷอ
कཧΛ"NB[POʹͤΔ͜ͱ͕ग़དྷΔͱ͍͏ͷେ͖ͳϝ Ϧοτɻ
Ձ֨༏Ґੑ ࠓ&$ͳͲԾαʔόͷΠϯελϯεΛௐ͍ͯ͠Δɻ ˠαʔόϨε࣮ࡍʹ͕࣮ؔߦ͞Εͨ࣌ؒʹରͯ͠ ՝ۚ͞ΕΔͨΊɺΩϟύγςΟίϯτϩʔϧෆཁɻ -BNCEBؔΛ࣮ߦ͢ΔίϯςφʹׂΓͯΔϝϞϦ༰ྔ $16ϦιʔεͳͲઃఆͰ͖Δɻ ˠؔͷಛੑʹ߹ΘͤͨϦιʔεׂ͕ߦͳ͑Δɻ ैདྷͷ։ൃख๏Ͱઃܭ͞ΕͨγεςϜͱൺֱͯ͠Ḯ৭ͷͳ ͍Ձ֨ଳͰαʔϏε͕ఏڙͰ͖ͨɻ
ͳͥ (4ϚΠΫϩαʔϏεʹͨ͠ͷ͔ʁ • γεςϜͷݟ௨͕͠ྑ͘ͳΔ • αʔϏε͕ૄ݁߹ͳͨΊɺ෦తʹར༻Մೳ • ςετ͕͍͢͠
γεςϜͷݟ௨͕͠ྑ͘ͳΔ ػೳΛࡉԽ͢Δ͜ͱͰɺγεςϜͷׂ͕࣋ͭ໌֬ʹͳΔɻ ׂ͕໌֬ʹͳΔͱ͍͏͜ͱɺΠϯϓοτɾΞτϓοτ Λ૾͘͢͠ͳΔͨΊɺαʔϏεΛγϯϓϧʹݟͤΔ͜ͱ ͕Ͱ͖ͨɻ
αʔϏε͕ૄ݁߹ͳͨΊɺ෦తʹར༻Մೳ γεςϜؒૄ݁߹ͳͨΊɺ(4ͷఏڙ͢ΔαʔϏεͷ͏ ͪɺͱ͋ΔͭͷαʔϏε͚ͩར༻͢Δɻͱ͍͏Α͏ͳ͜ͱ ͕͓͜ͳ͑Δɻ ݁߹ͷߴ͍γεςϜͩͱɺࣗελϛφͷཧػೳΛ ͍͍͚ͨͩͳͷʹɺԿނ͔(4ͷΞΧϯτγεςϜར ༻͠ͳ͚Εར༻Ͱ͖ͳ͍ɻͱ͍͏Α͏ͳࣗ༝ͷ͍αʔ Ϗεʹͳͬͯ͠·͍ͬͯͨͰ͠ΐ͏ɻ
ςετ͕͍͢͠ • γϯϓϧͳγεςϜςετΛॻ߲͘ݶΒΕ·͢ • ૄ݁߹ͳγεςϜςετ͕ॻ͖͍͢Ͱ͢ • ϚΠΫϩαʔϏεΛ࠾༻͢Δ͜ͱͰɺ(4ͷΞϓϦέʔγ ϣϯϨΠϠʔͷ࣭Λอͭ͜ͱʹͭͳ͕͍ͬͯ·͢
(4ΛαʔϏε͢Δ্Ͱͷෆ҆ ओ࠵ͷ٢ా͞Μ͔ΒʮαʔόϨεʹίϛοτͨ͠αʔϏεΛ ఏڙ͢Δ͜ͱʹෆ҆ͳ͔͔ͬͨʁʯͱฉ͔Εͨɻ ˠ࠷ॳރΕͯͳ͍͕ނʹൃੜ͢Δ͋Δ͔ɻ ͝Ζɺ4Λ࠷ॳʹ࠾༻͢Δͱ͖ʹɺ͍͔ͭαʔϏ ε͕ऴΘΔΜ͡Όͳ͍͔ʁͱΛͨ͜͠ͱ͕͋Δɻ ˠࠓͰͦΜͳ͜ͱΛؾʹ͢Δਓ͍ͳ͍ αʔόϨεಉ͡Ͱʁ
αʔόϨεͷ՝ • ཁ݅ʹΑͬͯݴޠΛ͍͚ͳ͚ΕͳΒͳ͍ • εςʔτϑϧͳγεςϜΛ։ൃ͢Δͷ͍͠ • ϑϨʔϜϫʔΫ͕·ͩະख़
ཁ݅ʹΑͬͯݴޠΛ͍͚ͳ͚ΕͳΒͳ͍ -BNCEB 1ZUIPO KBWBTDSJQU +BWBͷݴޠ͕ར༻Ͱ͖Δɻ ˠ࠷ॳ+BWBͰ։ൃ͠Α͏ͱࣦͯ͠ഊͨ͠ +BWBίϯςφىಈ࣌ͷΦʔόʔϔου͕ͱͯେ͖͍ɻ ˠʙඵͷىಈ࣌ؒɺϝϞϦফඅྔେ͖͍ +BWBʹྑ͍͕͋Δɻ ˠॲཧ͕ѹతʹ͍ɻ
"1*ͷडʹ1ZUIPOKBWBTDSJQUɻόονॲཧ+BWBɻ
εςʔτϑϧͳγεςϜΛ։ൃ͢Δͷ͍͠ αʔόϨεঢ়ଶΛ࣋ͭ͜ͱ͕Ͱ͖ͳ͍ɻ ˠ࣋ͭͳΒ%#,74ͳͲΛར༻͢Δ͜ͱʹɻ ֎෦ࢿݯͰߴ͔ͭίετײͷ͍͍ํ๏͕ͳ͍ɻ ˠ%ZOBNP%#ಡΈॻ͖ߴͳ͕Β มͷಡΈॻ͖Ϩϕϧͷ*0Λཁٻ͢ΔͱߴՁɻ ˠ.FNDBDIF3FEJTεέʔϧͮ͠Β͍ɻ ϑΝΠϧγεςϜΛ௨ͯ͠ঢ়ଶΛ࣋ͭʁ ˠίϯςφ͕ഁغ͞ΕΔͱҰॹʹফ͑ͯ͠·͏
ϑϨʔϜϫʔΫ͕·ͩະख़ ࠓͰͦ͜ɺز͔ͭͷϓϩμΫτ͕ग़͖͍ͯͯ·͢ɻ͔͠͠ɺ ·ͩ·ͩະख़ɻ (4Ͱ࣌ظతʹ͑ΔϓϩμΫτ͕ଘࡏ͠ͳ͔ͬͨͨΊɺ શʹࣗલͷϑϨʔϜϫʔΫΛར༻ɻ ࠓޙɺαʔόϨεͰͷγεςϜ։ൃ͕ҰൠతͳͷʹͳΔͨ ΊʹϑϨʔϜϫʔΫͷඋ͕ඞཁͱͳΓͦ͏ɻ
αʔόϨεͷະདྷ ԾԽͷྲྀΕͷ࣍ίϯςφͰͳ͘αʔόϨεʁ ˠԾԽௐୡظؒͷॖͰීٴ *BB4ͷొ ˠϋʔυΣΞͷཧ͔Β։์ ˠඞཁͳͱ͖ʹඞཁͳ͚ͩαʔό͕खʹೖΔ ίϯςφͲ͏ʁ αʔόϨεΞΠυϧϦιʔεશʹͳ͘ͳΔɻ
αʔόϨεͱϚΠΫϩαʔϏεͰมΘΔήʔϜαʔό։ൃ • Πϯϑϥอकʹର͢ΔཁٻϦιʔεͷݮ • ༨Ϧιʔεཧ͔Βͷ։์ • ίϞσΟςΟԽͨ͠ػೳͷ࠶ར༻ੑ্ • ࣭৴པੑͷ্
Πϯϑϥอकʹର͢ΔཁٻϦιʔεͷݮ αʔόϨεԽ͢Δ͜ͱͰɺΠϯϑϥϨΠϠʔͷอकΛ "NB[PO (PPHMFʹͤΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔͨΊɺ ήʔϜ։ൃݱͰෆ͕ͪ͠ͳΠϯϑϥΤϯδχΞʹର͢Δ ཁٻϦιʔε͕ݮͰ͖·͢
༨Ϧιʔεཧ͔Βͷ։์ ఆ͞ΕΔΞΫηεΛࡹ͖ɺকདྷͷΞΫηε૿ʹඋ͑ͨα ʔόͷ֬อɻ͜ΕΛ࣮ݱ͢ΔͨΊʹΞΫηεͷ༧ଌ αʔόࢿݯͷௐୡۀ͕ൃੜɻ ˠαʔόϨεͰॏཁੑ͘ͳΔɻ ϐʔΫ࣌ؒଳͱͦ͏Ͱͳ͍࣌ؒଳͷΪϟοϓʹΑͬͯੜ·Ε ΔΞΠυϧɻ ˠΦʔτεέʔϦϯάͷΈͷඞཁͩͬͨɻ ˠαʔόϨεͰඞཁͳ͘ͳΔɻ
ίϞσΟςΟԽͨ͠ػೳͷ࠶ར༻ੑ্ ήʔϜαʔόͷதʹ͓ଋతͳػೳ͕ଟଘࡏ͠·͢ ͦ͏͍ͬͨػೳϚΠΫϩαʔϏεԽ͢Δ͜ͱͰɺԿ࠶ ։ൃ͢Δ͜ͱΛආ͚Δ͜ͱ͕Ͱ͖·͢ ͜ΕʹΑͬͯɺΑΓήʔϜΛ໘ന͘͢ΔͨΊͷݻ༗ͷػೳͷ ։ൃʹΑΓϦιʔεΛׂ͘͜ͱ͕ग़དྷΔΑ͏ʹͳΓ·͢
࣭ɾ৴པੑͷ্ ςετ͕͘͢͠ͳͬͨΓɺεέʔϥϏϦςΟɾՄ༻ੑ͕ ্͢Δ͜ͱͰɺγεςϜશମͷ࣭৴པੑ্͕ɻ • εύήοςΟԽͯ͠ςετ͕ࠔ • ϋʔυΣΞ͕ނোɺωοτϫʔΫোʹΑͬͯαʔϏε͕ఀࢭ • ٸܹͳΞΫηε૿ՃʹΞϓϦέʔγϣϯΞʔΩςΫνϟ͕͑ΒΕͳ͍ ͜ͷΑ͏ͳɺαʔόϨεͱϚΠΫϩαʔϏεʹΑͬͯɺ
ΑΓ؆୯ͳʹͳΔɻ
࠷ޙʹ αʔόϨε࣍ͳΔτϨϯυͱͳΔՄೳੑ͕ߴ͍ ˠ͔͠͠ɺαʔόϨεۜͷؙͰͳ͍ ͨͱ͑ɺεςʔτϑϧͳγεςϜʹ͍͍ͯͳ͍ ˠແཧ࣮͍͍ͯͯ͜͠͠ͱͳ͍ దࡐదॴɺ͍ॴΛݟۃΊΔ͜ͱେࣄ
એ (4ͰεϚϗήʔϜϒϥβήʔϜͷඞཁͱ͢Δػೳ ͷதͰίϞσΟςΟԽͨ͠෦ΛϚΠΫϩαʔϏεԽ͠ɺα ʔόϨεͰઃܭɾ࣮ͨ͠αʔϏεɻ ˠ͜Ε·Ͱ͖ͯͨ͠Α͏ͳԸܙ͕ಘΒΕΔɻ ࣗΒαʔόϨεԽʹऔΓΉલʹҰɺ(4ͷ࠾༻ݕ౼ ͍͚ͨͩΕɻ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ IUUQTHTJP ϕʔλςετࢀՃऀืूதʂ