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
DAU 100 万人突破! 急成長を支える Shadowverse のインフラ技術
Search
Cygames
PRO
June 02, 2017
Technology
8
15k
DAU 100 万人突破! 急成長を支える Shadowverse のインフラ技術
2017/06/01 Game Tech Session ~AWS Summit Tokyo 2017~
Cygames
PRO
June 02, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
2
460
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
2
1.2k
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
1k
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
650
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
340
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
1
3.2k
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
PRO
0
2.3k
雲だけじゃない!『GRANBLUE FANTASY: Relink』の世界に奥行きを出す半透明スプライト活用術
cygames
PRO
0
1.1k
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
PRO
0
170
Other Decks in Technology
See All in Technology
Android Audio: Beyond Winning On It
atsushieno
0
2.4k
💡Ruby 川辺で灯すPicoRubyからの光
bash0c7
0
120
S3アクセス制御の設計ポイント
tommy0124
3
200
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
Modern Linux
oracle4engineer
PRO
0
160
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
170
AI時代を生き抜くエンジニアキャリアの築き方 (AI-Native 時代、エンジニアという道は 「最大の挑戦の場」となる) / Building an Engineering Career to Thrive in the Age of AI (In the AI-Native Era, the Path of Engineering Becomes the Ultimate Arena of Challenge)
jeongjaesoon
0
230
KotlinConf 2025_イベントレポート
sony
1
140
新規プロダクトでプロトタイプから正式リリースまでNext.jsで開発したリアル
kawanoriku0
1
180
20250913_JAWS_sysad_kobe
takuyay0ne
2
250
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
450
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
Typedesign – Prime Four
hannesfritz
42
2.8k
Embracing the Ebb and Flow
colly
87
4.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Bash Introduction
62gerente
615
210k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Six Lessons from altMBA
skipperchong
28
4k
Navigating Team Friction
lara
189
15k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
YesSQL, Process and Tooling at Scale
rocio
173
14k
Facilitating Awesome Meetings
lara
55
6.5k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Transcript
ΞδΣϯμ 4IBEPXWFSTFΛࢧ͑ ΔΠ ϯϑϥٕज़ εέʔϥϒϧͳϩάऩूج൫ େنڥγεςϜͱͭͷνϟ Ϩϯδ 5#ͷϩάऩूج൫
4IBEPXWFSTFΛࢧ͑ Δ Π ϯϑϥٕज़
େنڥ
"QQMJDBUJPO4FSWFST Node.js Nginx 6TFS$MJFOU "QQMJDBUJPO4FSWFST Apache / PHP %BUBCBTF4FSWFST
MySQL HTTPS WebSocket Elastic Load Balancing Elastic Load Balancing $BTIF4FSWFST Memcached Redis
ͭͷνϟ Ϩϯδ શσʔλͷอଘͱσʔλϩʔυ ϦϓϨΠػೳͷϦ Ϧʔε /HJOYʹΑ Δಠ࣮ࣗͷ-ϩʔυόϥϯα ରઓγεςϜͷεέʔϧΞ τ
ํϦ ΞϧλΠ Ϝ௨৴ ࣋ଓతଓͷཱ֬ 8FC4PDLFU ରઓ૬खʹ Ϧ ΞϧλΠ Ϝʹ
σʔλө
Ϧ ΞϧλΠ Ϝ௨৴ͷαʔόߏ ΫϥΠ Ξϯ τ3PPN*%Ͱ άϧʔϓԽ͞ΕΔ αʔόϝ οηʔδΛ ΫϥΠ
Ξϯ τʹڞ༗͢Δ ΈΛ࣋ͭ ࢄϦ ΞϧλΠ Ϝ௨৴ͷ ߏͷݕ౼ Client A (RoomID 1) Client B (RoomID 2) Client C (RoomID 1) RoomID 1 RoomID 2 4FSWFS
1VC4VCϝ οηʔδϯάϞσϧ 1VC4VCϞσϧબఆ ࣮͕༰қ ୯Ұো ʢ410'ʣ 1VC4VC͕Ϙ τϧωο Ϋʹ
εέʔϧΞ τͷ՝ ແఀࢭͷมߋ͕ߦ͑ͳ͍ Client A (RoomID 1) Client B (RoomID 2) Client C (RoomID 1) RoomID 1 /PEF RoomID 2 /PEF RoomID 1 RoomID 3 /PEF RoomID 2 3FEJT1VC4VC RoomID 1 RoomID 3 Client D (RoomID 3) Layer4 LB(Elastic Load Balancing)
ϧʔϜ*%ରԠ-ϩʔυόϥϯαͷ։ൃ 410'ͷഉআ ϊ ʔυΛಈతʹมߋ Ϛ ονϯάϩδο Ϋ Λ࣮ ಉҰϧʔϜ*%Λ ಉҰαʔόʹಈతϧʔς
Ο ϯά Client A (RoomID 1) Client B (RoomID 2) Client C (RoomID 1) Lua Nginx 1 Layer4 LB(Elastic Load Balancing) Lua Application Load Balancer Cluster Lua Nginx N Client D (RoomID 3) Nginx 2 … Room 1 Node 1 Room 2 Room 3 Node 3 Node 2 Dynamic Routing
/HJOY-ϩʔυόϥϯαͱ-VBεΫ Ϧϓ τ /HJOY 8FC4PDLFU௨৴ ʢํ௨৴ʣ ͷϩʔυόϥϯα -VBϞδϡʔϧʹΑ Γϩδο
ΫػೳΛ࣮ -VBεΫ Ϧϓ τ ϔο μʹ༩͞ΕͨϧʔϜ*%Λݩʹಈతࢄ 8FC"1*ʹΑ Γແఀࢭʹઃఆมߋ
ࢄϩδο Ϋͷ࣮ ࢄϩδο Ϋ ϧʔϜ*%ͷϋο γϡͱ/PEFαʔόͷ༨ࢉ ʢNPEʣ Ͱ ଓઌϊ
ʔυ͕ܾఆ͞ΕΔ $POTJTUFOU)BTIJOH ʢϋο γϡܭࢉʣ ϊ ʔυͷՃ ɾ আΛ࠷খݶͷมߋͰϚ ο ϐϯά
ສηο γϣϯ ಉ࣌ରઓສୡ
ͭͷνϟ Ϩϯδ શσʔλͷอଘͱσʔλϩʔυ ϦϓϨΠػೳͷϦ Ϧʔε /HJOYʹΑ Δಠ࣮ࣗͷ-ϩʔυόϥϯα ରઓγεςϜͷεέʔϧΞ τ
ϦϓϨΠػೳ ࠷৽݅ͷότϧΛ ϦϓϨΠ ͢Δ શରઓσʔλͷอଘ շదͳԠ
(BNF4ZTUFN 3FQMBZ4ZTUFN ϦϓϨΠσʔλͷอଘͱ࠶ੜ Amazon S3 Redis SQS Web Servers
(PHP) Worker Servers (PHP)
ϦϓϨΠػೳͷσʔλ
ϦϓϨΠػೳͷϦ Ϧʔε ࣮ͷ๛ͳ"84αʔϏεΛ࠾༻ 424ʹΑ ΔඇಉظԽͰػೳ "NB[PO4ͷ҆ఆͨ͠σʔλऔಘ ຊ൪ڥʹ͓͚Δظؒͷݕূ Ϣʔβʹݟͤͳ͍ඇެ։Ϧ Ϧʔε
· ͱΊ ୯Ұোͷͳ͍֦ுՄೳͳαʔόߏ ϐʔΫ࣌ͷ௨৴ྔ ɾ ΞΫηε͕ଟ͘ɺ ༧ଌࠔ ରઓγεςϜΛಠٕࣗज़Ͱ࣮ େ༰ྔσʔλͷอଘɺ
σʔλશੑͷ֬อ "NB[PO3%4 "NB[PO4Λར༻
εέʔϥϒϧͳ ϩάऩूج൫
ιʔγϟϧήʔϜͱ ϩά $4ରԠ ,1*ࢦඪͷऔಘ γεςϜෆ۩߹ͷௐࠪ
σʔλͷछྨͱྔ ςΩε τϩά ΞΫηεϩάɺ Τϥʔϩάɺ ό τϧϩάɺ 42-ϩάʜ %BUBCBTF*OTFSUϩά
՝ۚϩάɺ ΞΠ ςϜϩάɺ ߦಈϩά
˞4IBEPXWFSTFҎ֎ؚΉ
ςΩε τϩάऩूͷ՝ ϩάऔΓ ͜΅͠ ҰߦͷαΠ ζ੍ݶ όο ϑ ΝΩϡʔҲΕ தܧαʔόͷෛՙ
ϩάσʔλ૿େʹΑ Δ εέʔϧΞ τͷ՝ Web Server 1 Error log KPI log Log Proxy 3 4UPSBHF"SSBZ Web Server 2 Web Server N SQL log Log Proxy 2 Access log Log Proxy 1
.Z42-Π ϯαʔ τ ϩάͷ՝ ϨεϙϯεԆ .Z42-*OTFSUॲཧͷԆ ϩάσʔλ૿େ ϨϓϦέʔγϣϯԆ Web
Server 1 Action log Web Server 2 Web Server N Item log MySQL Server Payment log
ಠࣗϩάసૹΤʔδΣϯ τͷ։ൃ "NB[PO4ʹϩάΛू ̎ͭͷϩάసૹΤʔδΣϯ τ Λ։ൃ 4UBMLFSςΩε τϩάͷసૹ 1PSUFS%#*OTFSUϩάͷඇಉظసૹ
ߏԽσʔλͷసૹͱ424ϝ οηʔδ࡞
4UBMLFSͱ1PSUFS औΓ ͜΅͠ࢭͱ࠶ଓ సૹͰ͖ͳ͔ͬͨϩάશͯϩʔΧϧʹอଘ &YQPOFOUJBM#BDLP⒎Ϧ τϥΠִؒͷௐ +JUUFS ʢΒ͖ͭʣ Λಋೖ͠ɺ
࠶ଓཁٻΛࢄ
4UBMLFSͱ1PSUFS "NB[PO4ͷύϑ ΥʔϚϯε্ ઌ಄จࣈʹϋο γϡϓϨϑ Ο ο Ϋ εՃ͠ɺ
JOEFYΛෳύʔς Ο γϣϯʹࢄ ྫ ɿ 4CVDLFU/MpMF໊
"TZODISPOPVT-PH 4ZTUFN (BNF 4ZTUFN CVTJOFTT 4ZTUFN 1PSUFSͱඇಉظ%#ϩάγεςϜ Worker Servers
(Amazon EC2) Log Datebase (Amazon Aurora) σʔλղੳ CSରԠ Porter Web Servers Amazon S3 SQS TSV
"844ϩάू Kibana Google BigQuery Mackerel Amazon Aurora Redshift Porter/Stalker
Amazon S3
ϩά౷ܭͱ άϥϑඳը )551εςʔλεͷΞΫηε
ώʔ τϚοϓ ΞΫηεϩάͱ࠲ඪใΛϚο ϐϯά
.BDLFSFM "QBDIFϨεϙϯελΠ ϜඵҎ্ͷ
"NB[PO4ͱ֎෦πʔϧͷ࿈ܞ εέʔϥϒϧʹ Π ϯελϯεΛ૿ݮ ϩάͷྔϐʔΫ࣌ͱ ࠷খͷ࣌Ͱഒͷࠩ αʔόϨεͰ ӡ༻Λܰݮ Google
BigQuery Porter/Stalker Amazon S3
1.Put Event Trigger 2.Create Message 3.C ount M essages
&$4Λར༻ͨ͠εέʔϥϒϧͳϩά࿈ܞ Google Cloud Storage Google BigQuery Auto Scaling 4.Run Task 6.Save Objects SQL Query Cron Job Amazon S3 Amazon Lamdba Amazon Lamdba SQS Amazon EC2 Container Service(ECS) Ϋϥελͷ$16༻ʹԠͯ͡ Π ϯελϯεΛ૿ݮ 5.Get Files ϩάྔʹԠͯ͡ίϯςφىಈΛ૿ݮ
ͭͷεέʔϦϯάϙϦ γͷ࿈ಈ -BNCEB'VODUJPO ϩάྔʹԠͯ͡ɺ ίϯςφىಈΛ্͛Δ &$"VUP4DBMJOH ىಈதίϯςφ͕ ্ঢʹΑ Γ$16༻্ঢ
&$εέʔϦϯάϙϦ γʹΑ Γ $POUBJOFS*OTUBODF૿Ճ &$4Ϋϥελʔͷ$16༻ $POUBJOFS*OTUBODFىಈ
ίε τݮͱࣗಈԽͷ࣮ݱ αʔόϨεʺίε τݮ -BNCEB&$4ʹΑ Γ ίε τ Λʹݮ
ίϯςφٕज़ͷ࠾༻ -BNCEBͱ&$4ͷద༻ൣғ όονॲཧɺ Π ϕϯ τ τ ϦΨʔ-BNCEB ৗ࣮࣌ߦ͢Δॲཧ&$4
"NB[PO"UIFOBͷར༻ 1.Put Event Trigger 2.Create Message 3.C ount M
essages Auto Scaling 4.Run Task Cron Job Amazon S3 Amazon Lamdba Amazon Lamdba SQS Amazon EC2 Container Service(ECS) 5.Get Files SQL Query Amazon S3 Amazon Athena 6.Save Objects Google Cloud Storage Google BigQuery SQL Query
"NB[PO"UIFOBͷར༻ ύεมʹΑ Δύʔς Ο γϣϯԽ 4UBMLFSͷ4ύεܗࣜ "NB[PO"UIFOBͷ4ύεܗࣜ S3://athena-examples/l2xa-<file>.20150101 s3://athena-examples/ex/2015/01/01/<file>
· ͱΊ ϩάूʹΑ Γσʔλ׆༻͕ଅਐ ඇಉظԽΛߦ͍ϨεϙϯεΛվળ αʔόϨε ͱࣗಈԽͰίε τ ͱݮ
$ZHBNFTΠ ϯϑϥ͕ େʹ͍ͯ͠Δ ͜ ͱ
ͨ Γલͷ͜ ͱ Λ ͨ ΓલʹΔ
Π ϯϑϥͷϨΠ ϠʔͰ ՝Λղܾ͢Δ
ίΞٕज़ ࣗͨͪͰ࣮͢Δ
5IBOLZPV