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
ゲームのサーバサイドエンジニアをやっていく技術 / The technology of gam...
Search
mackee
July 06, 2019
Programming
1
4.7k
ゲームのサーバサイドエンジニアをやっていく技術 / The technology of game server side engineer
沖縄学生×企業エンジニア 7月大LT大会!!!
https://connpass.com/event/132178/
mackee
July 06, 2019
Tweet
Share
More Decks by mackee
See All by mackee
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
perl for shell, awk and sed programmers
mackee
2
1.5k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
69
マイクロサービス化を利用した Goへの移行事例
mackee
0
120
PerlでつくるフルスクラッチWebAuthn/パスキー認証 / Demonstration of full-scratch WebAuthn/Passkey Authentication written in Perl
mackee
3
3.4k
SRE定例やその辺の取り組みをアプリケーションエンジニア目線で語る / "Observe" about SRE Meeting by Application Engineer
mackee
0
1.8k
TinyGoで使えるORM sqllaの 紹介とTinyGoで使えるようにするための工夫
mackee
0
1.2k
Go向けORM sqllaの紹介と JOINやUNIONを含んだクエリの扱い方
mackee
0
4.5k
デプロイ今昔物語 〜CGIからサーバーレスまで〜 / The deployment technics
mackee
10
12k
Other Decks in Programming
See All in Programming
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
350
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
1
100
Recoilを剥がしている話
kirik
5
6.9k
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
450
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
360
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
Go の GC の不得意な部分を克服したい
taiyow
3
810
useSyncExternalStoreを使いまくる
ssssota
6
1.3k
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
890
return文におけるstd::moveについて
onihusube
1
1.2k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Docker and Python
trallard
42
3.1k
The Cost Of JavaScript in 2023
addyosmani
46
7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Six Lessons from altMBA
skipperchong
27
3.5k
Into the Great Unknown - MozCon
thekraken
33
1.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Faster Mobile Websites
deanohume
305
30k
Typedesign – Prime Four
hannesfritz
40
2.4k
Thoughts on Productivity
jonyablonski
68
4.4k
Transcript
ήʔϜͷαʔόαΠυ ΤϯδχΞΛ ͍ٕͬͯ͘ज़ @mackee_w a.k.a macopy ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!
ࢲͰ͢ w ໘ന๏ਓΧϠοΫ!ח w ιʔγϟϧήʔϜࣄۀ෦ w ήʔϜٕݚ w αʔόαΠυΤϯδχΞ w
1FSM (P +BWB4DSJQU w ઐ w Ϛελσʔλ w 8FC4PDLFU w ϚΠϒʔϜΩʔϘʔυ࡞Γ
None
ిࢠج൘Λշదʹ࡞Δ ͨΊͷΩʔϘʔυͷి ࢠج൘Λ࡞Δٕज़ @mackee_w a.k.a macopy ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!
͜ͷΛΔ Ϟνϕʔγϣϯ ήʔϜͷαʔόαΠυ ΤϯδχΞΛ ͍ٕͬͯ͘ज़
ήʔϜ࡞Γͱݴ͑… • ίϯγϡʔϚػPC, εϚϗͰಈ͘ϓϩάϥϜ Λॻ͘ • ֆΛඳ͘෦(3D, 2D…) • UI
• ϢʔβΠϯλϥΫγϣϯ
ݱͷ(ൺֱతେنͳ) εϚϗήʔϜͷߏ
ݱͷ(ൺֱతେنͳ) εϚϗήʔϜͷߏ ͜͜ͷϓϩάϥϜΛ ॻ͘ਓ͍Ε
ݱͷ(ൺֱతେنͳ) εϚϗήʔϜͷߏ ͜͜ͷϓϩάϥϜΛ ॻ͘ਓඞཁ
ͳͷ͕ͩ ήʔϜΛ࡞Γ͍ͨਓ αʔόαΠυΛ ͋·ΓΒͳ͍
αʔόαΠυΛΓ͍ͨਓ ήʔϜʹ αʔόαΠυ͕ ඞཁͳ͜ͱΛ Βͳ͍
ࠓ͍ͬͯΔࣄ ͍ͬͯΔٕज़Λ͑ͯ ήʔϜͷαʔόαΠυΛΔਓΛ ૿͍ͨ͠ʂʂʂ
ࣄ༰ΛҰݴͰઆ໌͢Δͱ ήʔϜͷ ηʔϒσʔλΛ ͏·͘ อଘͨ͠Γ औΓग़ͨ͠Γ͢Δ ࣄ
αʔόʹηʔϒσʔλ͕ͨ͘͞Μ
దʹηʔϒσʔλΛબΜͰ ͘͢ฦ͢
Ұൠతͳηʔϒσʔλͱҧ͏ • ηʔϒσʔλଞਓݟΕΔ߹͕͋Δ • ϥϯΩϯά, σοΩߏ etc… • ݟ͍͚ͤͯͳ͍ͷͪΖΜ͋Δ •
อଘ࣌ʹখ͍͠ܭࢉΛ͢Δ͜ͱ͕͋Δ • AIతͳͳʹ͔, ԿΒ͔ͷγϛϡϨʔγϣϯͳͲ…
ηʔϒσʔλͷϝλϑΝʔʹ ͯ·Βͳ͍ • ରઓ(PvP, GvGͳͲ) • ϦΞϧλΠϜ(WebSocketͱ͔RUDPͱ͔) • Ξηοτ৴(ը૾ͱ͔Իͱ͔ಈըͱ͔3D σʔλͱ͔)
• ”ߋ৽”͔ͳΓհʂʂ(ͦͯ͠໘ന͍
αʔό͕ͳ͍ήʔϜͱͳʹ͔ • Ұਓ༻ήʔϜͷେ • είΞΛڝ͏ͳΒϥϯΩϯάूܭαʔό͕ Ͳ͔͜ʹ͋Δ • ϚϧνͰP2PͳΒαʔό͍ͳ͍͜ͱ • গਓͰΔFPSP2PͰߦΘΕ͍ͯΔ
͜ΕੲͰ͕͢ • CGIήʔϜʙΨϥέʔͷιγϟήʔ࣌WebαʔϏεͱ࡞ Γ΄ͱΜͲҰॹͩͬͨ • ͨΒσʔλͷॻ͖ࠐΈ/มߋ͕ଟ͍WebαʔϏε • GET/POSTΛड͚ͯHTMLΛు͘ • εϚϗήʔʹͳͬͯAPIΛఏڙ͢Δଘࡏʹͳͬͨ
• SPA࣌ʹͳͬͯϞμϯͳWebαʔϏεͦ͏ͳ͍ͬͯΔ
WebαʔϏεͱήʔϜͷҧ͍ • ͨΒσʔλॻ͖ࠐΈ/มߋ͕ଟ͍ • ηʔϒσʔλͷมߋ͕ৗʹى͍ͬͯ͜Δ • ࡏ͕͍࣌ؒ • Ӭଓଓ, ཪͰճΔόονͷଟ͞
• Ϛελσʔλͷଘࡏ • 1req͋ͨΓʹՔ͙͓͕ۚଟ͍ • ࣮มߋͰڍಈ͕ίϩίϩมΘΔ
σϓϩΠΟϯυ • 14ճৗʹશϢʔβࢀՃͷΠϕϯτతͳͷ͕ ճΔήʔϜ • σϓϩΠ(࣮ͷຊ൪ڥͷө)͕ߦ͑Δ࣌ ͕ؒͦͷ伱͔ؒ͠ແ͍ -> σϓϩΠΟϯυ •
ʮσϓϩΠΟϯυͳΜͯͷଞͷWeb αʔϏεʹͳ͍ʯ
ήʔϜͷαʔόαΠυ ͋ΒΏΔܭࢉػՊֶͷࣝΛཁٻ͢Δ • ηʔϒσʔλ • σʔλߏ, ݕࡧ, ΞϧΰϦζϜ • γϛϡϨʔγϣϯ
• εςʔτϚγϯ, ήʔϜAI, VM • Πϯϑϥ • ࢄγεςϜ, ฒߦॲཧ
ͪΖΜαʔόͰ ήʔϜతͳίʔυॻ͖·͢ • ͍͍ײ͡ͷରઓϚονϯάͱ͔ • ήʔϜAI(CPU)ॻ͘ͱ͔ • ٿ൫γϛϡϨʔγϣϯΈ͍ͨͳͷॻ͘ͱ͔ • ݕࢉͷͨΊΫϥΠΞϯτͱαʔόͰಉ͡ϩδοΫ
Λ࣮͢Δ͜ͱ • νʔτݕͱ͔͠·͢
Θ͔Γ·͔ͨ͠ʁʁʁʁ
͡Ό͓͋લ࠷ۙԿͬͯΔΜͩ • ڊେεϓϨουγʔτΛߦ͝ͱʹόʔδϣϯ ཧͯ͠ɺ͍͍ײ͡ʹߦΛൈ͖ग़ͯ͠CSV JSONʹ͢Δ܅Λ࡞ͬͯ·ͨ͠ •Ϛελσʔλ
Ϛελσʔλͱ • ήʔϜͷύϥϝʔλઃఆ, εςʔδͷஔͱ͔ͦ ͏͍͏ͷΛॾʑؚΊͨΛࢦ͢ • ϓϩάϥϜʹॻ͍ͯΔͱɺϓϩάϥϚҎ֎͕มߋ Ͱ͖ͳ͍ͷͰ֎ʹग़͓ͯ͘͠ • ΧϠοΫͰGoogleεϓϨουγʔτΛ༻ͯ͠ه
ड़͠ɺDBʹೖΕͨΓJSONʹͯ͠ຊ൪Ͱར༻͍ͯ͠ Δ 200γʔτҎ্͋ΔϓϩδΣΫτ
None
ͦΕαʔόͷࣄͳͷʁ
Ϛελσʔλͷө • ि1ͰΠϕϯτͱ͔ΨνϟͬͯΔͱͦͷස Ͱຊ൪ө͕ඞཁ • ͦͷຊ൪өͱϚελσʔλͷөΛࢦ͠ ·͢ • ϚελσʔλαʔόαΠυΤϯδχΞ͕ ͬͯ·͢
ͱ͍͏Θ͚Ͱ Ϛελσʔλͷੈքฏ αʔόαΠυΤϯδχΞͷ ࣄͱ͍͏͜ͱʹͳ͍ͬͯΔ
σϓϩΠʹࢸΔ·Ͱͷ ϫʔΫϑϩʔ • σϓϩΠ(ຊ൪ө)ʹϚελσʔλͷଞʹɺιʔ είʔυΫϥΠΞϯτ͕ಡΉΞηοτ͕ཁΔ • ϚελσʔλϨϕϧσβΠφʔ͕࡞Δ͠Ξηο τσβΠφʔ&ΫϥΠΞϯτͷਓ͕࡞Δ͠… • ۀ͍ͯ͠Δ͔Β͍͍ײ͡ʹϫʔΫϑϩʔ࡞Βͳ
͍ͱճΒͳ͍YOʂ
ճΒͳ͍݁Ռ σϓϩΠ͢ΔαʔόαΠυͷ ट͕క·ΔͷͰ ࠷ۙϫʔΫϑϩʔඋͬͯ ͍Δ
ίʔυͷྗͰϫʔΫϑϩʔΛ εϜʔζʹ͢Δ • ϚελσʔλͷੜΛBotʹΒͤΔ • αʔόΤϯδχΞͷखΛΘͣʹࣗݾ݁Խ • SlackͷBot͕࣍ʹΔ͖͜ͱΛݴ͏ • มߋ༰ʹԠͨ͡өखॱͷࣗಈੜ
None
͍ͬͯΔ͜ͱͨ͘͞Μ͋Δʂʂ Ͱ͖Δ͜ͱͨ͘͞Μ͋Δʂʂʂ • ۙͷࣄJenkins͔ΒCircleCIʹςετίʔυͷࣗಈ࣮ ߦڥΛҠߦ͢Δ͜ͱͩͬͨΓ • ࠷ۙͷτϐοΫຊ൪ڥΛίϯςφʹ͢Δ͜ͱͩͬͨΓ • ϨΨγʔΛϞομϯʹ͢Δࣄৗʹ͍ͬͯΔ •
ISUCONతͳνϡʔχϯά࠷ۙͨ͠ • ࢄτϨʔγϯά(AWS X-Ray)ΛͬͯಛఆΛͨ͠
ࠓΞπ͍ٕज़ ࢄτϨʔγϯά
ݱͷΠϯϑϥߏ SFRʹؔΘΔ ίϯϙʔωϯτ͕ଟ͍ʂʂʂ
ίϯϙʔωϯτ͕ଟ͍ͱ…ʁ • ͕ىͬͨ͜ͱ͖ͷͨΊʹ֤ʑͷίϯϙʔ ωϯτ͕ϩάΛు͍͍ͯΔ • ֤ʑࣗ༝ʹు͍͍ͯΔͷͰɺͲͷϩάు͍ͨ ͋ͱʹͲΕ͕ు͔Ε͔ͨ͜Μ͕Β͕Δ • ࣌ܥྻʹฒͯෳ͍Δ͠ωοτϫʔ ΫԆͰॱ൪ೖΕସΘͬͨΓ…
AWS X-RayΛͬͯϧʔϓΫΤϦ Λݟ͚ͭΔ
X-RayೖΕΔ ͖͔͚ͬʹͳͬͨࣄ݅
ωοτϫʔΫαν͍ͬͯΔࣄ݅ w 8FC4PDLFUͷଓΛઐతʹ͘͞LVJQFSCFMU ͱ͍͏ϛυϧΣΞΛ͏ΞϓϦ͕͋ͬͯ w ϦϦʔεલͷෛՙࢼݧͰɺ͋ΔҰఆͷෛՙΛ͔͚Δ ͱҰؾʹΞϓϦશମͷੑೳ͕ѱ͘ͳΔ w "QQ%#LVJQFSCFMUͷ$16٧·͍ͬͯΔ༷ ࢠ͕ͳ͍ɻ͔͠Ұؾʹ٧·Δɻͳͥʁ
ωοτϫʔΫαν͍ͬͯΔࣄ݅ w ϩάಥͬࠐΈ·ͬͯ͘Ͳ͕͜ϘτϧωοΫ͔Λௐ Δ w ͢ΔͱɺLVJQFSCFMUͷ"1*ΞΫηε͕ඵͱ͔ ඵͱ͔ඵͱ͔͔͔͍ͬͯΔ߹͕͋ͬͯɺͦ͜ Ͱ٧·͍ͬͯΔΑ͏ͩͬͨ w LVJQFSCFMU$16ͥΜͥΜͬͯͳ͍ͷʹʜΤ
ϥʔϩάग़ͯͳ͍Α
ωοτϫʔΫαν͍ͬͯΔࣄ݅ w ωοτϫʔΫͷύέοτͷεϧʔϓοτ͕Π ϯελϯεͷݶքΛ͍͑ͯͯɺωοτϫʔΫΠϯ λʔϑΣΠεͰυϩοϓ͢Δ͔Β্ͷ5$1ͷϨΠ ϠʔͰ࠶ૹ͕ىͬͯ͜Ԇͱ͍͏హͩͬͨ w ΠϯελϯεαΠζ$16ϝϞϦͰܾΊ͍ͯͨ ͚ΕͲɺωοτϫʔΫੑೳେࣄʜ
͏ଆड͚Δଆʹ༨༟͕͋Δ͕ ͕ഁ྾͢Δྫ
ͦΜͳΘ͚Ͱ ήʔϜͷαʔόαΠυ ໘നͦ͏ͱࢥͬͯ͘Ε·͔ͨ͠ʁ
Ҏ্ʂ
ఆFAQ • ։ൃͱӡ༻ ӡ༻ͬͯͭ·Βͳ͘ͳ͍ʁ • νʔϜਓͲΕҐͳΜͰ͔͢ • ͍ͬͯΔݴޠͱ͔ GitHubͱ͔Slackͱ͔ •
αʔόͱΫϥΠΞϯτֻ͚࣋ͪ͢Δਓ͍Δʁ • αʔόϨεmBaaSͷ ϩάूܭج൫