2018 아이펀팩토리 데브데이 서버위더스
(iFunFactory DevDay Server,Withus)
제목 : Scalable 한 게임 서버 만들기
발표자 : 문대경 CEO
일정 : 2018년 03월 28일
개요 : 게임 서버의 고확장성을 확보하기 위한 기법들을 설명하고, 각 기법들의 서버 장애에 대한 대응 전략을 공개합니다.
더 많은 정보를 원하신다면 아래를 참고해주세요
*아이펀팩토리 홈페이지 : https://ifunfactory.com/
*아이펀팩토리 기술 블로그 : https://blog.ifunfactory.com/
2. 2018 iFunFactory Dev Day
Scalability?
Scalability is the capability of a system, network, or process
to handle a growing amount of work, or its potential to be
enlarged to accommodate that growth.
- Wikipedia
3. 2018 iFunFactory Dev Day
Scalability?
Scalability is the capability of a system, network, or process
to handle a growing amount of work, or its potential to be
enlarged to accommodate that growth.
- Wikipedia
Scalability is the capability of a system, network, or process
to handle a growing amount of work, or its potential to be
enlarged to accommodate that growth.
Scalability , ,
,
22. 2018 iFunFactory Dev Day
Inefficiency = Wasting CPU time
) Indexing vs. Looping
Guide #1.
big O
coefficient
Guide #2. Busy-Waiting
Asynchronous ( )
27. 2018 iFunFactory Dev Day
Concurrency Units
Threads (preemptive or cooperative)
Processes (local or remote)
28. 2018 iFunFactory Dev Day
More Units != More Concurrency
By Benjamin D. Esham / Wikimedia Commons, CC BY-SA 3.0
https://commons.wikimedia.org/w/index.php?curid=56559
40. 2018 iFunFactory Dev Day
Pessimistic CC ( - )
Shared ObjectThread A Thread B
Write Lock
Read
Write
Unlock
Process Locked
41. 2018 iFunFactory Dev Day
Pessimistic CC ( - )
Shared ObjectThread A Thread B
Write Lock
Read
Write
Unlock
Process Locked
Read Lock Req
Read Lock Return
blocked
42. 2018 iFunFactory Dev Day
Optimistic CC ( - )
Shared ObjectThread A Thread B
Read Lock
Read (Rev=1)
Commit (Rev=1)
Unlock
Process
Locked
Write Lock
Unlock
Locked
43. 2018 iFunFactory Dev Day
Optimistic CC ( - )
Shared ObjectThread A Thread B
Read Lock
Read (Rev=1)
Commit (Rev=1)
Unlock
Process
Locked
Write Lock
Unlock
Read Lock
Read (Rev=1)
Unlock
44. 2018 iFunFactory Dev Day
Pessimistic CC ( - )
Shared ObjectThread A Thread B
Write Lock
Read
Write
Unlock
Process Locked
Write Lock Req
Write Lock Return
blocked
45. 2018 iFunFactory Dev Day
Optimistic CC ( - )
Read Lock
Read (Rev=1)
Commit (Rev=1)
Unlock
Process
Locked
Write Lock
Unlock
Read Lock
Read (Rev=1)
Unlock
46. 2018 iFunFactory Dev Day
Optimistic CC ( - )
Read Lock
Read (Rev=1)
Commit (Rev=1)
Unlock
Process
Locked
Write Lock
Unlock
Read Lock
Read (Rev=1)
Unlock
Write Lock
Commit (Rev=1, REJECT)
Locked
Process
47. 2018 iFunFactory Dev Day
Optimistic CC ( - )
Read Lock
Read (Rev=1)
Commit (Rev=1)
Unlock
Process
Locked
Write Lock
Unlock
Read Lock
Read (Rev=1)
Unlock
Write Lock
Commit (Rev=1, REJECT)
Locked
Read (Rev=2)
Unlock Roll back & Retry
Process
Process
49. 2018 iFunFactory Dev Day
Pessimistic CC vs. Optimistic CC
Pessimistic Optimistic
Low contention
High contention progress
rollback&retry
(progress )
50. 2018 iFunFactory Dev Day
•High contention
•Low contention
Pessimistic CC vs. Optimistic CC
➡ Pessimistic
➡ Optimistic
60. 2018 iFunFactory Dev Day
Workload Distribution
Domain-Agnostic Domain-Specific
state
Scale-out
reconfiguration
State
DB/Cache (centralized)
RPC (distributed)
in-memory
master-slave
replication