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
June 02, 2017
Technology
8
15k
DAU 100 万人突破! 急成長を支える Shadowverse のインフラ技術
2017/06/01 Game Tech Session ~AWS Summit Tokyo 2017~
Cygames
June 02, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
1.2k
雲だけじゃない!『GRANBLUE FANTASY: Relink』の世界に奥行きを出す半透明スプライト活用術
cygames
0
600
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
0
100
社内にバーチャルスタッフ!?「スイちゃん」のキャラクターデザインと施策の広げ方の秘訣
cygames
1
290
全高3m超のバハムート像がスマホを通して躍動する! ~『Cygames展 Artworks』ARコンテンツの開発プロセスと実装~
cygames
0
93
最高の資料を目指すために!社内フリーイラスト制作チームの取り組みについて
cygames
1
310
「生きているモーション」を作り出すCygamesのモーションキャプチャー
cygames
0
200
『Cygames展 Artworks』におけるShadowverseデジタルサイネージ制作事例
cygames
0
80
『GRANBLUE FANTASY: Relink』 原作の世界観に没入するステージの絵作り
cygames
0
1.8k
Other Decks in Technology
See All in Technology
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
120
Witchcraft for Memory
pocke
1
720
asken AI勉強会(Android)
tadashi_sato
0
160
モバイル界のMCPを考える
naoto33
0
390
赤煉瓦倉庫勉強会「Databricksを選んだ理由と、絶賛真っ只中のデータ基盤移行体験記」
ivry_presentationmaterials
1
200
WordPressから ヘッドレスCMSへ! Storyblokへの移行プロセス
nyata
0
380
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.4k
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
260
改めてAWS WAFを振り返る~業務で使うためのポイント~
masakiokuda
1
210
OpenHands🤲にContributeしてみた
kotauchisunsun
1
510
Yamla: Rustでつくるリアルタイム性を追求した機械学習基盤 / Yamla: A Rust-Based Machine Learning Platform Pursuing Real-Time Capabilities
lycorptech_jp
PRO
4
210
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
190
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Practical Orchestrator
shlominoach
188
11k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
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