SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
글로벌 동시 퀵 서버패치 이렇게
구축 했다
Nexon America
김태현
발표자 소개
머신비전
보안어플
네이버폰등
싸이동영상
게임개발
DevOps
SecureWiz
발표 순서
I. 글로벌 서버 업데이트
II. 시스템의 탄생
III. 배운점과 미래
I. 글로벌 서버 업데이트
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
서버란 무엇인가?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
본질은 실행되는
프로그램
서버 패치란 무엇인가?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
본질은 파일을
교체하는 것
서버 점검
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
서버 업데이트
본질은 결국 파일
복사
인터넷 강국 한국
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
한국에서는 어디로 보내든 파일 이동이 빠르다.
글로벌 동시 퀵
How?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
서버가 글로벌로 흩어져있다면?
흩어진 서버를 동시에,
그러면서, 빨리 업데이트를 하려면?
여섯가지 문제
1. 대용량 파일 다운로드, 복사
2. 글로벌 데이터 복제
3. 버전관리와 롤백
4. 글로벌분산된 시스템의 상태정보
5. Fault Tolerance 보장
6. DevOps팀의 특성
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
글로벌,동시,퀵
업데이트를 구현하기
위해 우리가 직면했던
문제 1. 대용량 파일 다운로드, 복사
a. 긴 복사 시간
b. 큰 용량
c. 스케일 부담
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
크다!
생각한 해결책
• 버전마자 중복 파일이 많더라.
• 중복을 줄이면 전송량을 줄일 수 있다.
• 중복이 안되는 파일도 데이터 일부는 중복되지 않을까?
• 중복은 없애고 서로 다른 데이터만 옮길 순 없을까?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Algorithms
• Rabin Karp algorithm
• Adler-32 Rolling Hash algorithm
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
데이터 중복을 찾기
위해 채택한
알고리즘
Rabin Karp Algorithm
a c d i c o n z d h
a c d i
a c i c
a i c o
i c o n
Hash(
Hash(
Hash(
Hash(
) = 111
) = 222
) = 333
) = 999
Hash( ) = 999“ i c o n “
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
해쉬값이
같다. 고로
같은
패턴이다.
Rolling hash Algorithm
h[i+1..i+m] = h[i..i+m-1] – h[i] + h[i+m]
Rabin Fingerprint
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
해쉬함수가 느리면 곤란하다.
Rolling Hash 는 이전 단계에서 구했던 해쉬값에서 아주
적은 연산만으로 현재 단계의 해쉬값을 구할 수 있다.
빠르다.
Alder-32 Rolling Checksum Algorithm
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
zlib, rsync 에 사용된 Rolling Checksum.
속도가 빠르고 메세지 사이즈가 큰 곳에 적합하다.
Rabin Karp & Adler-32 를 바이너리
블럭 탐색에 이용
111 222 333 444
111 333
Old File
New File
서로 다른 부분을 찾으려면 같은 곳을 제외하면
되니까.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
큰 파일 테스트 결과
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
테스트한 1.6GB 파일에서
버전간 30M 만 차이남.
약 98%가 동일 데이터!
서비스중인
실제 게임에서
사용되는
연속적인 두 버전의 파일이 얼마나
차이나는지 보았더니…
패치 생성과 업데이트 시연
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
테스트 결과 – 압도적 성능 우위
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
가장 뛰어난 경쟁자 rdiff 에 비해 속도 약 2배 우위
Concurrency with Golang
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Golang의 장점인 Concurrency를 이용하여
구현했더니…
4채널
concurrency
적용시 약 2배
추가 성능 향상
Lab 테스트 결과
총 3.6GiB 파일들의 diff 추출에 약 43초 소요
추출된 diff로 3.6GiB 파일들을 업데이트 하는데
약 8초 소요 (core i7 8GB 머신)
실제 서비스중인 게임의 전체 파일들을
테스트 해본 결과
실제 적용 결과 #1
모 게임의 실제 패치 시간 적용전
모 게임의 실제 패치 시간 적용후
패치 업데이트 시간 8분50초 에서 31초로 감소.
약 17배 속도 개선!
개발을 완료한 후
실제 게임 업데이트에
적용해보았더니…
문제2 글로벌 데이터복제
추출한 diff 데이터를
글로벌로 흩어진
서버들에게 미리
보내놓고 준비시키자.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
차이점만 추출에 성공!
이제 차이점만
생각한 해결책
• 복제파일시스템
• MooseFS, GlusterFS
• Cross Data-center 지원은 GlusterFS뿐
• 내부를 보니 Rsync 쓰잖아?
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
필요한 기능은 복제. 그렇다면
GlusterFS를 쓰는 대신 가볍게
Rsync 를 바로 쓰자.
복제할 데이터의 양이 작기에
• 주기적으로
• 새로운 파일들이 생기면
• 그 파일들만 받아온다.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Crontab/Rsync/ssh
• Crontab : 쉽다. 관리용이. 고장율 낮다.
• Rsync : 신뢰성. 성능. cpatch 와 교차 검증.
• ssh : 보안성 확보
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
따로 어플리케이션을 만들지 말고 엔지니어들에게
익숙한 툴을 활용한 것은 장애시 신속한 대응에
유리하기 때문
신호를 주고 받을 메세지 큐
• 새로운 빌드 생성완료
• 싱크 준비 완료
• 싱크 완료
• 업데이트 완료
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
언제 복제할지, 언제 어떤 동작을 수행할지 연락을 주고받기 위해 아마존 SQS 사용
이런 이벤트를 주고
받는다.
새 버전의 복제
1. 새 버전이 만들어지면
2. SQS로 통지되고
3. 큐를 바라보는
전세계의 서버가
복제를 수행
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
문제3. 버전관리와 롤백
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
“이미 늦었…”
Git?
- 2GB 파일 제한
- Git-annex : 테스트 중 버그. 신뢰성?
- Mercurial : 한 동안 써봄. 성능 불만족.
- 필요한 요구사항은 오직 롤백 뿐. 복잡한
버전관리 불필요
- 만들자!
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
대용량 파일
버전관리를 위해 Git을
쓸 수 있을까?
게임 버전만의 특징
• 크게 현재버전, 테스트버전으로 나뉨
• 현재버전의 패치버전과 테스트버전의 패치버전
• 테스트버전이 여러개인 경우도 있음
• 순방향으로만 증가
• Merge가 없음
• 전달시 Full버전과 Patch버전으로 나뉨
• 적용을 취소해달라는 버전이 있음
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
게임 버전에 맞춘 버전시스템
현재버전 테스트버전
아무 버전으로 이동 가능해야함
v1 v2 v3 v4 v10 v11 v12 v13 v14 v15
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
버전 정보 schema
product version#1
version#2
version#3
version#10
version#11
branch A
branch B
unique
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Product 하나가
여러 version을
가지며 version은
서로 중복되지
않음.
Branch 는
verison 그룹을
가상으로 묶음.
문제4. 글로벌 분산된 시스템의
상태정보
패치파일 뿐만 아니라 버전정보등도
글로벌로 공유되어야 한다.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
버전 정보 공유
Cross-IDC 리플리케이션 가능한 DB를 쓰자.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Couchbase 사용 이유
• Cross-IDC 리플리케이션 XDCR 지원.
• Persistent DB.
• 속도와 같은 성능은 덜 중요했다.
• 데이터양이 많지 않아 대용량 불필요.
• 설치와 사용이 쉽다.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
문제 5. Fault Tolerance 보장
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
한 region 에 장애가 있어도 다른
region 은 동작 가능하게
글로벌 단일 시스템 구성의 약점
• 인터넷은 높은 신뢰성 보장이 힘든 네트웍
• 국가간, 원거리 연결은 수시로 불안
• 원거리간 문제가 생기면 전체 시스템이 사용불가.I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
글로벌로 monolithic 한 시스템
구축을 피하자.
지역별 독립 노드 구성으로 장애 전파 없음
• 특정 노드의 장애가 다른 노드에 영향을 주지 않는다.
• 인터넷 의존을 낮추고 노드별로 독립 동작 가능
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
서브시스템간 독립성 보장 설계
버전처리
시스템
파일복제
시스템
어플리케
이션 실행
시스템
Lane
#1
Lane
#2
Lane
#3
• 서로 Lane별로 분리
• 한 Lane에 문제가 생겨도 다른 Lane에
영향 없음.
• 한 Lane에 장애시 그 Lane만 고침.
• 장애식별 및 문제해결속도 향상
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Lane 아키텍처
역할별로 서브시스템을
구성한 뒤,
문제6. DevOps팀의 특성
민첩하게 만들 수 있되 미래 확장 여지가 있게
• 개발과 운영의 균형 유지가 쉽지 않다.
• 개발없이 운영의 발전은 어렵다.
• 운영경험없는 개발은 위험하다.
• 다양한 전문/레벨의 엔지니어가 있다.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
데브옵스는 늘 긴급한
장애대응이란 인터럽트에
노출되어 있기 때문
운영은 서비스하는
게임의 수, 종류,
운영조직의 구조,
특성에 따른
특수성이 있음.
Script rather than binary
Why?
-운영에서는 troubleshoot 에 좋은 것이 짱.
-Script 는 문제 현장에서 코드를 바로 읽을 수 있다.
-컴파일 없이 즉시 고칠 수 있다.
-비교적 접근하기 쉽고 까다롭지 않은 언어
-읽기 쉬운, 초급자도 읽기 쉬운, 고치기 쉬운 코드 필요.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Python
이거만한게 없다.
-운영에서는 troubleshoot 에 좋은 것이 짱이라서
-Script 는 문제 현장에서 코드를 바로 읽을 수 있어서
-컴파일 없이 즉시 고칠 수 있어서
-비교적 접근하기 쉽고 까다롭지 않은 언어라서
-읽기 쉬운, 초급자도 읽기 쉬운, 고치기 쉬운 코드 필요해서
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Python 은 App역할
patch Version control
build update sync
Core
Components
Applications
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Layered Architecture
I I. 시스템의 탄생
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Laszlo 탄생
Laszlo는 글로벌로 분산된 환경에서 고속으로 패치 업데이트를
하기 위한 소프트웨어 시스템
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
극중인물
Laszlo 프로젝트
이름
Casablanca 프로젝트 요약
프로젝트기간 : 2015년 2월~12월
개발기간 : 2015년 2월~8월
개발인원 : 1명 + 팀원들의 도움
POC : ~4월
프로토타입 개발 : ~5월
프로덕션 개발 : ~8월
라이브 적용 : ~12월
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Laszlo 현황
• GhostInTheShell, Riders of Icarus, Maple Story,
Mabinogi, Atlantica, Vindictus 여섯개 게임에
적용하여 2015년 부터 사용중
• No major issues so far
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
기술 스택
golang
python
Rundeck
AWS (SQS,SNS)
Rabin karp / Adler-32
Couchbase
Puppet
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
다섯가지 핵심 컴포넌트 소개
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
핵심 컴포넌트 1 - cpatch
• 기존 패치 업데이트 시간을 1/17로 크게 줄였다.
• 글로벌 빠른 데이터 복제를 가능하게 한 공신
• Windows/Linux platform 지원
• Golang 으로 개발됨
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
핵심 컴포넌트 2 - tree
• 버전정보 담당
• Product - Branch - Version 구조
• Golang과 Couchbase로 개발됨
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
핵심 컴포넌트 3 - sync
• cpatch가 만든 패치 데이터의 글로벌
복제 담당.
• python과 rsync로 개발됨
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
핵심 컴포넌트 4 - Rundeck
• 모든 명령을 모아서 수행하는 역할
• 각 노드마다 Rundeck 이 있으며
해당 노드에서 작동하는 모든 명령을
메뉴로 제공.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
핵심 컴포넌트 5 - puppet
• 패치 업데이트에 필요한 서버별 설정이 있음
• 글로벌로 흩어진 수백대의 서버의 설정 필요
• Puppet으로 한 곳에서 모든 설정을
변경,관리,배포 하고 있음.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
게임별 결과 - GhostInTheShell
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
GhostInTheShell Records
• 패치 빌드 1~5분
• 서버 Regions : NYC, SLC, LV, LON, FRA, AUS
• 패치 업데이트 : < 1분
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
GhostInTheShell로 부터 개선한 것
• ****.db 파일이 패치 업데이트 실패
• 알고보니 실행중 계속 변경되는 파일임.
• 하지만 패치시 새로 전달 된다.
• 항상 새로운 파일로 다루도록 /TN 옵션 개발.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
게임별결과 - Atlantica
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Atlantica Records
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
• 패치 빌드 < 1분
• 패치 업데이트 < 1~25초 (과거 수분 소요)
• 과거 여러버전을 순서대로 업데이트하던 작업을
마지막 버전 한번만 업데이트 하는 작업으로
개선됨.
Atlantica로 부터 개선한 점
• Atlantica 의 경우 개발자가 특정 버전을
라이브에는 적용하지 말라고 할 때가 있음.
버전을 지우는 건 지원 안되어 수동으로 힘들.
• 아이디어 : 특정 중간 버전을 지우면 다음 버전을
full 로 만들어버림.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
게임별결과 – Riders of Icarus
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Icarus로 부터 개선한 점
• Icarus 는 incremental 로 바이너리가 옴.
• 하지만 특정 폴더의 경우 전달 당시 없는
파일들은 패치시에도 라이브환경에서
지워져야함. 난감.
• 그래서 특정 폴더에 대해서는 Mirror 를
하는 기능을 만듦.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
I I I. 배운점과 미래
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
전체적으로 배운점
- 오픈소스 잘 활용하자.
- 잘 썼으면 기여도하자.
- 좋은 알고리즘 많다. 공부하자.
- Golang 장점 활용하면 좋다.
- Rundeck이 API 호스팅을 할 수 있더라.
- …
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
근데 개발자가 빌드할 순 없을까?
• 버전을 정하는 사람은 개발자다.
• 어떤 파일이 어떤 버전인지를 정하는
것도 개발자다.
• Steam의 경우 개발자 머신에서
빌드하여 올린다.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
클라이언트 바이너리도 함께
• 어차피 서버와 클라는 하나의 버전으로 간다.
• 따로 관리되어 실수 하는 경우도 생긴다.
• 따로 따로 두번 작업하게 된다.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Pipeline 프로젝트 시작
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
개발자
운영사
& 유저
개발자가 새 버전 빌드를 마친 후 운영사에서
업데이트 하기까지의 일련의 과정을 Laszlo에
기반하여 간결한 웹서비스로 제공한다.
API host 로써의 Rundeck
• Via HTTP/S api 호출 구조가 이미 구현됨.
• UI 를 통해 api 리스트를 보고 관리가 용이.
• 호출 기록과 결과를 볼 수 있고 조회가 용이.
• 파라미터 정보등의 도큐멘팅을 편하게 할 수 있음.
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
Restful
API
API 등록
API 관리
경쟁사 동향
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
블리자드
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
• 이미 자동화된 파이프라인 구축
• 버전만 선택하면 서버/클라 모두 해당 버전으로 변경
Riot games - Voyager
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
검색엔진 기반 실시간 이슈 감지 시스템
넥슨
- 글로벌 리더인가?
- 뭔가 보여주고 있을까?
- 무엇으로 보여줄까? 기술력?
- 무슨 기술? (게임개발 and 게임운영)
- 어떤 수준의 기술? World-class!
I. 글로벌 서버 업데이트
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
II. 시스템의 탄생
Laszlo
Ghost In The Shell
Atlantica
Riders of Icarus
III. 배운점과 미래
배운점
경쟁사 동향
우리의 미래
마무리
사진출처
위치 출처
2p. 머신비전 www.dynamicmachinedesign.com
7p. https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=0ahUKEwiDsoe0rpPMAhVQymMKHQk0C5EQjRwIBw&url=http%3A%2F%2Fww
w.engadget.com%2F2015%2F08%2F20%2Fgoogle-reveals-server-info%2F&bvm=bv.119745492,d.cGc&psig=AFQjCNG3pdB7qhzBlawbIOXFfr1noeWhmA&ust=14
60903117145843
8p. 망지도 http://kt-egov.co.kr/service/infra.do
70p http://engineering.riotgames.com/news/voyager-original-korean
JUST DO IT.
Thank You.

Contenu connexe

Tendances

무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례Taehyun Kim
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지Minjung Ko
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance상현 조
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...Amazon Web Services Korea
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...Amazon Web Services Korea
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기Sunyoung Shin
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들Jubok Kim
 

Tendances (20)

무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
 

En vedette

NDC 2016 - Global Server Update - How to?
NDC 2016 - Global Server Update - How to?NDC 2016 - Global Server Update - How to?
NDC 2016 - Global Server Update - How to?Taehyun Kim
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
글로벌검색엔진마케팅전략
글로벌검색엔진마케팅전략글로벌검색엔진마케팅전략
글로벌검색엔진마케팅전략이 영환
 
해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나
해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나
해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나Evan Ryu
 
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회ChangHyun Won
 
글로벌디지털마케팅교육 교재-공개용-150204
글로벌디지털마케팅교육 교재-공개용-150204글로벌디지털마케팅교육 교재-공개용-150204
글로벌디지털마케팅교육 교재-공개용-150204용현 이
 
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기Daehee Kim
 
콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)
콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)
콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)Hyokon Zhiang
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
Making your API easy to document with Spring REST Docs
Making your API easy to document with Spring REST DocsMaking your API easy to document with Spring REST Docs
Making your API easy to document with Spring REST DocsNAVER / MusicPlatform
 
서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infraHwanseok Park
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계tcaesvk
 
NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발
NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발
NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발Hyunsuk Ahn
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
 
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술Ki Hyunwoo
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt덕규 임
 

En vedette (20)

NDC 2016 - Global Server Update - How to?
NDC 2016 - Global Server Update - How to?NDC 2016 - Global Server Update - How to?
NDC 2016 - Global Server Update - How to?
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
글로벌검색엔진마케팅전략
글로벌검색엔진마케팅전략글로벌검색엔진마케팅전략
글로벌검색엔진마케팅전략
 
해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나
해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나
해외 영업, 해외 마케팅, 국제 업무 취업 희망자이 꼭 알아야 할 글로벌 SNS 마케팅 전략 세미나
 
글로벌 마케팅 커뮤니케이션 1장
글로벌 마케팅 커뮤니케이션 1장글로벌 마케팅 커뮤니케이션 1장
글로벌 마케팅 커뮤니케이션 1장
 
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
 
글로벌디지털마케팅교육 교재-공개용-150204
글로벌디지털마케팅교육 교재-공개용-150204글로벌디지털마케팅교육 교재-공개용-150204
글로벌디지털마케팅교육 교재-공개용-150204
 
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
 
Thinkpay 140310
Thinkpay 140310Thinkpay 140310
Thinkpay 140310
 
콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)
콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)
콘텐트 마케팅 - 글로벌 챔피언을 향하여 (발췌)
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
Making your API easy to document with Spring REST Docs
Making your API easy to document with Spring REST DocsMaking your API easy to document with Spring REST Docs
Making your API easy to document with Spring REST Docs
 
서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계
 
NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발
NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발
NDC 2016 안현석 - 개발자와 디자이너를 이롭게 하는 UI 개발
 
UPnP 발표자료
UPnP 발표자료UPnP 발표자료
UPnP 발표자료
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 

Similaire à NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다

개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기David Kim
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림NAVER D2
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig baseINSIGHT FORENSIC
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewTaewan Kim
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경NAVER Engineering
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처hoondong kim
 
Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE HyungSun(Sean) Kim
 
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.(Joe), Sanghun Kim
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완NAVER D2
 

Similaire à NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다 (20)

개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기개발사는 모르는 퍼블리셔의 뒷 이야기
개발사는 모르는 퍼블리셔의 뒷 이야기
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림[211]대규모 시스템 시각화 현동석김광림
[211]대규모 시스템 시각화 현동석김광림
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE
 
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
 

NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다

  • 1. 글로벌 동시 퀵 서버패치 이렇게 구축 했다 Nexon America 김태현
  • 3. 발표 순서 I. 글로벌 서버 업데이트 II. 시스템의 탄생 III. 배운점과 미래
  • 4. I. 글로벌 서버 업데이트 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 5. 서버란 무엇인가? I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 본질은 실행되는 프로그램
  • 6. 서버 패치란 무엇인가? I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 본질은 파일을 교체하는 것
  • 7. 서버 점검 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 서버 업데이트 본질은 결국 파일 복사
  • 8. 인터넷 강국 한국 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 한국에서는 어디로 보내든 파일 이동이 빠르다.
  • 9. 글로벌 동시 퀵 How? I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 서버가 글로벌로 흩어져있다면? 흩어진 서버를 동시에, 그러면서, 빨리 업데이트를 하려면?
  • 10. 여섯가지 문제 1. 대용량 파일 다운로드, 복사 2. 글로벌 데이터 복제 3. 버전관리와 롤백 4. 글로벌분산된 시스템의 상태정보 5. Fault Tolerance 보장 6. DevOps팀의 특성 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 글로벌,동시,퀵 업데이트를 구현하기 위해 우리가 직면했던
  • 11. 문제 1. 대용량 파일 다운로드, 복사 a. 긴 복사 시간 b. 큰 용량 c. 스케일 부담 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 크다!
  • 12. 생각한 해결책 • 버전마자 중복 파일이 많더라. • 중복을 줄이면 전송량을 줄일 수 있다. • 중복이 안되는 파일도 데이터 일부는 중복되지 않을까? • 중복은 없애고 서로 다른 데이터만 옮길 순 없을까? I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 13. Algorithms • Rabin Karp algorithm • Adler-32 Rolling Hash algorithm I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 데이터 중복을 찾기 위해 채택한 알고리즘
  • 14. Rabin Karp Algorithm a c d i c o n z d h a c d i a c i c a i c o i c o n Hash( Hash( Hash( Hash( ) = 111 ) = 222 ) = 333 ) = 999 Hash( ) = 999“ i c o n “ I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 해쉬값이 같다. 고로 같은 패턴이다.
  • 15. Rolling hash Algorithm h[i+1..i+m] = h[i..i+m-1] – h[i] + h[i+m] Rabin Fingerprint I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 해쉬함수가 느리면 곤란하다. Rolling Hash 는 이전 단계에서 구했던 해쉬값에서 아주 적은 연산만으로 현재 단계의 해쉬값을 구할 수 있다. 빠르다.
  • 16. Alder-32 Rolling Checksum Algorithm I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 zlib, rsync 에 사용된 Rolling Checksum. 속도가 빠르고 메세지 사이즈가 큰 곳에 적합하다.
  • 17. Rabin Karp & Adler-32 를 바이너리 블럭 탐색에 이용 111 222 333 444 111 333 Old File New File 서로 다른 부분을 찾으려면 같은 곳을 제외하면 되니까. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 18. 큰 파일 테스트 결과 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 테스트한 1.6GB 파일에서 버전간 30M 만 차이남. 약 98%가 동일 데이터! 서비스중인 실제 게임에서 사용되는 연속적인 두 버전의 파일이 얼마나 차이나는지 보았더니…
  • 19. 패치 생성과 업데이트 시연 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 20. 테스트 결과 – 압도적 성능 우위 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 가장 뛰어난 경쟁자 rdiff 에 비해 속도 약 2배 우위
  • 21. Concurrency with Golang I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 Golang의 장점인 Concurrency를 이용하여 구현했더니… 4채널 concurrency 적용시 약 2배 추가 성능 향상
  • 22. Lab 테스트 결과 총 3.6GiB 파일들의 diff 추출에 약 43초 소요 추출된 diff로 3.6GiB 파일들을 업데이트 하는데 약 8초 소요 (core i7 8GB 머신) 실제 서비스중인 게임의 전체 파일들을 테스트 해본 결과
  • 23. 실제 적용 결과 #1 모 게임의 실제 패치 시간 적용전 모 게임의 실제 패치 시간 적용후 패치 업데이트 시간 8분50초 에서 31초로 감소. 약 17배 속도 개선! 개발을 완료한 후 실제 게임 업데이트에 적용해보았더니…
  • 24. 문제2 글로벌 데이터복제 추출한 diff 데이터를 글로벌로 흩어진 서버들에게 미리 보내놓고 준비시키자. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 차이점만 추출에 성공! 이제 차이점만
  • 25. 생각한 해결책 • 복제파일시스템 • MooseFS, GlusterFS • Cross Data-center 지원은 GlusterFS뿐 • 내부를 보니 Rsync 쓰잖아? I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 필요한 기능은 복제. 그렇다면 GlusterFS를 쓰는 대신 가볍게 Rsync 를 바로 쓰자.
  • 26. 복제할 데이터의 양이 작기에 • 주기적으로 • 새로운 파일들이 생기면 • 그 파일들만 받아온다. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 27. Crontab/Rsync/ssh • Crontab : 쉽다. 관리용이. 고장율 낮다. • Rsync : 신뢰성. 성능. cpatch 와 교차 검증. • ssh : 보안성 확보 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 따로 어플리케이션을 만들지 말고 엔지니어들에게 익숙한 툴을 활용한 것은 장애시 신속한 대응에 유리하기 때문
  • 28. 신호를 주고 받을 메세지 큐 • 새로운 빌드 생성완료 • 싱크 준비 완료 • 싱크 완료 • 업데이트 완료 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 언제 복제할지, 언제 어떤 동작을 수행할지 연락을 주고받기 위해 아마존 SQS 사용 이런 이벤트를 주고 받는다.
  • 29. 새 버전의 복제 1. 새 버전이 만들어지면 2. SQS로 통지되고 3. 큐를 바라보는 전세계의 서버가 복제를 수행 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 30. 문제3. 버전관리와 롤백 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 “이미 늦었…”
  • 31. Git? - 2GB 파일 제한 - Git-annex : 테스트 중 버그. 신뢰성? - Mercurial : 한 동안 써봄. 성능 불만족. - 필요한 요구사항은 오직 롤백 뿐. 복잡한 버전관리 불필요 - 만들자! I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 대용량 파일 버전관리를 위해 Git을 쓸 수 있을까?
  • 32. 게임 버전만의 특징 • 크게 현재버전, 테스트버전으로 나뉨 • 현재버전의 패치버전과 테스트버전의 패치버전 • 테스트버전이 여러개인 경우도 있음 • 순방향으로만 증가 • Merge가 없음 • 전달시 Full버전과 Patch버전으로 나뉨 • 적용을 취소해달라는 버전이 있음 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 33. 게임 버전에 맞춘 버전시스템 현재버전 테스트버전 아무 버전으로 이동 가능해야함 v1 v2 v3 v4 v10 v11 v12 v13 v14 v15 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 34. 버전 정보 schema product version#1 version#2 version#3 version#10 version#11 branch A branch B unique I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 Product 하나가 여러 version을 가지며 version은 서로 중복되지 않음. Branch 는 verison 그룹을 가상으로 묶음.
  • 35. 문제4. 글로벌 분산된 시스템의 상태정보 패치파일 뿐만 아니라 버전정보등도 글로벌로 공유되어야 한다. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 36. 버전 정보 공유 Cross-IDC 리플리케이션 가능한 DB를 쓰자. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 37. Couchbase 사용 이유 • Cross-IDC 리플리케이션 XDCR 지원. • Persistent DB. • 속도와 같은 성능은 덜 중요했다. • 데이터양이 많지 않아 대용량 불필요. • 설치와 사용이 쉽다. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 38. 문제 5. Fault Tolerance 보장 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 한 region 에 장애가 있어도 다른 region 은 동작 가능하게
  • 39. 글로벌 단일 시스템 구성의 약점 • 인터넷은 높은 신뢰성 보장이 힘든 네트웍 • 국가간, 원거리 연결은 수시로 불안 • 원거리간 문제가 생기면 전체 시스템이 사용불가.I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 글로벌로 monolithic 한 시스템 구축을 피하자.
  • 40. 지역별 독립 노드 구성으로 장애 전파 없음 • 특정 노드의 장애가 다른 노드에 영향을 주지 않는다. • 인터넷 의존을 낮추고 노드별로 독립 동작 가능 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 41. 서브시스템간 독립성 보장 설계 버전처리 시스템 파일복제 시스템 어플리케 이션 실행 시스템 Lane #1 Lane #2 Lane #3 • 서로 Lane별로 분리 • 한 Lane에 문제가 생겨도 다른 Lane에 영향 없음. • 한 Lane에 장애시 그 Lane만 고침. • 장애식별 및 문제해결속도 향상 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 Lane 아키텍처 역할별로 서브시스템을 구성한 뒤,
  • 42. 문제6. DevOps팀의 특성 민첩하게 만들 수 있되 미래 확장 여지가 있게 • 개발과 운영의 균형 유지가 쉽지 않다. • 개발없이 운영의 발전은 어렵다. • 운영경험없는 개발은 위험하다. • 다양한 전문/레벨의 엔지니어가 있다. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 데브옵스는 늘 긴급한 장애대응이란 인터럽트에 노출되어 있기 때문 운영은 서비스하는 게임의 수, 종류, 운영조직의 구조, 특성에 따른 특수성이 있음.
  • 43. Script rather than binary Why? -운영에서는 troubleshoot 에 좋은 것이 짱. -Script 는 문제 현장에서 코드를 바로 읽을 수 있다. -컴파일 없이 즉시 고칠 수 있다. -비교적 접근하기 쉽고 까다롭지 않은 언어 -읽기 쉬운, 초급자도 읽기 쉬운, 고치기 쉬운 코드 필요. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 44. Python 이거만한게 없다. -운영에서는 troubleshoot 에 좋은 것이 짱이라서 -Script 는 문제 현장에서 코드를 바로 읽을 수 있어서 -컴파일 없이 즉시 고칠 수 있어서 -비교적 접근하기 쉽고 까다롭지 않은 언어라서 -읽기 쉬운, 초급자도 읽기 쉬운, 고치기 쉬운 코드 필요해서 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 45. Python 은 App역할 patch Version control build update sync Core Components Applications I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 Layered Architecture
  • 46. I I. 시스템의 탄생 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 47. Laszlo 탄생 Laszlo는 글로벌로 분산된 환경에서 고속으로 패치 업데이트를 하기 위한 소프트웨어 시스템 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 극중인물 Laszlo 프로젝트 이름
  • 48. Casablanca 프로젝트 요약 프로젝트기간 : 2015년 2월~12월 개발기간 : 2015년 2월~8월 개발인원 : 1명 + 팀원들의 도움 POC : ~4월 프로토타입 개발 : ~5월 프로덕션 개발 : ~8월 라이브 적용 : ~12월 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 49. Laszlo 현황 • GhostInTheShell, Riders of Icarus, Maple Story, Mabinogi, Atlantica, Vindictus 여섯개 게임에 적용하여 2015년 부터 사용중 • No major issues so far I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 50. 기술 스택 golang python Rundeck AWS (SQS,SNS) Rabin karp / Adler-32 Couchbase Puppet I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 51. 다섯가지 핵심 컴포넌트 소개 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 52. 핵심 컴포넌트 1 - cpatch • 기존 패치 업데이트 시간을 1/17로 크게 줄였다. • 글로벌 빠른 데이터 복제를 가능하게 한 공신 • Windows/Linux platform 지원 • Golang 으로 개발됨 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 53. 핵심 컴포넌트 2 - tree • 버전정보 담당 • Product - Branch - Version 구조 • Golang과 Couchbase로 개발됨 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 54. 핵심 컴포넌트 3 - sync • cpatch가 만든 패치 데이터의 글로벌 복제 담당. • python과 rsync로 개발됨 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 55. 핵심 컴포넌트 4 - Rundeck • 모든 명령을 모아서 수행하는 역할 • 각 노드마다 Rundeck 이 있으며 해당 노드에서 작동하는 모든 명령을 메뉴로 제공. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 56. 핵심 컴포넌트 5 - puppet • 패치 업데이트에 필요한 서버별 설정이 있음 • 글로벌로 흩어진 수백대의 서버의 설정 필요 • Puppet으로 한 곳에서 모든 설정을 변경,관리,배포 하고 있음. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 57. 게임별 결과 - GhostInTheShell I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 58. GhostInTheShell Records • 패치 빌드 1~5분 • 서버 Regions : NYC, SLC, LV, LON, FRA, AUS • 패치 업데이트 : < 1분 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 59. GhostInTheShell로 부터 개선한 것 • ****.db 파일이 패치 업데이트 실패 • 알고보니 실행중 계속 변경되는 파일임. • 하지만 패치시 새로 전달 된다. • 항상 새로운 파일로 다루도록 /TN 옵션 개발. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 60. 게임별결과 - Atlantica I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 61. Atlantica Records I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 • 패치 빌드 < 1분 • 패치 업데이트 < 1~25초 (과거 수분 소요) • 과거 여러버전을 순서대로 업데이트하던 작업을 마지막 버전 한번만 업데이트 하는 작업으로 개선됨.
  • 62. Atlantica로 부터 개선한 점 • Atlantica 의 경우 개발자가 특정 버전을 라이브에는 적용하지 말라고 할 때가 있음. 버전을 지우는 건 지원 안되어 수동으로 힘들. • 아이디어 : 특정 중간 버전을 지우면 다음 버전을 full 로 만들어버림. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 63. 게임별결과 – Riders of Icarus I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 64. Icarus로 부터 개선한 점 • Icarus 는 incremental 로 바이너리가 옴. • 하지만 특정 폴더의 경우 전달 당시 없는 파일들은 패치시에도 라이브환경에서 지워져야함. 난감. • 그래서 특정 폴더에 대해서는 Mirror 를 하는 기능을 만듦. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 65. I I I. 배운점과 미래 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 66. 전체적으로 배운점 - 오픈소스 잘 활용하자. - 잘 썼으면 기여도하자. - 좋은 알고리즘 많다. 공부하자. - Golang 장점 활용하면 좋다. - Rundeck이 API 호스팅을 할 수 있더라. - … I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 67. 근데 개발자가 빌드할 순 없을까? • 버전을 정하는 사람은 개발자다. • 어떤 파일이 어떤 버전인지를 정하는 것도 개발자다. • Steam의 경우 개발자 머신에서 빌드하여 올린다. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 68. 클라이언트 바이너리도 함께 • 어차피 서버와 클라는 하나의 버전으로 간다. • 따로 관리되어 실수 하는 경우도 생긴다. • 따로 따로 두번 작업하게 된다. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 69. Pipeline 프로젝트 시작 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 개발자 운영사 & 유저 개발자가 새 버전 빌드를 마친 후 운영사에서 업데이트 하기까지의 일련의 과정을 Laszlo에 기반하여 간결한 웹서비스로 제공한다.
  • 70. API host 로써의 Rundeck • Via HTTP/S api 호출 구조가 이미 구현됨. • UI 를 통해 api 리스트를 보고 관리가 용이. • 호출 기록과 결과를 볼 수 있고 조회가 용이. • 파라미터 정보등의 도큐멘팅을 편하게 할 수 있음. I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 Restful API API 등록 API 관리
  • 71. 경쟁사 동향 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 72. 블리자드 I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 • 이미 자동화된 파이프라인 구축 • 버전만 선택하면 서버/클라 모두 해당 버전으로 변경
  • 73. Riot games - Voyager I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래 검색엔진 기반 실시간 이슈 감지 시스템
  • 74. 넥슨 - 글로벌 리더인가? - 뭔가 보여주고 있을까? - 무엇으로 보여줄까? 기술력? - 무슨 기술? (게임개발 and 게임운영) - 어떤 수준의 기술? World-class! I. 글로벌 서버 업데이트 문제 1 문제 2 문제 3 문제 4 문제 5 문제 6 II. 시스템의 탄생 Laszlo Ghost In The Shell Atlantica Riders of Icarus III. 배운점과 미래 배운점 경쟁사 동향 우리의 미래
  • 76. 사진출처 위치 출처 2p. 머신비전 www.dynamicmachinedesign.com 7p. https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=0ahUKEwiDsoe0rpPMAhVQymMKHQk0C5EQjRwIBw&url=http%3A%2F%2Fww w.engadget.com%2F2015%2F08%2F20%2Fgoogle-reveals-server-info%2F&bvm=bv.119745492,d.cGc&psig=AFQjCNG3pdB7qhzBlawbIOXFfr1noeWhmA&ust=14 60903117145843 8p. 망지도 http://kt-egov.co.kr/service/infra.do 70p http://engineering.riotgames.com/news/voyager-original-korean

Notes de l'éditeur

  1. 너드 &amp;gt; 구제 &amp;gt; 중년 개발자
  2. 서버실 &amp;gt; 셧다운이 아니라 데몬을 내린다 &amp;gt; 아틀란 데몬 화면 &amp;gt; 그 다음 파일 복사 화면
  3. 한국은 이렇게 빠르다 &amp;gt; 근데 한국 서버만 패치하는게 아니라
  4. 글로벌에 흩어진 서버를 패치하겠다는 것. 동시에. 빨리. 이걸 하려면 어떤 문제를 해결해야 하는가?
  5. 긴 복사 시간 – 리전간 복사 뿐 아니라 점검 중에 시간걸림. 파일을 갖고 작업할 때 여러모로 긴 작업시간이 소요됨. 하옇든 파일크기가 악의 시작. 스케일 – 리전이 늘거나 변하면, 개발사가 늘면
  6. 속도가 너무 느리다
  7. 롤링 해쉬로 해쉬값을 빠르게 얻을 수 있다.
  8. Zlib 에 사용됨. Rsync에도 사용됨. CRC32 보다 빠르다. 덜 안전하다. 특히 짧은 메세지에 약하다. 하지만 바이너리 비교는 항상 엄청 긴 메세지다. 결론적으로 지금까지 문제 없었다.
  9. Wz file. Sample files..
  10. Cpatch 로 직접 시연
  11. 약 1.5배 이상 빨라지더라.
  12. Cross-datacenter 는 GlusterFS 뿐.
  13. 잠깐 아마존 언급. 아마존 클라우드는 마치 전 세계 단일한 하나의 빅 컴퓨터.
  14. 패치는 언제든 깨질 수 있다
  15. CB 소개. 간단한 키밸류. 리전 독립성. 글로벌은 서로 네트웍이 불안할 수 있다. 싱크 외에는 네트웍이 끊어져도 패치등 리전 안에서의 동작이 가능함을 보장. 노드의 개념을 도입.
  16. 노드가 주는 장점들 :
  17. 강백호 칭찬 그림 오승환 해설 그래잇 진짜?