SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
모바일 게임서비스를 위한
사설 클라우드 구축/운영 분투기
김진욱 (jinuk.kim@ifunfactory.com)
iFunFactory Inc.
Who Am I
소프트웨어 엔지니어
2013. 4 ~ : iFunFactory Inc.
2012. 4 ~ 2013. 4: NEXON Korea
2007. 2 ~ 2012. 3: NCsoft
C++ 기반의 게임 서버 / Python 기반의 백엔드 서비스 작성
Building Private Cloud for Mobile Games
© Arun Kulshreshtha
With Commodity

Hardware
일반적인 x86 서버
흔히 쓰는 네트워크 스위치
여러 가닥의 랜 선
적당한 파워소스
With Open Source Softwares
Linux KVM: linux 커널의 가상화 솔루션
OpenStack: 널리 쓰이는 클라우드 컨트롤러 프로젝트
Puppet: 패키지 제어 / 설정 제어
HAProxy: 로드밸런서
그리고 NGINX, uWSGI, dnsmasq, dpkg, Fabric, …
Currently Serves …
2013년 9월부터 상용 서비스
신규 게임 수 개 런처
일부 기존 서비스 중인 게임 이전
Lots of Troubles
© iStock.
물리 인프라스트럭쳐
(서버, 네트워크 스위치, …)
OS (서버, 스위치) / 가상화 SW
OS (가상 머신)
Applications
(Web-server, PHP, JVM, …)
퍼블릭 클라우드
혹은 직접 서비스
할 때 고민할 문제
직접 서비스 혹은
퍼블리싱 문제
Problem Domain
Infrastructure
물리적인 문제,
설정 관리,
패치 관리,
설치 자동화,
…
© Fyodor Borisov
물리적인 (?) 문제
랜 선 문제: 불량 랜선으로 더 낮은 속도로 동작하는 경우
센서 문제: 센서 오작동; 센서 리셋하려면 머신 재시작해야…
파워 문제: 듀얼 파워 중 하나가 나가는 경우 발생
디스크 문제: IPMI 에서 디스크 오류를 계속해서 리포팅
IPMI 자체가 응답 안하는 경우 (…)
설치 자동화 하기
유사한 물리 서버들이 많다 => 설치 자동화가 쉽다
자동 설치 서비스 용 SW 스택:
저수준: PXE (네트워크 부팅 with DHCP, TFTP)
OS 설치 및 준비: Debian-Installer
서버 소프트웨어 스택 설정: Puppet, bash-scripts (…)
… 그리고 위를 써서 많은 걸 수정해야 함
설치 자동화: DHCP 문제
PXE 는 DHCP의 (제한된) 변형이 필요
(특정) 네트워크 스위치는 다른 스위치와 연결하면 해당 포트에 대해 DHCP 요청
DHCP 프로토콜은 특정 주소를 “반납”하라고 명령하기 힘들다
PXE + Debian-Installer: IP를 두 번 요청/할당받는다 (DHCP)
PXE: 부팅하면서 첫번째 IP 주소 요청
Debian-Installer: 설치할 때 IP 주소 요청; 이 때 스위치가 DHCP NACK을 보내
서 설치 실패
설치 자동화: Debian-Installer 문제
Debian 패키지 시스템: .deb 과 .udeb
.udeb: OS를 설치할 때 사용하기 위해서 .deb 에서 몇 가지 부분과 제약
을 제거한 상대적으로 크기가 작은 패키지
패키지 미러링을 한다면 반드시 .udeb 파일을 포함해서 미러링해야
또한, 드라이버 지원이 맞도록 적당한 커널 버전을 지정해야
설치 자동화 / 설정 관리: Puppet
모든 제어는 puppet 설정으로 제어; 하지만,
인증서 signing 문제; 모든 물리 머신의 인증서를 확인?
노드 타입의 문제: 모든 물리 머신은 같은게 설치되는가?
패키지 버전, 의존성, …: 잘못된 의존성을 만들면 전혀 상관없는 라이브러리 업
그레이드 후에 많은 서비스가 재시작 된다
커널 모듈 로딩 순서 문제: Puppet 실행 시점에 모든 커널 모듈 로드되지 않음
패키지 저장소 문제 (1)
설치 속도와 내부에서 수정한 패키지 때문에 로컬 저장소 운영
용량 문제:
Debian/Ubuntu 패키지 저장소: ≅700 GiB
3rd Party 패키지 저장소 (PPA): ≅??? GiB (10~100 GiB 수준)
PyPI 미러: ≅30 GiB
한 번도 쓰지 않는 패키지가 대부분
보안 문제: PyPI는 http 기반 (과거) + signing 없음
패키지 저장소 문제 (2)
내부 저장소 서버에 apt-cacher-ng 이용해서 패키지 캐시 (캐싱 프록시)
VM은 자기 밑에 있는 compute-node 에서만 패키지를 얻어옴
PyPI 미러링 추가 및 PyPI 자체가 CDN을 쓰게 바뀜 (2013년)
PyPI 접근 방식이 SSL 기반 (https) 로 변경
근데 이제 Centos 용 yum 저장소 (.rpm)도 추가하고 있다…
Resource
Management
물리 머신 자원 할당,
Linux 네트워크 패러미터?,
Disk Elevator,

OOM Killer,
Scale Out, …
© Neo139
자원 할당 제한
Linux의 ulimit 과 sysctl 의 여러 패러미터에서 자원 사용량을 제한
네트워크 서비스에서 쓰기에 기본 값이 낮거나 작다
특히 ulimit의 nofile 과 sysctl 설정을 소켓 수로 생각해서 늘려줘야 한다
연결이 단시간에 몰리기 쉬우니 somaxconn, netdev_max_backlog
값도 커야 한다 (메모리 총량 증가와 약간의 성능 저하만 있다)
Linux Network Parameters
Compute node는 개별 VM에 넘겨줘야할 IP 패킷들을 linux conntrack 기능
을 통해 관리한다 (=kernel netfilter)
한 물리 머신에 띄울 VM 수 x VM 별 최대 IP 세션 수 만큼 이 값이 커야 한다
TCP 관련 패러미터를 수정해서 이미 끊긴 연결을 최대한 빨리 table에서 제거
ip_conntrack_tcp_timeout_* 패러미터 수정
VM 에서 외부로 active하게 가는 연결이 많으면 ephemeral port의 범위도 늘
려야 한다 (net.ipv4.ip_local_port_range)
OOM Killer
Linux의 메모리 할당은 꽤나 낙관적이다 => 믿지 말 것!
Live migration 하는 VM 의 메모리 연산이 매우 많은 경우, 물리 머신의
메모리 사용량 급증 => Out-Of-Memory Killer 동작 개시
꼭 살아야하는 프로세스, 즉 VM 들에 대해서 OOM Killer의 victim이 되
지 않게 proc 설정을 고쳐야
Disk Elevator
개별 회사에서는 여러 종류의 I/O 시스템을 사용한다
SSD RAID vs. SAS RAID vs. SATA RAID, …
하지만 정작 VM 수준에서는 이 패러미터 선택이 거의 차이가 없다
물리 머신 수준에서도 아주 약간의 차이만 난다 => 그래도 차이는 나니까
DISK array 타입에 맞는 설정을 고른다
Scale Out: Status Quo
많은 수의 게임 서버가 웹 기술 기반
웹 서버 — 응용 프로그램 서버 — 데이터베이스 구성
응용 프로그램:

PHP (fastcgi), Python WSGI, JVM 기반의 여러 언어/프레임웍,
1 대의 게임 서버가 게임 요청을 다 처리 못하면 ?
Game Server
Game Server
Game Server
Load Balancer
Game Server
Game Server
Game Server
Game Server
Game Server
Game Server
Data Store Data Store
Game Server
Data Store
147.46.113.114
147.46.113.114
Scale Out: With Load Balancer
Scale Out: Deploying HAProxy
HAProxy: 소프트웨어 로드 밸런서
실제 사용할 때 1 vCPU + 1G 메모리로 약 10k~100k HTTP request/sec 처리
단, 앞에서 언급한 ulimit, conntrack, … 등의 설정을 다 해둬야
HAProxy 의 stats socket 정보 확인 통해서 적절히 수정
설정 변경을 소프트-재시작으로 적용하면서 운용
HAProxy 처리 용량을 초과하면?
Game Server
Game Server
Game Server
Load Balancer
Game Server
Game Server
Game Server
Game Server
Game Server
Game Server
Data Store Data Store
147.46.113.114
Game Server
Game Server
Game Server
Load Balancer
Game Server
Game Server
Game Server
Game Server
Game Server
Game Server
Data Store Data Store
147.46.113.114
Load Balancer
147.46.113.115
Scale Out: Multiple HAProxies
Scale Out: DNS-RR + HAProxy
하나의 HAProxy로 처리 못하는 경우엔?
여러 대의 HAProxy 를 구성; {m 대의 LB} × {n 대의 게임 서버}
클라이언트: 여러 대의 Haproxy 를 어떻게 선택?
DNS round-robin 으로 적당히 분배
DNS RR: 추가된 DNS 정보가 클라이언트한테 퍼질 때까지는 시간이 걸림
추가한 로드밸런서 IP를 어떻게 하면 빨리 전달할까?
Game Server
Game Server
Game Server
Load Balancer
Game Server
Game Server
Game Server
Game Server
Game Server
Game Server
Data Store Data Store
147.46.113.114, 147.46.113.115
Game Server
Game Server
Game Server
Load Balancer
Game Server
Game Server
Game Server
Game Server
Game Server
Game Server
Data Store Data Store
147.46.113.114
Load Balancer
147.46.113.115
Scale Out: Multiple Floating IPs
Scale Out: Multiple Floating IPs
간단한 방법: DNS 주소의 expiration을 줄인다
DNS query 계층의 캐싱 / 클라이언트 캐싱 / … => 잘 안됨
그래서, 하나의 로드 밸런서가 미리 여러 개의 IP를 할당 받는다
DNS 레코드는 처음부터 여러 개의 IP를 RR
부하가 커져서 한 대가 다 감당 못하면?
로드 밸런서를 추가하고 여러 개의 IP 중 일부를 옮긴다
Live with FOSS
Free/open Source SW 버그 우회하기
Major 버전업
버그 패치
Hot-fix 대응하기
© OpenSource.org
OpenStack Bugs
오래된 베이스 이미지를 새로 설정한 hypervisor에서는 못찾는 버그
물리 머신 DNS 주소가 숫자로 시작하면 VM live migration 실패
물리 머신을 삭제하는 인터페이스 없음; 삭제 하면 웹 인터페이스 사망
네트워크 가상화 프로젝트 (Neutron; a.k.a quantum) 는 언제 완성?
CPU topology 를 무시 => 4 core w/ HT -> 8 socket 1 core 1 threads
…
OpenStack Missing Features
Private DNS 구현 (지금은…)
Compute host 를 구분할 DNS 서비스가 없다 (지금도…)
사용 중인 compute node 제거 (지금도…)
대시보드에서 호스트 지정해서 VM 띄우기 (간접적으로만…)
로드밸런서 (생기는 중; 언제?)
VM 모니터링 (파워 상태만…)
HAProxy Limits
단일 스레드/프로세스 기반의 서비스 (실험적인 멀티 프로세스 구현이 있긴함)
하지만 성능은 2-core 일 때 더 좋다 (!)
Stable 버전은 아직 SSL terminator 기능이 없다
Conntrack 제한에 주의: 들어오는 모든 연결 + 모든 응용프로그램서버 연결
Soft restart할 때에도 수십~수백ms의 glitch가 나타날 수 있다
보안 취약점 대응하기
물리 머신 / VM 각 수준에서 모두 대응해야
자주(?) 일어나는 문제들: OpenSSL, libvirt, linux-kernel, apache-mod-*,
kernel 혹은 재시작 문제: VM 패치 및 재시작은 쉽지만 물리 머신은?
개별 VM에서 사용하는 모든 패키지에 대한 정보가 있는게 아니다…
Microsoft
Windows
Windows on linux KVM,
새로운 패키징,
새로운 모니터링,
…
Windows: OpenStack + KVM 문제
Windows 이미지가 크다: Linux 0.2 GiB vs. Windows 17 GiB

=> migration, resize, … VM 관련 연산이 느려진다
(복수의) arping 이 왔을 때 반응이 linux와 다르다
OpenStack + KVM이 CPU topology (소켓/코어/스레드 수) 를 제대로 전달하
지 않는다
초기화 문제: cloud-init 과 유사한 도구들이 지원하는 Windows 버전이 높다
Windows: A Whole New World
기존의 패키징 시스템 사용 불가: PyPI 만 이용 가능
=> Nuget 용으로 별도 패키지 제작해야
모니터링을 위한 기본 유틸리티들이 linux와 다름
LDAP 없이 쉽게 PKI 기반 로그인을 유지하기 어렵다
라이센스 관리?!?!?!
Monitoring
문제 정의하기,
외부 서비스 장애,
문제 통지하기,
…
© Sergiomiguelrp
“문제” 정의하기
장애 상황을 정의하기 어렵다
CPU 사용량이 물리 머신/VM수
준에서 줄어들면 “문제”일까?
정기 점검?
통신사 장애?

혹은 다른 외부 서비스 장애?
블랙박스 테스트
모바일 게임도 클라이언트와 서버
는 통신
패킷 덤프 + 리버싱
HTTP, protobuf 따라하는 클라
이언트 만들기
가짜 클라이언트로 지속 테스트
외부 서비스 장애
카카오톡 게임 서비스 장애?
통신사 망 (일부) 장애
내부 서비스 플랫폼 장애?
Google/Apple 빌링서버 응답지연?
혹은, 특정 paygate 장애
Alarm
계속 들여다볼 순 없어서

알림 기능 구현
emai: 밤에 안 깸
SMS: 적당한 API 제공자 ?
자동 전화 걸기: 가격!!!
Summary
평범한 하드웨어 위에 오픈소스 소프트웨어를 수정해서 사설 클라우드 구축
인프라스트럭처 설치 및 운용을 위해 소프트웨어를 개발 / 튜닝
OS / VM 수준의 패러미터를 수정하고 테스트
Windows는 다른 종류의 문제를 잔뜩…
전체 인프라, VM, 게임 서비스 API를 감시하고 모니터링
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기

Mais conteúdo relacionado

Mais procurados

Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기Hyun-jik Bae
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개Hyunjik Bae
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발
오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발
오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발주항 박
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술NAVER D2
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표
16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표
16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표VentureSquare
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 

Mais procurados (20)

Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발
오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발
오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표
16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표
16회 오픈업/게임서버 프로그래밍과 솔루션 가이드_넷텐션배현직대표
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 

Destaque

[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용Tapjoy X 5Rocks
 
THE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLICTHE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLICkhalbora
 
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인 [ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인 Jungsoo Lee
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기Jong Wook Kim
 
NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템gon
 
진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용Sunwung Jin
 
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람Wooram Hwang
 
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀Young Keun Choe
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계tcaesvk
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기zupet
 
NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증Byunglim Park
 
NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014KwangSam Kim
 
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션Nexon Korea
 
[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기Mingu Heo
 
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현Hoyoung Choi
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인승명 양
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNSYounger Jo
 
[NDC 2014] 모에론
[NDC 2014] 모에론[NDC 2014] 모에론
[NDC 2014] 모에론Yongha Kim
 
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]Imseong Kang
 

Destaque (20)

[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용[NDC 발표] 모바일 게임데이터분석 및 실전 활용
[NDC 발표] 모바일 게임데이터분석 및 실전 활용
 
THE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLICTHE_NPCMASTER_PUBLIC
THE_NPCMASTER_PUBLIC
 
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인 [ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
[ NDC 14 ] 가죽 장화를 먹게 해주세요 - [ 야생의 땅 : 듀랑고 ] 의 자유도 높은 아이템 시스템 디자인
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
 
NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템
 
진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용진선웅 유저수만큼다양한섬을만들자 공개용
진선웅 유저수만큼다양한섬을만들자 공개용
 
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
[NDC14] (공개용)게임 QA에 적용할 수 있는 테스팅 기법과 패턴 활용_황우람
 
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
NDC14 - 엄마와 누나가 게임을 즐기는 법 : [에브리타운 for kakao] 서비스 포스트 모텀
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
 
NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증
 
NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014NDC 2014) 별바람의 기묘한 모험 1991-2014
NDC 2014) 별바람의 기묘한 모험 1991-2014
 
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
[NDC 14] '미쿠미쿠하게 해줄게' - MMD MV 제작 사례와 매력적인 캐릭터 애니메이션
 
[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기
 
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
[NDC 14] 가죽 장화를 먹게 해달라니 - <야생의>의 자유도 높은 아이템 시스템 구현
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
[NDC14] 타임라인 던전 포스트모템 - 스마트폰 시대의 머드게임과 SNS
 
[NDC 2014] 모에론
[NDC 2014] 모에론[NDC 2014] 모에론
[NDC 2014] 모에론
 
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
NDC 2014 [48시간 만에 게임 만들기: '수줍은 메두사' 포스트모템과 게임 개발의 왕도]
 

Semelhante a NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기

[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)CDIT-HCI
 
OpenStack
OpenStackOpenStack
OpenStackULUG
 
오픈소스로 구축하는 클라우드 이야기
오픈소스로 구축하는 클라우드 이야기오픈소스로 구축하는 클라우드 이야기
오픈소스로 구축하는 클라우드 이야기Nalee Jang
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안Ji-Woong Choi
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안NAVER D2
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on PremiseChan Shik Lim
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016
Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016
Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016문기 박
 
[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhev[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhevJi-Woong Choi
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경NAVER Engineering
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?OpenStack Korea Community
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
Cisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdfCisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdfssusercbaa33
 
Journey to Windows Kubernetes
Journey to Windows KubernetesJourney to Windows Kubernetes
Journey to Windows KubernetesJung Hyun Nam
 

Semelhante a NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기 (20)

[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)
 
OpenStack
OpenStackOpenStack
OpenStack
 
오픈소스로 구축하는 클라우드 이야기
오픈소스로 구축하는 클라우드 이야기오픈소스로 구축하는 클라우드 이야기
오픈소스로 구축하는 클라우드 이야기
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on Premise
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016
Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016
Cloud, sdn and nfv 기술동향 atto-research-박문기-20171016
 
[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhev[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhev
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
Cisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdfCisco IOS XRv Router.pdf
Cisco IOS XRv Router.pdf
 
Journey to Windows Kubernetes
Journey to Windows KubernetesJourney to Windows Kubernetes
Journey to Windows Kubernetes
 

NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기

  • 1. 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기 김진욱 (jinuk.kim@ifunfactory.com) iFunFactory Inc.
  • 2. Who Am I 소프트웨어 엔지니어 2013. 4 ~ : iFunFactory Inc. 2012. 4 ~ 2013. 4: NEXON Korea 2007. 2 ~ 2012. 3: NCsoft C++ 기반의 게임 서버 / Python 기반의 백엔드 서비스 작성
  • 3. Building Private Cloud for Mobile Games © Arun Kulshreshtha
  • 4. With Commodity
 Hardware 일반적인 x86 서버 흔히 쓰는 네트워크 스위치 여러 가닥의 랜 선 적당한 파워소스
  • 5. With Open Source Softwares Linux KVM: linux 커널의 가상화 솔루션 OpenStack: 널리 쓰이는 클라우드 컨트롤러 프로젝트 Puppet: 패키지 제어 / 설정 제어 HAProxy: 로드밸런서 그리고 NGINX, uWSGI, dnsmasq, dpkg, Fabric, …
  • 6. Currently Serves … 2013년 9월부터 상용 서비스 신규 게임 수 개 런처 일부 기존 서비스 중인 게임 이전
  • 8. 물리 인프라스트럭쳐 (서버, 네트워크 스위치, …) OS (서버, 스위치) / 가상화 SW OS (가상 머신) Applications (Web-server, PHP, JVM, …) 퍼블릭 클라우드 혹은 직접 서비스 할 때 고민할 문제 직접 서비스 혹은 퍼블리싱 문제 Problem Domain
  • 9. Infrastructure 물리적인 문제, 설정 관리, 패치 관리, 설치 자동화, … © Fyodor Borisov
  • 10. 물리적인 (?) 문제 랜 선 문제: 불량 랜선으로 더 낮은 속도로 동작하는 경우 센서 문제: 센서 오작동; 센서 리셋하려면 머신 재시작해야… 파워 문제: 듀얼 파워 중 하나가 나가는 경우 발생 디스크 문제: IPMI 에서 디스크 오류를 계속해서 리포팅 IPMI 자체가 응답 안하는 경우 (…)
  • 11. 설치 자동화 하기 유사한 물리 서버들이 많다 => 설치 자동화가 쉽다 자동 설치 서비스 용 SW 스택: 저수준: PXE (네트워크 부팅 with DHCP, TFTP) OS 설치 및 준비: Debian-Installer 서버 소프트웨어 스택 설정: Puppet, bash-scripts (…) … 그리고 위를 써서 많은 걸 수정해야 함
  • 12. 설치 자동화: DHCP 문제 PXE 는 DHCP의 (제한된) 변형이 필요 (특정) 네트워크 스위치는 다른 스위치와 연결하면 해당 포트에 대해 DHCP 요청 DHCP 프로토콜은 특정 주소를 “반납”하라고 명령하기 힘들다 PXE + Debian-Installer: IP를 두 번 요청/할당받는다 (DHCP) PXE: 부팅하면서 첫번째 IP 주소 요청 Debian-Installer: 설치할 때 IP 주소 요청; 이 때 스위치가 DHCP NACK을 보내 서 설치 실패
  • 13. 설치 자동화: Debian-Installer 문제 Debian 패키지 시스템: .deb 과 .udeb .udeb: OS를 설치할 때 사용하기 위해서 .deb 에서 몇 가지 부분과 제약 을 제거한 상대적으로 크기가 작은 패키지 패키지 미러링을 한다면 반드시 .udeb 파일을 포함해서 미러링해야 또한, 드라이버 지원이 맞도록 적당한 커널 버전을 지정해야
  • 14. 설치 자동화 / 설정 관리: Puppet 모든 제어는 puppet 설정으로 제어; 하지만, 인증서 signing 문제; 모든 물리 머신의 인증서를 확인? 노드 타입의 문제: 모든 물리 머신은 같은게 설치되는가? 패키지 버전, 의존성, …: 잘못된 의존성을 만들면 전혀 상관없는 라이브러리 업 그레이드 후에 많은 서비스가 재시작 된다 커널 모듈 로딩 순서 문제: Puppet 실행 시점에 모든 커널 모듈 로드되지 않음
  • 15. 패키지 저장소 문제 (1) 설치 속도와 내부에서 수정한 패키지 때문에 로컬 저장소 운영 용량 문제: Debian/Ubuntu 패키지 저장소: ≅700 GiB 3rd Party 패키지 저장소 (PPA): ≅??? GiB (10~100 GiB 수준) PyPI 미러: ≅30 GiB 한 번도 쓰지 않는 패키지가 대부분 보안 문제: PyPI는 http 기반 (과거) + signing 없음
  • 16. 패키지 저장소 문제 (2) 내부 저장소 서버에 apt-cacher-ng 이용해서 패키지 캐시 (캐싱 프록시) VM은 자기 밑에 있는 compute-node 에서만 패키지를 얻어옴 PyPI 미러링 추가 및 PyPI 자체가 CDN을 쓰게 바뀜 (2013년) PyPI 접근 방식이 SSL 기반 (https) 로 변경 근데 이제 Centos 용 yum 저장소 (.rpm)도 추가하고 있다…
  • 17. Resource Management 물리 머신 자원 할당, Linux 네트워크 패러미터?, Disk Elevator,
 OOM Killer, Scale Out, … © Neo139
  • 18. 자원 할당 제한 Linux의 ulimit 과 sysctl 의 여러 패러미터에서 자원 사용량을 제한 네트워크 서비스에서 쓰기에 기본 값이 낮거나 작다 특히 ulimit의 nofile 과 sysctl 설정을 소켓 수로 생각해서 늘려줘야 한다 연결이 단시간에 몰리기 쉬우니 somaxconn, netdev_max_backlog 값도 커야 한다 (메모리 총량 증가와 약간의 성능 저하만 있다)
  • 19. Linux Network Parameters Compute node는 개별 VM에 넘겨줘야할 IP 패킷들을 linux conntrack 기능 을 통해 관리한다 (=kernel netfilter) 한 물리 머신에 띄울 VM 수 x VM 별 최대 IP 세션 수 만큼 이 값이 커야 한다 TCP 관련 패러미터를 수정해서 이미 끊긴 연결을 최대한 빨리 table에서 제거 ip_conntrack_tcp_timeout_* 패러미터 수정 VM 에서 외부로 active하게 가는 연결이 많으면 ephemeral port의 범위도 늘 려야 한다 (net.ipv4.ip_local_port_range)
  • 20. OOM Killer Linux의 메모리 할당은 꽤나 낙관적이다 => 믿지 말 것! Live migration 하는 VM 의 메모리 연산이 매우 많은 경우, 물리 머신의 메모리 사용량 급증 => Out-Of-Memory Killer 동작 개시 꼭 살아야하는 프로세스, 즉 VM 들에 대해서 OOM Killer의 victim이 되 지 않게 proc 설정을 고쳐야
  • 21. Disk Elevator 개별 회사에서는 여러 종류의 I/O 시스템을 사용한다 SSD RAID vs. SAS RAID vs. SATA RAID, … 하지만 정작 VM 수준에서는 이 패러미터 선택이 거의 차이가 없다 물리 머신 수준에서도 아주 약간의 차이만 난다 => 그래도 차이는 나니까 DISK array 타입에 맞는 설정을 고른다
  • 22. Scale Out: Status Quo 많은 수의 게임 서버가 웹 기술 기반 웹 서버 — 응용 프로그램 서버 — 데이터베이스 구성 응용 프로그램:
 PHP (fastcgi), Python WSGI, JVM 기반의 여러 언어/프레임웍, 1 대의 게임 서버가 게임 요청을 다 처리 못하면 ?
  • 23. Game Server Game Server Game Server Load Balancer Game Server Game Server Game Server Game Server Game Server Game Server Data Store Data Store Game Server Data Store 147.46.113.114 147.46.113.114 Scale Out: With Load Balancer
  • 24. Scale Out: Deploying HAProxy HAProxy: 소프트웨어 로드 밸런서 실제 사용할 때 1 vCPU + 1G 메모리로 약 10k~100k HTTP request/sec 처리 단, 앞에서 언급한 ulimit, conntrack, … 등의 설정을 다 해둬야 HAProxy 의 stats socket 정보 확인 통해서 적절히 수정 설정 변경을 소프트-재시작으로 적용하면서 운용 HAProxy 처리 용량을 초과하면?
  • 25. Game Server Game Server Game Server Load Balancer Game Server Game Server Game Server Game Server Game Server Game Server Data Store Data Store 147.46.113.114 Game Server Game Server Game Server Load Balancer Game Server Game Server Game Server Game Server Game Server Game Server Data Store Data Store 147.46.113.114 Load Balancer 147.46.113.115 Scale Out: Multiple HAProxies
  • 26. Scale Out: DNS-RR + HAProxy 하나의 HAProxy로 처리 못하는 경우엔? 여러 대의 HAProxy 를 구성; {m 대의 LB} × {n 대의 게임 서버} 클라이언트: 여러 대의 Haproxy 를 어떻게 선택? DNS round-robin 으로 적당히 분배 DNS RR: 추가된 DNS 정보가 클라이언트한테 퍼질 때까지는 시간이 걸림 추가한 로드밸런서 IP를 어떻게 하면 빨리 전달할까?
  • 27. Game Server Game Server Game Server Load Balancer Game Server Game Server Game Server Game Server Game Server Game Server Data Store Data Store 147.46.113.114, 147.46.113.115 Game Server Game Server Game Server Load Balancer Game Server Game Server Game Server Game Server Game Server Game Server Data Store Data Store 147.46.113.114 Load Balancer 147.46.113.115 Scale Out: Multiple Floating IPs
  • 28. Scale Out: Multiple Floating IPs 간단한 방법: DNS 주소의 expiration을 줄인다 DNS query 계층의 캐싱 / 클라이언트 캐싱 / … => 잘 안됨 그래서, 하나의 로드 밸런서가 미리 여러 개의 IP를 할당 받는다 DNS 레코드는 처음부터 여러 개의 IP를 RR 부하가 커져서 한 대가 다 감당 못하면? 로드 밸런서를 추가하고 여러 개의 IP 중 일부를 옮긴다
  • 29. Live with FOSS Free/open Source SW 버그 우회하기 Major 버전업 버그 패치 Hot-fix 대응하기 © OpenSource.org
  • 30. OpenStack Bugs 오래된 베이스 이미지를 새로 설정한 hypervisor에서는 못찾는 버그 물리 머신 DNS 주소가 숫자로 시작하면 VM live migration 실패 물리 머신을 삭제하는 인터페이스 없음; 삭제 하면 웹 인터페이스 사망 네트워크 가상화 프로젝트 (Neutron; a.k.a quantum) 는 언제 완성? CPU topology 를 무시 => 4 core w/ HT -> 8 socket 1 core 1 threads …
  • 31. OpenStack Missing Features Private DNS 구현 (지금은…) Compute host 를 구분할 DNS 서비스가 없다 (지금도…) 사용 중인 compute node 제거 (지금도…) 대시보드에서 호스트 지정해서 VM 띄우기 (간접적으로만…) 로드밸런서 (생기는 중; 언제?) VM 모니터링 (파워 상태만…)
  • 32. HAProxy Limits 단일 스레드/프로세스 기반의 서비스 (실험적인 멀티 프로세스 구현이 있긴함) 하지만 성능은 2-core 일 때 더 좋다 (!) Stable 버전은 아직 SSL terminator 기능이 없다 Conntrack 제한에 주의: 들어오는 모든 연결 + 모든 응용프로그램서버 연결 Soft restart할 때에도 수십~수백ms의 glitch가 나타날 수 있다
  • 33. 보안 취약점 대응하기 물리 머신 / VM 각 수준에서 모두 대응해야 자주(?) 일어나는 문제들: OpenSSL, libvirt, linux-kernel, apache-mod-*, kernel 혹은 재시작 문제: VM 패치 및 재시작은 쉽지만 물리 머신은? 개별 VM에서 사용하는 모든 패키지에 대한 정보가 있는게 아니다…
  • 34. Microsoft Windows Windows on linux KVM, 새로운 패키징, 새로운 모니터링, …
  • 35. Windows: OpenStack + KVM 문제 Windows 이미지가 크다: Linux 0.2 GiB vs. Windows 17 GiB
 => migration, resize, … VM 관련 연산이 느려진다 (복수의) arping 이 왔을 때 반응이 linux와 다르다 OpenStack + KVM이 CPU topology (소켓/코어/스레드 수) 를 제대로 전달하 지 않는다 초기화 문제: cloud-init 과 유사한 도구들이 지원하는 Windows 버전이 높다
  • 36. Windows: A Whole New World 기존의 패키징 시스템 사용 불가: PyPI 만 이용 가능 => Nuget 용으로 별도 패키지 제작해야 모니터링을 위한 기본 유틸리티들이 linux와 다름 LDAP 없이 쉽게 PKI 기반 로그인을 유지하기 어렵다 라이센스 관리?!?!?!
  • 37. Monitoring 문제 정의하기, 외부 서비스 장애, 문제 통지하기, … © Sergiomiguelrp
  • 38. “문제” 정의하기 장애 상황을 정의하기 어렵다 CPU 사용량이 물리 머신/VM수 준에서 줄어들면 “문제”일까? 정기 점검? 통신사 장애?
 혹은 다른 외부 서비스 장애?
  • 39. 블랙박스 테스트 모바일 게임도 클라이언트와 서버 는 통신 패킷 덤프 + 리버싱 HTTP, protobuf 따라하는 클라 이언트 만들기 가짜 클라이언트로 지속 테스트
  • 40. 외부 서비스 장애 카카오톡 게임 서비스 장애? 통신사 망 (일부) 장애 내부 서비스 플랫폼 장애? Google/Apple 빌링서버 응답지연? 혹은, 특정 paygate 장애
  • 41. Alarm 계속 들여다볼 순 없어서
 알림 기능 구현 emai: 밤에 안 깸 SMS: 적당한 API 제공자 ? 자동 전화 걸기: 가격!!!
  • 42. Summary 평범한 하드웨어 위에 오픈소스 소프트웨어를 수정해서 사설 클라우드 구축 인프라스트럭처 설치 및 운용을 위해 소프트웨어를 개발 / 튜닝 OS / VM 수준의 패러미터를 수정하고 테스트 Windows는 다른 종류의 문제를 잔뜩… 전체 인프라, VM, 게임 서비스 API를 감시하고 모니터링