Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
Iocp 기본 구조 이해
Nam Hyeonuk
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
NDC 11 자이언트 서버의 비밀
승명 양
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin
1
of
107
Top clipped slide
Ndc14 분산 서버 구축의 ABC
Jul. 13, 2014
•
0 likes
19 likes
×
Be the first to like this
Show More
•
2,967 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Software
NDC14 분산 서버 구축의 ABC - 대규모 분산 시스템을 구축하기 위한 실용적 예와 그 원칙들 발표자료
Ho Gyu Lee
Follow
CTO - Ntuple at Ntuple
Advertisement
Advertisement
Advertisement
Recommended
게임 분산 서버 구조
Hyunjik Bae
37.5K views
•
35 slides
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
5.9K views
•
141 slides
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
11.5K views
•
64 slides
NDC12_Lockless게임서버설계와구현
noerror
7.4K views
•
48 slides
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
11.3K views
•
3 slides
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
19.8K views
•
85 slides
More Related Content
Slideshows for you
(20)
Iocp 기본 구조 이해
Nam Hyeonuk
•
24.6K views
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
•
3K views
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
•
49.8K views
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee
•
13.3K views
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
•
3K views
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
•
5.7K views
NDC 11 자이언트 서버의 비밀
승명 양
•
4.2K views
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin
•
18.5K views
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU
•
3.4K views
Next-generation MMORPG service architecture
Jongwon Kim
•
7K views
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
•
43.6K views
Python 게임서버 안녕하십니까 : RPC framework 편
준철 박
•
7.3K views
MMOG Server-Side 충돌 및 이동처리 설계와 구현
YEONG-CHEON YOU
•
1.1K views
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
•
5.9K views
쿠키런 1년, 서버개발 분투기
Brian Hong
•
109.4K views
중앙 서버 없는 게임 로직
Hoyoung Choi
•
8.1K views
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
Seungmo Koo
•
33K views
Iocp advanced
Nam Hyeonuk
•
3.7K views
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
•
2.4K views
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
상현 조
•
1K views
Viewers also liked
(20)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
Ubuntu Korea Community
•
7K views
Spark 소개 2부
Jinho Yoo
•
6.6K views
Spark 소개 1부
Jinho Yoo
•
8K views
Apache ZooKeeper 로 분산 서버 만들기
iFunFactory Inc.
•
7.9K views
하둡2 YARN 짧게 보기
beom kyun choi
•
19.5K views
NoSQL Guide & Sample
Sangon Lee
•
2K views
07_스케일폼 소개
noerror
•
1.3K views
232 deview2013 oss를활용한분산아키텍처구현
NAVER D2
•
7.6K views
KAIST 전산학과 iDBLab 20140318 신입생 소개자료
Taehun Kim, Ph.D
•
2.8K views
S04 hybrid app_and_gae_management_v1.0
Sun-Jin Jang
•
2.2K views
Google을 지탱하는 기술3
sid choi
•
1.2K views
GPU를 위한 병렬 음원 방향 추정 알고리즘
Taewoo Lee
•
25.2K views
IRIS
Sunghoon Bae
•
675 views
20150125 AWS BlackBelt - Amazon RDS (Korean)
Amazon Web Services Korea
•
3.3K views
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
KTH, 케이티하이텔
•
4.7K views
장애 관리 방안
Junho Lee
•
10.7K views
Servlet3
Sukjin Yun
•
1.2K views
HeadFisrt Servlet&JSP Chapter 2
J B
•
421 views
Hellotutorial
hellotutorial
•
1.3K views
Tajo_Meetup_20141120
Hyoungjun Kim
•
2.9K views
Advertisement
Similar to Ndc14 분산 서버 구축의 ABC
(20)
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe95
•
3.4K views
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
흥배 최
•
8.3K views
FIFA 온라인 3의 MongoDB 사용기
Jongwon Kim
•
16.9K views
KGC 2014: 분산 게임 서버 구조론
Hyunjik Bae
•
5.2K views
Ndc2013 정리(upload버전)
Minsu Park
•
4.3K views
Direct x 11 입문
Jin Woo Lee
•
5.3K views
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Jinuk Kim
•
5.1K views
스마트폰 온라인 게임에서 고려해야 할 것들
Hyunjik Bae
•
11K views
2. microsoft azure 클라우드 및 쉐어포인트 포탈 소개
Steve Kim
•
1.5K views
산동네 게임 DBA 이야기
병기 홍
•
357 views
Windows system - memory개념잡기
ChangKyu Song
•
12.1K views
모바일 Rpg 게임서버 리팩토링
기환 천
•
1.2K views
What is Game Server ?
흥배 최
•
653 views
Webservice cache strategy
DaeMyung Kang
•
36.6K views
Scalable webservice
DaeMyung Kang
•
2.1K views
Elastic webservice
DaeMyung Kang
•
8.8K views
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
YoungSu Son
•
2.1K views
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
Esun Kim
•
21K views
Internet Scale Service Arichitecture
DaeMyung Kang
•
3.2K views
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
Brian Hong
•
46.1K views
Recently uploaded
(20)
C++20 Coroutine
진화 손
•
24 views
C++20 Comparing unordered containers
진화 손
•
8 views
오락실플랫폼 사업계획서
DanielShin70
•
4 views
[slideshare]k8s.pptx
ssuserb8551e
•
8 views
#定做天普大学毕业证成绩单
ucuzud
•
4 views
C++ 20 Stronger Unicode requirements
진화 손
•
3 views
성장하는 엔지니어가 되는 법- 주니어편.pptx
Kyuhyun Byun
•
69 views
업무관리 서비스 소개
은진 양
•
23 views
인터넷 오락실게임 사업계획서_20230320v2.doc
Daniel Shin
•
7 views
Mapping 절차와 방법.pptx
Seong-Bok Lee
•
4 views
스타트업처럼 토이프로젝트하기
Sunyoung Shin
•
669 views
(KRUG Session) 쿠버네티스 모니터링.pdf
Hyunjin Lee
•
90 views
(독서광) 인공지능 소프트웨어 품질 보증을 위한 테스트 기법
Jay Park
•
947 views
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
Tae-Seong Park
•
147 views
비아그라 후기 <카톡ek693 > 비아그라 자주먹으면 < mmk69.kro.kr > 비아그라 성분 비아그라100mg효과 비아그라여자효능 비...
GusKirk
•
8 views
권총 사격하러 우분투 써밋 참가한 썰.txt
Ubuntu Korea Community
•
6 views
As-Is 분석 절차와 방법.pptx
Seong-Bok Lee
•
24 views
스크럼 101
Daniel Lim
•
13 views
마이너리티 아레나 기본 전투 시스템 기획서
Nawe1
•
183 views
전통적인 개발과 테스트 주도 개발, 그리고 애자일
Tap ToRestart
•
100 views
Advertisement
Ndc14 분산 서버 구축의 ABC
분산 서버 구축의
ABC – 대규모 분산 시스템을 구축하기 위한 실용적 예와 그 원칙들 NEXON KOREA 이호규
Flying sole를 준비중인 최소
1년 이상의 서버프로그래머
Dungeon Striker
Smack Down VS Low (THQ) Riding Star 그 외 퀴즈게임, 보드게임, 출시 못한 MMO들(…OTL..) 2003년도부터 시작 대략 10년 넘은 개발자 안녕하세요?
Outline
1. 분산 서버는
왜 필요한가? 2. 어떻게 분산할 것인가? 3. 견고한 분산 서버 시스템이란? 4. 기타 1) 분산 서버 배포에 관하여… 2) 분산 서버와 개발관련… 목차
1.Why? 분산 서버는 왜
필요한가?
Dungeon Server 하나만 있으면
안되나요?
Answer??
Why? 필요하게 되었을까요?
Yes!! 게임이 바뀌었습니다.
More!! 유저들 세상과의 교류 심지어 하나의
공통 세상
단일서버
Yes!!
OK, Then? 무엇을 분산
해야 할까요?
분산이란? Machine의 하드웨어 부하를
분산
Machine의 부하 Network Traffic CPU Memory
Good 기능의 분산을 통한
서비스 안정성 ex. 채팅서버 shutdown, but Game play는 가능함
Bad 정보의 분산으로 디버깅의
어려움 e 에러처리 복잡 e 동시성 버그 파악의 어려움
1부 끝!
2.How? 어떻게 분산할 것인가?
분산서버의 기본 기능 or
로직이 독립적으로 작동 독립적 = 서로에게 영향을 주지 않음
Scale Out A+B =
C가 아니라 A A A
Origin…
Step 1
Step 2
Step 3
Step 4
Front / Back
주의할 점 통합 독립적
로직 vs 단순 기능 로직
기능로직 분리 ㅁ 예외처리의 복잡함 ㅁ Transaction처리의
복잡함 ㅁ 로그 분석 복잡함 e
통합로직 ㅁ 동시성 제어 용이 ㅁ 버그
재현 및 수정에 용이 ㅁ 개발 유지보수 용이 e
결국 Role로 분산
Scale Up 성능과 비용의
타협
Step 3
Manager? 어떻게 scale out하죠?
비용을 생각해 봅시다.
애매… 그닥 아주 빈번한
처리가 아님 e 정보 분산 동기화 비용 너무 큼 e 성능보단 안정성
이런 경우 Scale Up이
좋습니다. ( 장비빨!!)
Database? 음..이것은 어떻게 scale
out?
Why?필요하게 되었을까요? 대규모 Social
Game을 생각해봅시다
만, 십만 아닌 수백만명!
게임서버는 Scale out But
DB? 그래서…
Sharding! Database의 Scale Out
Shard는 파편이라는 뜻입니다.
Social Game
Sharding방법 Mapping table Dynamic share
Mapping shard 정보를 테이블에
저장 Cache를 이용해 성능을 최적화
Watch! Mapping Table size (
20byte*1 million = 20M ) e Global DB의 부하 (Scale Up) e
Dynamic! 기준 값을 key로
하여 Data 분산 개발 구현이 쉬움
Watch! Static Sharding으로 인한 Re-Sharding
문제 e
Sharding, Good!, But?database transaction?
DB SQL에서가 아닌 Code 에서
처리해야 합니다.
Social Game
Break!
이엉차!
Next? 더 무엇을 해야
하나요?
병목! CPU? Memory? I/O? Enterprise
CPU Pipe Line이 아닙니다 a 병목
처리를 주의
Memory 64bit machine (
Win..2008 R2 En..) 최대물리 메모리 2TB a 각 분산서버 메모리 사용
I/O 제일 느린 자원 DB
I/O, Network I/O
DB I/O Memory Update
First Data Validation From DB
Net I/O 네트워크 라인
분리 ㄷ 채팅 때문에 게임이 느려져서는 안됩니다.
Broadcast 지불할 수 밖에
없는 비용 Grouping을 통한 최적화 네트워크 라인 분리 완벽한 최적화 < 90% + 장비
Next?
Test! 어떤 것을 테스트
해야 할까요? Enterprise
Machine 지표 CPU, Memory,
Network bound In/Out
Logic 지표 e Packet Queue
길이 -> Packet Handler e Logic Frame 처리 속도
Network 지표 Network Latency Send
Queue data 크기
병목! 전체적으로 게임이 느려짐? Scale
out을 해도 개선이 안됨?
성능! 단일서버의 성능 (
동접등 )
How? 장비 Spec 중요! Broadcast
+ 중요 Logic ㄷ ex) 대량사냥 + 대량로그인 / 로그아웃
서버성능! 비동기 I/O Polling vs
Event 계산, 값 Cache
Multi! Process or Thread
Process I/O Multi thread e Single
Logic Thread e 관리, 개발의 편리함
Thread 멀티코어를 활용한 처리량
증대 e Singleton 제약 e Concurrent 버그 발생 위험
2부 끝!
3.What? 견고한 분산 서버
시스템이란?
What? 견고한 분산 시스템이란
무엇일까요?
Solid Fault tolerance e User trace e Server
Dashboard
Fault! Exception Handling Failover
Exceptione Always Available e Graceful Exception
Handling e Error Trace
SEH, TryCatch 예외처리를 통한
서비스 지속 Call Stack, dump를 통한 에러 추적
Graceful! 단순 에러 처리
보단 친절 제공 ex. 에러 메시지 표시 + 10초 후 로비
Error Trace Call Stack
+ Debug Log ㄷ Exception 발생시 기록한 일정수의 휘발성 로그를 저장 (BlackBox)
Failovere Instant Load e Local DB,
Memory DB e Replication
Instant! 필요할 때 정보를
복구 ㄷ 중요하지 않는 정보를 다를 때 유용 ㄷ ex. 메일서버
From DB! 시작될 때
필요정보 모두 Load ㄷ 복구 안정성 좋음 ㄷ 서비스 시작 Delay, 정보기록 부하 ㄷ ex. 매니저서버
Replication! Master / Slave
(Write 동기화) ㄷ 안정적인 복구 모델 ㄷ 다수의 Slave를 통한 Read 부하분산 ㄷ ex. DB서버, 매니저서버
Failover
Dash Board! 특정 유저의
추적 ㄷ 현재 분산서버 모니터 ㄷ 지표 수집
Log 파일 로그 <
DB 로그 e 검색이 용이 e 일일 로그 ( DB 일별 테이블)
Monitor Memory DB( redis
)를 이용하자 e 성능지표( latency ) e Warning ( exception, critical value)
Indicator 중요 지표( cs
)는 서버에서 E 게임 분석 지표는 client base log를 고려 e
Client Base 필요한 정보을
Client가 가지고 있음 ㄷ 서버 로깅 부하와 분리 가능 ( Rabbit MQ ) ㄷ 로그 작업의 편리( client 패치, 시점 ) ㄷ Ex. 특정 레벨업 때의 장비 정보, 던전 입장시 파티원의 직업
Client Logging
Next?
Redis?! pub /sub을 통한
다양한 Admin ㄷ 공지사항, 특정 유저 알림 ㄷ 실시간 event ( QA Live test ) ㄷ 상점 on/off등 feature 관리 기능(제재기능)
Admin
3부 끝!
Extra…
Deploy! United Server One Binary
Server
United! 각 서버를 객체로.. ㄱ 정말
쉬운 배포 ㄱ 정말 쉬운 디버깅
One! 서버간 버전 불일치
X ㄱ 쉬운 배포 ㄱ 약간 복잡한 종합 설정
Schedule! Say No! 6:4 development Test
Driven Development
Thank you!
Advertisement